T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:66
- Finding
- Unpinned Remote Dependencies and Mutable Source Build<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:24`, `SKILL.md:66-70`, `README.md:17`, `references/known-issues.md:51-54` **Vulnerability Type**: Unverified third-party dependencies and mutable remote code execution **Risk Level**: High ### Vulnerable Code ```bash # SKILL.md:24 pip install web3 ``` ```bash # SKILL.md:66-70 git clone https://github.com/axon-chain/axon /opt/axon cd /opt/axon # Build daemon go build -o tools/agent-daemon/agent-daemon ./tools/agent-daemon/ ``` ### Technical Analysis The installation instructions retrieve the latest available `web3` package and clone the current state of a remote Git repository. No exact package version, Git commit, release signature, checksum, or reproducible dependency lockfile is specified. The cloned code is compiled into a daemon that is subsequently given the path to the user's EVM private-key file. Consequently, the security of the wallet depends on the mutable state of both the Python package registry and the upstream Git repository at installation time. This behavior is related to the Skill's declared functionality, but it creates a supply-chain boundary that extends beyond the reviewed project. The effective daemon payload can change after this audit without any modification to the Skill package. ### Attack Path 1. An attacker compromises the upstream repository, a maintainer account, a dependency, or the package publishing process. 2. Malicious code is added to the repository's default branch or to an unpinned `web3` release. 3. A user follows the documented installation instructions. 4. The altered code is downloaded and installed or compiled locally. 5. The daemon is started with access to `/opt/axon/private_key.txt`. 6. The malicious component reads the private key, signs unauthorized transactions, transmits the key, or executes commands with the installing user's privileges. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the accoun ...[truncated 270 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `web3` and all transitive Python dependencies to audited versions in a lockfile. 2. Require hash verification, such as `pip install --require-hashes -r requirements.txt`. 3. Pin the Axon repository to a specific audited commit or signed release tag rather than its default branch. 4. Verify Git signatures or published release checksums before compilation. 5. Record the expected commit and binary hash in the Skill documentation. 6. Build and run the daemon under a dedicated, unprivileged service account. 7. Restrict private-key access to only the component that must sign heartbeat transactions. 8. Consider hardware-backed signing or an isolated signer instead of exposing a raw private-key file to the complete daemon process. ]]>
