T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:19- Finding
Unverified Remote Installation Script Is Piped Directly into a Shell
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:19-39; related unsafe recommendation atscripts/understand_image.py:101-104
Vulnerability Type: Unverified remote payload retrieval and execution
Risk Level: HighVulnerable Code
bash # SKILL.md:24 curl -LsSf https://astral.sh/uv/install.sh | shbash # SKILL.md:31-32 export UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple" curl -LsSf https://astral.sh/uv/install.sh | shbash # SKILL.md:37-38 export UV_INDEX_URL="https://mirrors.aliyun.com/pypi/simple/" curl -LsSf https://astral.sh/uv/install.sh | shThe Python script also recommends the same command when
uvxis unavailable:python except FileNotFoundError: print("Error: uvx not found. Please install it first: curl -LsSf https://astral.sh/uv/install.sh | sh", file=sys.stderr) sys.exit(1)Technical Analysis
The installation instructions download mutable content from an external URL and pass it directly to
sh. There is no intermediate inspection, version pinning, signature validation, or checksum verification.HTTPS protects transport integrity under normal conditions, but it does not ensure that the content currently hosted at the URL is identical to the content reviewed during this audit. If the hosting account, domain, CDN, TLS trust chain, or installation script is compromised, arbitrary replacement commands will execute immediately.
Installing
uvis relevant to the declared image-analysis workflow because the Skill usesuvx. However, executing an unverified, remotely mutable script is not the minimum-risk method of satisfying that dependency. The Python file does not execute the command automatically, but it reinforces the vulnerable workflow by presenting the command directly to users.Attack Path
- An attacker compromises the installation endpoint, its delivery infrastructure, or another trusted component in the ...[truncated 1112 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove all
curl ... | shinstructions, including the recommendation in the Python error handler. - Prefer a trusted operating-system package manager or another installation mechanism that supports signed, versioned packages.
- If an installation script is unavoidable:
- Download it to a local file without executing it.
- Use a version-specific URL.
- Verify a publisher-provided cryptographic signature or pinned SHA-256 digest.
- Present the file for inspection before execution.
- Execute it as an unprivileged user.
- Document the expected installer version and trusted signing identity.
- Replace the Python error message with a link to verified installation documentation rather than an immediately executable shell pipeline.
- Avoid recommending elevated execution such as
sudounless a specific operation demonstrably requires it.
- Remove all
