DevGuard has improper authorization on public assetsGHSA-6p54-fw2f-q7gf
Fix: l3montree-dev/devguard@1be88ecGHSA-6p54-fw2f-q7gf is a CWE-285 vulnerability in github.com/l3montree-dev/devguard. A fix is available for github.com/l3montree-dev/devguard — 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-6p54-fw2f-q7gf.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
Real-World Exposure
github.com/l3montree-dev/devguardReal-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
Impact
On a DevGuard API instance with one or more public assets, any authenticated user — including users from a different organization with no membership or role in the affected org/project — can create, update, reapply, and delete VEX rules on those public assets. The same flaw affects the other vulnerability-triage write endpoints exposed under a public asset, including:
- VEX rule create / update / reapply / delete
- Dependency-vuln event creation (accept / reject / mitigate decisions), batch event creation, vuln sync, and mitigation
- License risk creation
- External reference writes
- Artifact creation and license refresh
The attacker needs a valid account on the instance, but no membership in the victim organization, project, or asset is required.
Security impact is primarily to integrity of the vulnerability picture of public assets: an attacker can mark CVEs as false-positive, silence vulnerabilities, attach misleading justifications, or delete legitimate triage rules — undermining the trustworthiness of every consumer of the affected asset's VEX/SBOM output. Because public assets are by definition consumed by third parties (downstream users, supply-chain consumers, the published vex.json/sbom.json), the blast radius extends to anyone relying on that data.
Private assets are not affected by this advisory: the public-read exemption that enables the bypass does not apply to them, and access remains correctly gated by organization/project membership. The private setting is only relevant in DevGuard itself — there is no impact given when you have an open-source project on e.g. GitLab/GitHub and a private DevGuard asset connected.
Patches
Version v1.4.2contains a patch. Users should upgrade to the patched release as soon as it is available.
Workarounds
If developers cannot upgrade their applications immediately:
- ** They should make affected assets non-public.** In the asset settings, switch visibility from public to private. This removes the public-read exemption in the access-control middleware and restores correct authorization on all write endpoints for that asset. Downstream consumers that previously relied on the public
vex.json/sbom.jsonendpoints will need to be granted explicit access or must receive an exported file version until the patched release is deployed.
Resources
Fixed commit: https://github.com/l3montree-dev/devguard/commit/1be88ec1309a5dc0566e35a23bdc4ea3ecd11417
Credit
DeevGuard thanks @philipflohr (awesome-it.de) for finding and responsibly reporting this vulnerability!
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/l3montree-dev/devguard | all versions | 1.4.2go get github.com/l3montree-dev/devguard@v1.4.2 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/l3montree-dev/devguard, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/l3montree-dev/devguard to 1.4.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-6p54-fw2f-q7gf is resolved across your whole dependency graph.
Workarounds
Put an independent control in front of the weakness: restrict the affected endpoint or interface to trusted networks, require an additional authentication factor or proxy-level check, and invalidate existing sessions and credentials in case the flaw has already been used.
Frequently Asked Questions
Is GHSA-6p54-fw2f-q7gf in your dependencies?
Find it across Go, including transitive dependencies.