T03 · Remote Payload Retrieval and Execution
Error
- Location
- README.md:29
- Finding
- Unverified Remote Installer Is Downloaded and Executed Directly## Vulnerability Details **File Location**: - `README.md:29` - `SKILL.md:78` - `SKILL.md:334` - `examples/01-init-and-first-secret.md:26` - `examples/03-multi-env-ci-cd.md:88` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```bash curl -sSfL https://tene.sh/install.sh | sh ``` The same installation pattern is also used in the documented GitHub Actions workflow: ```yaml env: TENE_MASTER_PASSWORD: ${{ secrets.TENE_MASTER_PASSWORD }} steps: - uses: actions/checkout@v4 - name: Install tene run: curl -sSfL https://tene.sh/install.sh | sh - name: Deploy with prod secrets run: tene run --env prod --no-keychain -- ./scripts/deploy.sh ``` ### Technical Analysis The installation command retrieves a mutable shell script from an external website and sends it directly to a shell interpreter. The payload is not inspected or stored for review before execution, and the instructions do not require any of the following controls: - A fixed installer or release version - A cryptographic checksum - A publisher signature - An immutable release URL - Independent verification against the source repository HTTPS protects the transport connection but does not establish that the current server-side script is the same payload that was reviewed when this Skill was published. Compromise of the website, hosting account, DNS configuration, TLS termination infrastructure, or release process could therefore turn the documented installation command into arbitrary code execution. The risk is particularly significant in the CI example. The installer executes in a job where `TENE_MASTER_PASSWORD` is configured as an environment variable. A malicious installer process can inherit job environment variables, inspect the checked-out repository, access available runner credentials, and modify files or later workflow behavior. Although the domain is descri ...[truncated 1726 chars]
- Remediation
- ## Remediation Suggestions 1. Remove every `curl ... | sh` installation instruction. 2. Pin installation to a specific, immutable Tene release rather than a mutable installer endpoint. 3. Download the release artifact to disk before executing or installing it. 4. Publish SHA-256 checksums through a separately protected release channel and verify the selected artifact before installation. 5. Prefer signed release artifacts and validate the publisher signature with a pinned public key. 6. Pin the operating-system and architecture-specific artifact explicitly in CI. 7. Run installation in a step that does not have access to `TENE_MASTER_PASSWORD` or other deployment credentials. Scope secrets only to the deployment step that requires them instead of defining them at job level. 8. Use a minimal-permission CI token and an isolated, ephemeral runner. 9. Verify the installed binary version and signature before permitting it to access the vault. 10. Apply the corrected installation guidance consistently in `README.md`, `SKILL.md`, and both affected examples.
