T03 · Remote Payload Retrieval and Execution
- Location
scripts/dws_helper.sh:56- Finding
Unverified Mutable Remote Installers Are Executed Directly
- Content
View full analysis
Vulnerability Details
File Locations:
SKILL.md:33SKILL.md:39README.md:31scripts/dws_helper.sh:56
Vulnerability Type: Remote payload retrieval and immediate execution
Risk Level: HighComplete Code Snippets:
SKILL.md:33andREADME.md:31:bash curl -fsSL https://raw.githubusercontent.com/DingTalk-Real-AI/dingtalk-workspace-cli/main/scripts/install.sh | shSKILL.md:39:powershell irm https://raw.githubusercontent.com/DingTalk-Real-AI/dingtalk-workspace-cli/main/scripts/install.ps1 | iexscripts/dws_helper.sh:55-59:bash info "Using sh script installation..." if curl -fsSL https://raw.githubusercontent.com/DingTalk-Real-AI/dingtalk-workspace-cli/main/scripts/install.sh | sh; then info "sh script installation succeeded" return 0Technical Analysis
These installation methods retrieve scripts from the mutable
mainbranch of an external GitHub repository and pass their contents directly to a command interpreter. The downloaded content is not pinned to a reviewed commit or release and is not checked against a cryptographic digest or publisher signature.The effective code executed by the Skill can therefore change after this project has been reviewed. The external installer is not included in the audited artifact, so its current or future actions cannot be established from the local source. HTTPS protects transport integrity but does not protect against compromise of the upstream repository, maintainer account, or release process.
Direct execution is not required for the declared functionality of retrieving DingTalk meeting records. A separately downloaded and verified installer or a pinned package can provide the same functionality without giving a mutable upstream branch immediate code-execution authority.
Attack Path
- An attacker compromises the upstream repository, a maintainer account, or another mechanism capabl ...[truncated 1204 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove all direct
curl | shandirm | iexinstallation instructions and execution paths. - Pin the installer to a reviewed release or immutable commit rather than the mutable
mainbranch. - Download the installer to a local file without executing it:
bash curl -fL -o install.sh "PINNED_RELEASE_URL" - Verify the file using a trusted publisher signature or a SHA-256 digest distributed through an independent trusted channel:
bash echo "EXPECTED_SHA256 install.sh" | sha256sum -c - - Inspect the downloaded script and execute it only after verification:
bash sh install.sh - Apply equivalent download, signature verification, and separate execution controls on Windows instead of using
Invoke-Expression. - Run installation as an unprivileged account and document any filesystem permissions the installer actually requires.
- Prefer a pinned, provenance-verified package installation over a remotely hosted installation script.
- Remove all direct
