T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:158- Finding
Unpinned Remote Script Piped Directly into Bash
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent installer guide, but it asks users or agents to run risky system-level install commands without enough verification or guardrails.
Review this skill before installing. Prefer user-local installs where possible, verify release artifacts and Go downloads with publisher-provided checksums or signatures, avoid the optional curl-to-bash Ignite command unless you inspect it first, and do not let an agent run the sudo rm -rf /usr/local/go steps without explicit approval and a backup or rollback plan.
SKILL.md:158Unpinned Remote Script Piped Directly into Bash
SKILL.md:31Release Binary Installed Without Cryptographic Integrity Verification
The command sudo rm -rf /usr/local/go is a destructive recursive deletion against a system directory and can break existing Go-dependent workflows or remove the wrong content if copied or adapted incorrectly. In an agent skill, such commands are more dangerous because they may be executed with reduced human scrutiny.
GO_VER=1.23.6
wget https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.linux-amd64.tar.gz
rm go${GO_VER}.linux-amd64.tar.gz
The command sudo rm -rf /usr/local/go is a destructive recursive deletion against a system directory and can break existing Go-dependent workflows or remove the wrong content if copied or adapted incorrectly. In an agent skill, such commands are more dangerous because they may be executed with reduced human scrutiny.
GO_VER=1.23.6
wget https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.linux-amd64.tar.gz
rm go${GO_VER}.linux-amd64.tar.gz
This is the same destructive recursive deletion pattern on macOS Apple Silicon. Although scoped to /usr/local/go, it still enables potentially harmful system modification and service disruption if executed automatically or without careful review.
GO_VER=1.23.6
curl -OL https://go.dev/dl/go${GO_VER}.darwin-arm64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.darwin-arm64.tar.gz
rm go${GO_VER}.darwin-arm64.tar.gz
This is the same destructive recursive deletion pattern on macOS Apple Silicon. Although scoped to /usr/local/go, it still enables potentially harmful system modification and service disruption if executed automatically or without careful review.
GO_VER=1.23.6
curl -OL https://go.dev/dl/go${GO_VER}.darwin-arm64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.darwin-arm64.tar.gz
rm go${GO_VER}.darwin-arm64.tar.gz
This Intel macOS variant also deletes /usr/local/go recursively before replacement. The skill context makes it somewhat less suspicious than overtly malicious payloads, but still dangerous because it normalizes destructive root-level changes in installation automation.
GO_VER=1.23.6
curl -OL https://go.dev/dl/go${GO_VER}.darwin-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.darwin-amd64.tar.gz
rm go${GO_VER}.darwin-amd64.tar.gz
This Intel macOS variant also deletes /usr/local/go recursively before replacement. The skill context makes it somewhat less suspicious than overtly malicious payloads, but still dangerous because it normalizes destructive root-level changes in installation automation.
GO_VER=1.23.6
curl -OL https://go.dev/dl/go${GO_VER}.darwin-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.darwin-amd64.tar.gz
rm go${GO_VER}.darwin-amd64.tar.gz
The skill presents a curl-piped-to-bash installer for Ignite without any integrity verification, pinning, or warning that it executes remote code directly in the shell. This is especially dangerous in an agent skill because it normalizes immediate execution of network-fetched content with full user privileges.
The command curl https://get.ignite.com/cli! | bash chains network retrieval directly into shell execution, creating a classic remote-code-execution supply-chain risk. In a skill designed for agents, this is particularly dangerous because it encourages immediate execution of unreviewed remote content with whatever privileges the session has.
# One-time
curl https://get.ignite.com/cli! | bash
ignite version
# In the structsd repo:
The instruction uses sudo to install a downloaded binary into /usr/local/bin, which requires elevated privileges and modifies a system-wide executable path. While common for manual installation, this is risky in an agent skill because the binary comes from the network and the step lacks checksum or signature verification guidance.
"https://github.com/playstructs/structsd/releases/download/${VERSION}/structsd_$(echo ${VERSION#v})_darwin_arm64.tar.gz"
tar -xzf structsd.tar.gz sudo install -m 0755 structsd /usr/local/bin/structsd rm structsd.tar.gz structsd
This line uses sudo rm -rf on /usr/local/go, granting root privileges to a destructive filesystem operation. Even though the target is specific, privileged recursive deletion in a skill is hazardous because path mistakes or automation bugs can cause service disruption or broader system damage.
GO_VER=1.23.6
wget https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.linux-amd64.tar.gz
rm go${GO_VER}.linux-amd64.tar.gz
The skill instructs users to remove and replace a system-wide Go installation under /usr/local using privileged commands, but it does not clearly warn that these steps are destructive and may overwrite an existing working toolchain. In an agent-executed context, omission of an explicit confirmation or backup step increases the chance of unintended system modification and disruption.
The skill instructs sudo tar extraction into /usr/local, a privileged system location, which modifies the host environment with root permissions. In isolation this is standard admin behavior, but in a skill context it increases the blast radius of any compromised or incorrect archive.
GO_VER=1.23.6 wget https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go${GO_VER}.linux-amd64.tar.gz rm go${GO_VER}.linux-amd64.tar.gz
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
rm go${GO_VER}.linux-amd64.tar.gz
If an older Go was installed via apt, remove it first: `sudo apt remove -y golang-go`
#### macOS (Apple Silicon)
This line again uses sudo rm -rf on /usr/local/go, here for macOS Apple Silicon, with the same privileged destructive behavior. In an agent skill, repeated use of root-level recursive deletion without guardrails materially increases operational risk.
GO_VER=1.23.6
curl -OL https://go.dev/dl/go${GO_VER}.darwin-arm64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.darwin-arm64.tar.gz
rm go${GO_VER}.darwin-arm64.tar.gz
The command extracts a downloaded archive into /usr/local using sudo, making a network-sourced package installation a privileged system change. If the archive is tampered with or the URL is wrong, the result is root-level compromise or system instability.
GO_VER=1.23.6 curl -OL https://go.dev/dl/go${GO_VER}.darwin-arm64.tar.gz sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go${GO_VER}.darwin-arm64.tar.gz rm go${GO_VER}.darwin-arm64.tar.gz
This is the Intel macOS variant of the same privileged recursive deletion of /usr/local/go. The operation is potentially disruptive and dangerous in an automated or semi-automated agent environment because it removes an existing system component with root access.
GO_VER=1.23.6
curl -OL https://go.dev/dl/go${GO_VER}.darwin-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.darwin-amd64.tar.gz
rm go${GO_VER}.darwin-amd64.tar.gz
This root-level tar extraction into /usr/local performs a system-wide install of a downloaded archive. The context is ordinary software setup, but absent integrity verification and approval gates it remains a meaningful security risk.
GO_VER=1.23.6 curl -OL https://go.dev/dl/go${GO_VER}.darwin-amd64.tar.gz sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go${GO_VER}.darwin-amd64.tar.gz rm go${GO_VER}.darwin-amd64.tar.gz
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
- **`ERROR: Go version 1.23+ is required`** from `make install` — Your Go is too old. Re-install per step 1 above; the Makefile's `check_version` target enforces this hard.
- **Build fails on `go mod tidy`** — Network access is required for the first build. Retry once you have connectivity, or set `GOPROXY=direct` if you are behind a restrictive proxy.
- **Permission denied on `/usr/local`** — Use `sudo` for the tar extraction or for `install -m 0755`. On shared systems, ask your administrator. Path B does not require root because it installs to `~/go/bin`.
- **`gcc not installed for ledger support`** — Either install `gcc` (`sudo apt install build-essential` / `xcode-select --install`) or build with `LEDGER_ENABLED=false make install`.
## See Also
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
VERSION=v0.19.1
# Linux amd64
curl -L -o structsd.tar.gz \
"https://github.com/playstructs/structsd/releases/download/${VERSION}/structsd_$(echo ${VERSION#v})_linux_amd64.tar.gz"
# macOS Apple Silicon
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
GO_VER=1.23.6
wget https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go${GO_VER}.linux-amd64.tar.gz
rm go${GO_VER}.linux-amd64.tar.gz