Skip to content

LiteralReader::read() resized vector based on unchecked network input which led to a safe crash

Low
larseggert published GHSA-mj42-367w-cf98 Dec 16, 2025

Package

cargo neqo-qpack (Rust)

Affected versions

<=0.20.0

Patched versions

None

Description

Impact

There is a remotely exploitable vulnerability in our QPACK decoder that lets a remote attacker crash the implementation by making it allocate arbitrarily large amounts of memory.

  1. LiteralReader::read() at line 304 in neqo-qpack/src/reader.rs reads a varint length and calls resize() with that length
  2. There's no upper bound check on the length, allowing malicious input to specify an absurdly large value
  3. When Vec::resize() tries to allocate, it panics with "capacity overflow"

Patches

Patch in the secure fork below.

Workarounds

None

References

https://bugzilla.mozilla.org/show_bug.cgi?id=2003616
https://oss-fuzz.com/testcase-detail/4695808126812160
https://issues.oss-fuzz.com/issues/464682065

Severity

Low

CVE ID

No known CVE

Weaknesses

No CWEs