T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:9- Finding
Unpinned Remote Repository Retrieval and Dependency Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:9-14andSKILL.md:34-45
Vulnerability Type: Unpinned remote payload retrieval and unsafe supply-chain execution
Risk Level: HighVulnerable Code
SKILL.md:9-14:yaml install: - id: clone kind: clone repo: hasd52636-a11y/Auto_Building_new label: Clone AUTO-BUILDING source codeSKILL.md:34-45:bash git clone https://github.com/hasd52636-a11y/Auto_Building_new cd Auto_Building_newbash npm installbash npm run devThe same installation workflow is repeated in
README.md:20-25.Technical Analysis
The Skill retrieves a mutable GitHub repository without pinning it to a reviewed commit hash or cryptographically verified release. It then instructs the user or agent to run
npm installandnpm run devinside the retrieved repository.The executable source, package manifest, lockfile, and transitive dependencies of that external repository are not included in this Skill package and were therefore outside the audited boundary. Consequently, the code that eventually runs can change after this Skill has been reviewed.
In addition,
npm installmay execute lifecycle scripts such aspreinstall,install, andpostinstall. These scripts execute with the privileges of the invoking user. Runningnpm run devsubsequently executes application-defined commands from the remotely retrieved package.This behavior creates both a remote-payload and dependency supply-chain boundary. It exceeds the minimum privileges required for a documentation or configuration Skill because it causes unreviewed external code to be downloaded and executed locally.
Attack Path
- An attacker compromises the referenced GitHub account or repository, gains permission to modify its default branch, or compromises one of its npm dependencies.
- The attacker adds malicious application code, changes an npm script ...[truncated 1429 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the repository installation to a specific, reviewed full commit SHA rather than the mutable default branch.
- Prefer packaging the reviewed source directly with the Skill so that the distributed and audited payloads are identical.
- If remote retrieval is unavoidable, publish signed immutable releases and verify the downloaded artifact using a trusted signature or checksum.
- Include and review a dependency lockfile, then use
npm cirather thannpm installto enforce the locked dependency graph. - Use
npm ci --ignore-scriptsduring initial installation where lifecycle scripts are not strictly required. - If lifecycle scripts are required, document each required script and review its exact implementation before permitting execution.
- Run the retrieved application in a restricted container or sandbox with minimal filesystem access, no unnecessary credentials, limited network access, and a non-privileged user.
- Separate source retrieval, integrity verification, dependency installation, and execution into explicit approval steps.
- Add automated checks that reject unexpected repository revisions, dependency changes, install scripts, and unsigned release artifacts.
