This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

Scanner reports a multi-member gzip as fully decoded while later members' header fields go unscanned

issueresolvedminoriss-2610280103493414

Scanner reports a multi-member gzip as fully decoded while later members' header fields go unscanned

Published as security advisory GHSA-w9wc-4mp5-v3jm; the advisory is the public account of this finding.

What

The scanner's gzip decoder (internal/adapter/scanner/container.go:316-334) checks the FEXTRA, FNAME and FCOMMENT header fields of the first member only, before reading the stream. Go's gzip reader is multistream by default, so decodeStream reads every concatenated member, parses and discards the headers of the second and later members, and returns the file as fully decoded.

A compressed token placed in the FEXTRA field of member 2 or later is never matched against the rule set, and the file is still listed as "decoded (entries scanned)", including when the gzip is nested inside a zip, tar or tgz. The same payload in member 1's FEXTRA is correctly listed as "compressed (not content-verified)" with its reason.

The impact is limited to the coverage label. Under the standing ruling (iss-2608291832160371), files that are not content-verified do not refuse a release on their own, so the token ships in both cases. The defect removes the file from the not-verified list the person is asked to review, and drops its reason from content_unverified_why.

Reproduced through ScanBundle with two concatenated members whose second header's Extra holds a zlib-compressed token: zero hard fails, file in the decoded set.

Affected versions

Every released version up to and including 0.15.1. Patched versions will be set when the release carrying the fix is cut.

Would it exist without abcd?

No. The coverage claim in the release scan's report is abcd's own, the same class as GHSA-83x2-mf5v-j796 and GHSA-jx54-228j-mf98. abcd added it, so abcd fixes it.

Fix

Read gzip one member at a time (Multistream(false) and Reset), applying the structural-field check to every member's header, or list any gzip with more than one member as not content-verified. Detector change only; no repository behaviour changes.

Frontmatter

idiss-2610280103493414
typeissue
lifecycleresolved
severityminor

mentions1