This project contains known security vulnerabilities. Find detailed information at the bottom.

Crate libp2p-mdns

Dependencies

(15 total, 6 outdated, 1 insecure)

CrateRequiredLatestStatus
 async-io^2.3.32.6.0up to date
 async-std^1.12.01.13.2up to date
 data-encoding^2.6.02.11.1up to date
 futures^0.3.300.3.34up to date
 hickory-proto ⚠️^0.24.10.26.3insecure
 if-watch^3.2.03.2.2up to date
 libp2p-core^0.42.00.44.0out of date
 libp2p-identity^0.2.90.3.1out of date
 libp2p-swarm^0.45.00.48.0out of date
 rand^0.8.30.10.3out of date
 smallvec^1.13.21.16.5up to date
 socket2^0.5.70.6.5out of date
 tokio^1.381.54.1up to date
 tracing^0.1.370.1.44up to date
 void^1.0.21.0.2up to date

Dev dependencies

(7 total, 4 outdated)

CrateRequiredLatestStatus
 async-std^1.9.01.13.2up to date
 libp2p-noise^0.44.00.47.0out of date
 libp2p-swarm^0.45.00.48.0out of date
 libp2p-tcp^0.42.00.45.0out of date
 libp2p-yamux^0.45.20.48.0out of date
 tokio^1.381.54.1up to date
 tracing-subscriber^0.30.3.23up to date

Security Vulnerabilities

hickory-proto: CPU exhaustion during message encoding due to O(n²) name compression

RUSTSEC-2026-0119

During message encoding, hickory-proto's BinEncoder stores pointers to labels that are candidates for name compression in a Vec<(usize, Vec<u8>)>. The name compression logic then searches for matches with a linear scan.

A malicious message with many records can both introduce many candidate labels, and invoke this linear scan many times. This can amplify CPU exhaustion in DoS attacks.

This is similar to CVE-2024-8508.

We recommend all affected users update to hickory-proto 0.26.1 for the fix.

hickory-proto: Panic on a malformed `alpn` value when parsing SVCB or HTTPS records from text

RUSTSEC-2026-0487

When an SVCB or HTTPS record is parsed from its text (zone file) form, the alpn service parameter value is split into a list of protocol names. That step called expect on the result, on the assumption that it could not fail. A malformed value, such as one with an unbalanced quote (alpn="h), two commas in a row or an invalid escape, makes it fail, so the parser panicked instead of returning an error.

Code that parses zone files or record text from an untrusted source can be made to panic, which is a denial of service. Records decoded from the DNS wire format are not parsed this way.

The fix returns a parse error instead. It is in 0.26.2.

hickory-proto: Panic when an SVCB or HTTPS parameter value is a single quote character

RUSTSEC-2026-0489

When an SVCB or HTTPS record is parsed from its text (zone file) form, surrounding double quotes are removed from each service parameter value by checking that the value starts and ends with " and slicing off the first and last character. A value that is a single " (for example alpn=") passes that check, and the slice [1..0] panics.

Code that parses zone files or record text from an untrusted source can be made to panic, which is a denial of service. Records decoded from the DNS wire format are not parsed this way.

The fix rejects a lone quote character with a parse error before the slice. It is in 0.26.2.

hickory-proto: Zone file lexer panics on a token of 4096 or more characters

RUSTSEC-2026-0490

The zone file lexer read each token in a loop capped at 4,096 iterations, with an assert! on the loop counter as a safety bound. A single token long enough to reach that bound, for example a very long name or character string in a zone file, triggered the assertion and the parser panicked instead of returning the token or an error.

Code that parses zone files from an untrusted source can be made to panic, which is a denial of service.

The fix removes the iteration bound, so the lexer ends only when it reaches the end of a token or an error. It is in 0.26.2.

hickory-proto: Memory amplification from record counts in the DNS message header

RUSTSEC-2026-0491

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.