Add CVE-2026-55407 (buffa) and GHSA-j77w-g4jj-hp99 (gh-aw) - #13
Merged
Conversation
Unbounded allocation in decode_unknown_field, amplified from the flagged flat sink (~2x) to ~22x by following the same function into its StartGroup arm, which bounds recursion depth but not field count. Two notes on the record: - GHSA-f9qc-qg88-7pq5 is a repository advisory that was never promoted to the global database, so github.com/advisories/<id> 404s and refs.ghsa points at the anthropics/buffa advisory page. The identifier column is unaffected: the record is keyed on the CVE, so it links to NVD, which carries it. - No talks, matching the other AI SAST findings. Credit follows the advisory, which names p80n-sec as sole finder. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Unescaped fmt.Fprintf writes sandbox.mcp.env values straight into an export statement in the generated .lock.yml, so a value carrying shell metacharacters lands in command position inside a run: block. The adjacent export ten lines earlier already calls shellEscapeArg, which is what makes this a miss rather than a design choice. Severity comes from the trust boundary: gh-aw imports workflow components from third-party repositories, so a malicious shared component executes in the CI environment of every repository that imports it. Another repository-level advisory with no CVE, so the record is keyed on the GHSA and refs.ghsa carries the github/gh-aw URL. This is the case advisory_url exists for: github.com/advisories/<id> 404s, and without the override the identifier column in both the README and the detail page would link to nothing. No writeup or talk was published for this one, so blog and talks are absent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two records. The gh-aw one was added to this PR rather than a parallel branch because both regenerate the same README table region, which would have conflicted.
CVE-2026-55407ENDOR-VUL-2026-2105< 0.8.0GHSA-j77w-g4jj-hp99ENDOR-VUL-2026-0906<= 0.77.5CVE-2026-55407 — memory amplification DoS in buffa
Unbounded allocation in
decode_unknown_field. Writeup added tolinks.yml. CWE-770, also tracked as CWE-400 and CWE-789. Fixed in 0.8.0 on 2026-06-25.The record covers both sinks: the flagged
LengthDelimitedarm, where a wire-supplied length becomes the allocation size and thebuf.remaining()guard bounds the read rather than the allocation (~2x), and theStartGrouparm one branch down, wherechecked_subbounds recursion depth but nothing bounds field count — 2 wire bytes per ~40-byteUnknownField, so ~22x. A 64 MiB payload drives ~1.4 GB of heap and OOM-kills a 256 MiB-capped server (exit 137).DecodeOptionsdoes not help: it caps input length, so it never sees a blow-up that starts small and expands during decode.GHSA-j77w-g4jj-hp99 — command injection in gh-aw compiled workflows
gh aw compilewritessandbox.mcp.envvalues into the generated.lock.ymlthrough an unescapedfmt.Fprintf(... "export %s=%s" ...), so a value carrying;,$(...), a backtick, or a newline lands in command position inside arun:block. The adjacent export ten lines earlier already callsshellEscapeArg, which is what makes this a miss rather than a design choice, and nothing validates the source side either.Severity comes from the trust boundary: gh-aw imports and packages workflow components from third-party repositories, so a malicious shared component executes with the job's
GITHUB_TOKENand secrets in the CI environment of every repository that imports it. Scope is Changed. Fixed in 0.86.0. No writeup or talk was published for this one, soblogandtalksare absent.Both are repository-level advisories
Neither
GHSA-f9qc-qg88-7pq5norGHSA-j77w-g4jj-hp99was promoted to the global GitHub Advisory Database —github.com/advisories/<id>returns 404 for both, and only theanthropics/buffaandgithub/gh-awadvisory pages resolve. They land differently:refs.ghsarecords the repo URL for reference.advisory_urlwas added for: without therefs.ghsaoverride the identifier would link to a 404 in both the README and the detail page. Verified that both now point atgithub.qkg1.top/github/gh-aw/security/advisories/….Credits and talks
Both credit Peyton Kennedy alone, which each advisory supports directly —
p80n-secis the solefinderon buffa and the solereporteron gh-aw. Neither carries a talk.Verification
28 records render, both pages build, both identifiers resolve, and the Rust, Go, and YAML snippets render as real code blocks.
🤖 Generated with Claude Code