Crash in the RFC 7468 dissector in Wireshark 3.6.0 and 3.4.0 to 3.4.10 allows denial of service via packet injection or crafted capture file
Wireshark, a widely used network protocol analyzer, is vulnerable to a denial-of-service (DoS) attack. A crafted packet or capture file can trigger a crash in the RFC 7468 dissector, rendering the application unusable and potentially disrupting network analysis operations. This vulnerability can be exploited by injecting malicious packets or distributing compromised capture files.
Step 1: Payload Delivery: An attacker crafts a malicious packet or capture file (.pcap or .pcapng) containing specially crafted RFC 7468 encoded data. This data is designed to trigger the vulnerability within the Wireshark RFC 7468 dissector.
Step 2: Packet Injection/File Loading: If the attack is packet-based, the malicious packet is injected into the network, potentially using tools like scapy or hping3. If the attack is file-based, the attacker distributes a compromised capture file.
Step 3: Dissector Trigger: When Wireshark processes the malicious packet or loads the capture file, the RFC 7468 dissector is invoked to parse the data.
Step 4: Vulnerability Exploitation: The crafted data causes the RFC 7468 dissector to crash due to a memory access violation or other error condition.
Step 5: Denial of Service: The crash results in a denial of service, as Wireshark becomes unresponsive and potentially terminates. This prevents legitimate network analysis and can disrupt security monitoring.
The vulnerability lies within the RFC 7468 dissector in Wireshark. This dissector is responsible for parsing and interpreting data encoded in the RFC 7468 format, which is commonly used for encoding cryptographic keys and certificates. The root cause is a flaw in how the dissector handles malformed or specifically crafted RFC 7468 data. This likely involves an issue such as an integer overflow, out-of-bounds read, or memory corruption during the parsing process. When the dissector encounters the malicious input, it attempts to access memory or perform operations in an invalid manner, leading to a crash. The specific function or logic flaw is likely related to incorrect bounds checking or improper handling of data lengths within the RFC 7468 data structures. The crafted input likely exploits a weakness in the parsing logic, causing the program to dereference an invalid pointer or attempt to access memory it's not authorized to access, resulting in a crash.