- Reported
-
- Issued
-
- Package
-
hickory-proto
(crates.io)
- Type
-
Vulnerability
- Categories
-
- Keywords
-
#dns
#tsig
#integer-underflow
#panic
- Aliases
-
- References
-
- Patched
-
- Unaffected
-
Description
When a TSIG record is decoded from the DNS wire format, its MAC length and "other data" length are checked against the end of the record data. If a check failed, the error value was built from end_idx - decoder.index(). For a malformed record the decoder can already be past end_idx, so this unsigned subtraction underflows.
In builds with overflow checks enabled (the dev profile by default) the underflow panics, so a peer that sends a crafted TSIG record can crash the process. In builds without overflow checks the result wraps and is only used in the returned error.
The fix returns a plain "insufficient bytes" error without the subtraction. It is in 0.26.2.
Advisory available under CC0-1.0
license.