T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:63- Finding
Unverified Remote Installer Executed Directly by a Shell
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 63–65
Vulnerability Type: Remote payload retrieval and execution
Risk Level: HighVulnerable Code
markdown - **Install**: `curl -fsSL https://asale.ai/dl/install.sh | sh` (Windows: `irm https://asale.ai/dl/install.ps1 | iex`). `asale update` re-runs the same installer.The same commands also appear in the metadata at
SKILL.md:5:yaml metadata: {"clawdbot":{"emoji":"📥","requires":{"bins":["curl"]},"install":"curl -fsSL https://asale.ai/dl/install.sh | sh","installAlternative":"irm https://asale.ai/dl/install.ps1 | iex","homepage":"https://asale.ai","source":"https://github.com/asale-ai/asale","author":"asale","license":"see-repo","configLocation":"~/.asale/daemon.token","apiEndpoints":["127.0.0.1:9700"]},"openclaw":{"systemPrompt":"Drive the asale daemon at 127.0.0.1:9700 with the token from ~/.asale/daemon.token. Always run buy_tools before set_buy_tool for tool hermes. tool_processes is listing only — never signal those pids."}}Technical Analysis
The installation instructions download a response from an external URL and immediately pass it to
sh. The Windows alternative usesInvoke-RestMethodand sends its response toInvoke-Expression, producing the same direct execution behavior.Neither command pins an immutable release, saves the installer for inspection, nor validates a checksum or cryptographic signature. The effective code can consequently change after the Skill package has been reviewed. The documented
asale updateoperation re-executes the same mutable installer and therefore repeats the exposure.The installer is hosted on the declared project domain, and the document references a public source repository. However, the audited package contains only documentation and does not include the installer, its expected digest, or a signature that would establish that the downloaded response corresponds to reviewe ...[truncated 1729 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace direct
curl | shandInvoke-Expressioninstallation with downloads of immutable, versioned release artifacts. - Publish expected SHA-256 digests through an independently protected release channel and verify them before execution.
- Cryptographically sign release artifacts and installer scripts, then validate the signature against a pinned project signing key.
- Download the installer to a local file first so its source, digest, and contents can be inspected before execution.
- Pin the Skill to a specific installer or release version rather than a mutable latest-version URL.
- Require explicit user confirmation before executing installation or update code.
- Publish the installer source in the declared repository and document how release artifacts can be reproducibly matched to reviewed source.
- Ensure installation runs as an unprivileged user unless a specific operation demonstrably requires elevation. Separate any privileged step and request approval only for that narrowly scoped action.
- Make updates use the same version pinning, signature verification, and user-approval controls instead of rerunning a mutable remote script.
- Replace direct
