T08 · Insecure Dependencies
- Location
scripts/setup.sh:12- Finding
Unpinned and Unverified Remote Archive Replaces Reviewed Skill Assets
- Content
View full analysis
&1; then tar -xzf "$TMPFILE" -C "$GALAXY_DIR" --strip-components=1 ``` ### Technical Analysis The optional setup script downloads an archive from the mutable `main` branch of an external GitHub repository. It does not pin the dependency to a reviewed commit and does not verify a cryptographic checksum or signature. Consequently, the archive contents can change after the Skill has been reviewed. The script also extracts the archive directly into the trusted `assets/galaxy` directory without validating archive member paths, symlinks, expected file types, or active HTML content. Before the download and validation complete, it recursively deletes the reviewed, bundled asset directory. A failed download or extraction can therefore leave the Skill without its original curated library. The source URL is consistent with the Skill's declared Uiverse Galaxy dependency, and the downloaded archive is not directly executed by this script. Therefore, the behavior is best classified as an insecure supply-chain dependency rather than confirmed remote code execution. Nevertheless, the Skill instructs users to copy downloaded HTML components into applications, so malicious or compromised upstream content could cross a trust boundary and become active in downstream projects. ### Attack Path 1. An attacker compromises th ...[truncated 1795 chars]- Remediation
View remediation
" REPO_URL="https://github.com/uiverse-io/galaxy/archive/${PINNED_COMMIT}.tar.gz" EXPECTED_SHA256="" TMPFILE="$(mktemp)" STAGING_DIR="$(mktemp -d)" trap 'rm -f "$TMPFILE"; rm -rf "$STAGING_DIR"' EXIT curl --fail --show-error --silent --location \ --connect-timeout 30 --max ...[truncated 319 chars]
