mirror of
https://github.com/trailofbits/skills.git
synced 2026-09-27 09:29:06 +00:00
devcontainer-setup: two unpinned curl | bash installs in the generated Dockerfile #330
Labels
No labels
blocked:CLA-unsigned
blocked ❌
bug 🐛
claude-code-assisted
component:CI/CD 🤖
component:documentation 📖
component:tests 🧪
dependencies
duplicate 👯
enhancement ✨
github_actions
good first issue
help wanted
invalid
no-version-bump
platform:linux 🐧
platform:macos 🍎
platform:windows 🪟
priority:high
priority:low
priority:medium
python
question ❓
security ⚠️
upstream 🔼
waiting-on-reporter 🕐
wontfix
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
skills/trailofbits-skills#330
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The Dockerfile template in
plugins/devcontainer-setup/skills/devcontainer-setup/resources/Dockerfilepins version and verifies integrity for most fetched tools (git-deltaviaGIT_DELTA_VERSION,fzfviaFZF_VERSION,zsh-in-dockerviaZSH_IN_DOCKER_VERSION— each pulling a specific tagged release), but two installs are unpinnedcurl | bashwith no version pin and no checksum verification:Every devcontainer generated from this template executes whatever the two remote scripts contain at build time, with no way to pin to a known-good version or verify the script hasn't changed since review. This is inconsistent with the rest of the file, which otherwise treats supply-chain pinning as the norm.
Suggested fix: pin both to a specific version/commit and verify a checksum before executing, following the pattern already used for
zsh-in-docker— e.g. download to a file, verify a published SHA256 (if the upstream project publishes one), then run.Separately,
resources/.zshrcships an alias:This isn't mentioned anywhere in
SKILL.mdorREADME.md. Not a security issue on its own (it's visible in the generated.zshrc, not hidden), but worth either documenting why it's there or dropping it, since it's easy to read as an implicitly endorsed workflow rather than a convenience shortcut.Found during an automated third-party-skill security review before adopting this plugin locally.