RustSec logo

History ⋅ Edit ⋅ JSON (OSV)

RUSTSEC-2026-0491

Memory amplification from record counts in the DNS message header

Reported
Issued
Package
hickory-proto (crates.io)
Type
Vulnerability
Categories
Keywords
#dns #memory #allocation
Aliases
References
Patched
  • >=0.26.2
Unaffected
  • <0.18.0

Description

When a DNS message is decoded, the vectors for the question, answer, authority and additional sections were created with Vec::with_capacity set to the counts in the message header. Those counts come from the sender and are not checked against the size of the message, so a single small packet that claims 65,535 records makes the decoder reserve memory for that many records (about 18 MB, according to the upstream advisory) before it reads any record and fails.

Any code that decodes untrusted DNS messages is exposed. That includes servers, and clients and resolvers that receive spoofed responses. Repeated packets can drive memory use up and cause a denial of service.

The fix caps the initial capacity at 8 entries and lets the vectors grow as records are actually decoded. It is in 0.26.2.

Advisory available under CC0-1.0 license.