T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:26- Finding
Mutable Remote Installer Is Downloaded and Executed Directly
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 26-32
Vulnerability Type: Remote payload retrieval and immediate shell execution
Risk Level: HighVulnerable Code
bash curl -fsSL "https://raw.githubusercontent.com/linsheng9731/clawsync/main/scripts/install.sh" | CLAWSYNC_GH_REPO="linsheng9731/clawsync" bashInstall a specific version:
bash curl -fsSL "https://raw.githubusercontent.com/linsheng9731/clawsync/main/scripts/install.sh" | CLAWSYNC_GH_REPO="linsheng9731/clawsync" bash -s -- v0.1.8Technical Analysis
Both documented installation methods retrieve
scripts/install.shfrom the mutablemainbranch of a personal GitHub repository and pipe the response directly into Bash. The downloaded script is not present in the audited project, so its behavior, integrity validation, release provenance, and actual installation scope cannot be reviewed.The command labeled as installing a specific version does not pin the installer itself. Although
v0.1.8is passed as an argument, the script interpreting that argument is still downloaded frommainand can change after this skill has been reviewed.Direct
curl | bashexecution eliminates the opportunity to validate a checksum, verify a cryptographic signature, inspect the downloaded content, or confirm that the response is the expected installer before execution. This creates a time-of-review versus time-of-use supply-chain risk.The declared functionality does not require executing mutable upstream code. A version-pinned and integrity-verified installer or packaged executable would provide the same installation functionality with substantially less risk.
Attack Path
- An attacker compromises the upstream GitHub account, repository, maintainer credentials, or publishing workflow, or a malicious maintainer modifies
scripts/install.sh. - The attacker adds arbitrary shell commands to the installer on the
mainbranch.
...[truncated 1390 chars]
- An attacker compromises the upstream GitHub account, repository, maintainer credentials, or publishing workflow, or a malicious maintainer modifies
- Remediation
View remediation
Remediation Suggestions
-
Do not pipe network responses directly into a shell. Download the installer to a local file before execution.
-
Pin the installer itself to an immutable release tag or full Git commit hash rather than the mutable
mainbranch. -
Publish a SHA-256 or stronger digest through an independently protected release process and verify it before execution.
-
Prefer cryptographic release signatures, such as Sigstore or GPG signatures, and document signature verification.
-
Package the reviewed installer or executable with the skill where feasible so that the installed code is part of the audited artifact.
-
Ensure that selecting a version pins every executed component, including the installer, rather than only passing a version argument to mutable code.
-
Use a fail-closed installation sequence, for example:
bash curl -fL -o /tmp/clawsync-install.sh \ "https://raw.githubusercontent.com/linsheng9731/clawsync/<immutable-commit>/scripts/install.sh" printf '%s %s\n' '<trusted-sha256>' '/tmp/clawsync-install.sh' | sha256sum -c - bash /tmp/clawsync-install.sh v0.1.8 rm -f /tmp/clawsync-install.sh -
Document all files, scheduled tasks, network listeners, and configuration changes created by installation.
-
Make scheduling optional and request
crontabaccess only when the user explicitly enables periodic backups. Display and confirm the exact cron entry before installing it. -
Run installation with ordinary user privileges and explicitly warn users not to invoke the installer with
sudo.
-
