melange's world-writable permissions expose SBOM files to potential image tamperingGHSA-5662-cv6m-63wh
MEDIUMFix: chainguard-dev/melange#1836GHSA-5662-cv6m-63wh is a medium-severity (CVSS 4.4) Incorrect Default Permissions vulnerability in chainguard.dev/melange. A fix is available for chainguard.dev/melange — see the affected versions and patch details below.
Exploitation Status
No confirmed exploitation observed yet
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for GHSA-5662-cv6m-63wh.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
chainguard.dev/melangeReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
It was discovered that the SBOM files generated by melange in apks had file system permissions mode 666:
$ apkrane ls https://packages.wolfi.dev/os/x86_64/APKINDEX.tar.gz -P hello-wolfi --full --latest | xargs wget -q -O - | tar tzv 2>/dev/null var/lib/db/sbom
drwxr-xr-x root/root 0 2025-06-23 14:17 var/lib/db/sbom
-rw-rw-rw- root/root 3383 2025-06-23 14:17 var/lib/db/sbom/hello-wolfi-2.12.2-r1.spdx.json
This issue was introduced in commit 1b272db ("Persist workspace filesystem throughout package builds (#1836)") (v0.23.0).
Impact
This potentially allows an unprivileged user to tamper with apk SBOMs on a running image, potentially confusing security scanners. An attacker could also perform a DoS under special circumstances.
Patches
This issue was addressed in melange in e29494b ("fix: tighten up permissions for written SBOM files and signature tarballs (#2086)") (v0.29.5).
Acknowledgements
Thanks to Cody Harris H2O.ai and Markus Boehme for independently reporting this issue.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | chainguard.dev/melange | ≥ 0.23.0&&< 0.29.5 | 0.29.5go get chainguard.dev/melange@v0.29.5 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for chainguard.dev/melange, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update chainguard.dev/melange to 0.29.5 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-5662-cv6m-63wh is resolved across your whole dependency graph.
Workarounds
Close the privilege gap rather than the entry point: audit which accounts, roles and service identities can reach the affected operation, drop the component to the least privilege it actually needs, and review file and directory permissions created by earlier installs — a default left in place is what makes this reachable.
Frequently Asked Questions
Is GHSA-5662-cv6m-63wh in your dependencies?
Find it across Go, including transitive dependencies.