T03 · Remote Payload Retrieval and Execution
- Location
README.md:69- Finding
Mutable Third-Party Skill Retrieval and Unpinned Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
README.md:69-75
Vulnerability Type: Mutable remote payload retrieval and insecure dependency installation
Risk Level: CriticalVulnerable Code
bash # 2. Install sibling skill a-stock-data mkdir -p ~/.claude/skills/a-stock-data curl -o ~/.claude/skills/a-stock-data/SKILL.md \ https://raw.githubusercontent.com/simonlin1212/a-stock-data/main/SKILL.md # 3. Install a-stock-data dependencies pip install mootdx requests pandas stockstatsEquivalent unattended installation instructions also appear in
README.md:101-111. The downloaded Skill is subsequently loaded and its embedded Python is executed by the Agent, as documented inSKILL.md:33-39,SKILL.md:62-69, andSKILL.md:90.Technical Analysis
The installation procedure downloads
SKILL.mdfrom the mutablemainbranch of an independently maintained GitHub repository and writes it directly into an active Agent Skill directory. The URL is not bound to an immutable commit, release artifact, checksum, or cryptographic signature.Because the downloaded Skill supplies runtime instructions and embedded Python for the Agent, its effective behavior can change after this repository has been reviewed. A compromise of the upstream repository or account could therefore introduce new Agent instructions or executable code without requiring any change to this project.
The installation also invokes
pip installfor four packages without exact versions, hashes, or a lockfile. Dependency resolution consequently depends on mutable package-index state at installation time. This expands the supply-chain trust boundary beyond what is necessary for the bundled K-line, indicator, and batch functionality, which the project itself states uses only the Python standard library.Attack Path
- An attacker compromises the referenced third-party repository, its maintainer account, or a relevant package release process.
- The attacker modifies the
main...[truncated 1176 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace the mutable
mainURL with an immutable, reviewed commit URL. - Publish and verify a SHA-256 digest or cryptographic signature before activating the downloaded Skill.
- Download third-party Skill content into a quarantine or staging location and require explicit review before copying it into an active Agent Skill directory.
- Prefer vendoring the audited third-party functionality into a versioned release when licensing permits.
- Pin every Python dependency to an exact version in a lockfile.
- Require package hashes, such as through
pip install --require-hashes -r requirements.lock. - Use an isolated virtual environment with only the permissions required for market-data retrieval.
- Remove or replace the unattended one-line installer, which combines download, installation, and execution without a review boundary.
- Document the third-party domains contacted and the minimum filesystem and network permissions required.
- Re-audit the pinned third-party Skill and dependencies whenever their pinned versions are updated.
- Replace the mutable
