Back to skill

Security audit

reportgama

Security checks for vulnerabilities and agentic risk

Overview

This skill is a public market-research/reporting workflow with disclosed web collection and PDF generation, but users should review the unpinned Python dependency install before use.

Install in a virtual environment or container because the package installs unpinned Python dependencies. Before running a large report, confirm the target country, output language, modules, and whether PDF generation is needed, especially when your request only generally asks for a market research report.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:15
Finding

Unpinned PyPI Dependencies Installed at Runtime

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 15-21
Vulnerability Type: Unpinned third-party dependencies installed from a mutable package repository
Risk Level: Medium

yaml
requires:
  bins: ["python3", "pip3"]
install:
  - id: python-deps
    kind: exec
    command: "pip3 install requests beautifulsoup4 lxml fake-useragent python-dateutil matplotlib reportlab pillow"
    label: "Install Python dependencies"

Technical Analysis

The installation command retrieves nine packages from the package index without specifying exact versions or validating artifact hashes. Consequently, the installed dependency set can change between executions despite the skill package itself remaining unchanged.

A compromised upstream release, maintainer account, package distribution channel, or transitive dependency could introduce malicious installation or runtime behavior. Python packages may execute build-backend or setup logic during installation, so compromise can affect the environment as soon as this command runs rather than only when a package is later imported.

No dependency lock file, hash-locked requirements file, isolated environment requirement, or trusted package-index configuration is present in the audited project. The reviewed files do not contain evidence that any currently named package is malicious; the finding concerns unsafe and non-reproducible supply-chain handling.

Attack Path

  1. An attacker compromises a listed PyPI package, one of its transitive dependencies, or the associated publishing credentials.
  2. The attacker publishes a malicious version that remains compatible with the unrestricted package requirement.
  3. The skill installation process executes the documented pip3 install command.
  4. Pip resolves and downloads the attacker-controlled release because no approved version or artifact hash is enforced.
  5. Malicious package installation hooks or subsequently importe ...[truncated 771 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace the inline package list with a reviewed lock file containing exact versions.
  2. Generate and enforce cryptographic hashes for every direct and transitive artifact, for example:
    bash
    python3 -m pip install --require-hashes -r requirements.lock
    
  3. Build the lock file through a controlled dependency-management process such as pip-compile --generate-hashes, and review updates individually.
  4. Install dependencies only inside a dedicated virtual environment or container under a non-privileged account.
  5. Use python3 -m pip tied to the intended interpreter instead of relying on a potentially ambiguous pip3 executable.
  6. Configure an approved package index or internal artifact mirror and prohibit fallback to untrusted repositories.
  7. Add automated dependency vulnerability and provenance scanning to release checks.
  8. Where practical, use prebuilt, verified wheels and disable source builds for environments that do not require them.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are very broad, including generic requests like '深度市场调研报告' and '[国家]+[品类] 市场调研报告', which can cause the skill to activate for ordinary user requests that do not explicitly intend to invoke this specific capability. In an agent environment, overbroad activation increases the chance of unintended tool execution, unnecessary web collection, and surprising behavior outside the user's informed intent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The workflow states that for Russian-market requests the agent extracts '语言=俄语' automatically, effectively defaulting the analysis language without explicit user approval. This can override user expectations, cause unintended transmission of translated or localized queries to external sources, and reduce user control over how their task is performed.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file explicitly states the report language as '原语种(ru)+ 中文摘要', which enforces Russian plus Chinese output as a default language/locale choice. Under the policy rules, fixed language constraints should either offer user choice or be clearly documented as a justified region-specific requirement; here it is presented as a mandatory output format without user opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This markdown file contains natural-language instructions that direct the user to choose "Russia" and use the Russian customs site, while the document does not explicitly state that the workflow is Russia-specific or optional. Under the policy rule, forcing a specific locale without clear opt-in or justification can be a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The title and introductory description are written entirely in Chinese, while the file is intended for multilingual keyword use. Under the policy rule, language constraints should either offer user opt-in or be clearly documented as region- or audience-specific; this file does neither.

Content

No source excerpt is available for this finding.