quic: disable sending of Version Negotiation Packets
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 5.6k
- Forks
- 1.3k
- Avg merge
- 8h 47m
- Merged PRs (30d)
- 19
Description
There's a somewhat esoteric attack, where an attacker might use QUIC Version Negotiation packets to mount a protocol confusion attack, depending on the network configuration of the server node. See https://github.com/libp2p/go-libp2p/issues/1433 and https://datatracker.ietf.org/doc/html/rfc9000#name-request-forgery-attacks for details.
The good news is that we don't need QUIC's version negotiation in libp2p, as our multiaddresses (now) contain the QUIC version. We can therefore disable QUIC version negotiation. A QUIC server would then immediately drop Long Header packets with an unexpected version.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the linked libp2p issue and RFC 9000's request-forgery section to understand the attack. Trace the QUIC server handling described in this issue; done means libp2p no longer sends Version Negotiation packets and immediately drops Long Header packets with an unexpected version.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- networking, security
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100