dnspython has excessive memory and CPU use
🔗 CVE IDs covered (1)
📋 Description
Summary
A maliciously crafted zone file could use a WKS record to consume excessive memory and CPU, possibly causing the process to exit due to memory exhaustion.
Details
The from_text() parser does not check that a WKS record service number is between 0 and 65535 inclusive. It then uses this number to resize the bitmap to accommodate a bit with that offset. This can cause extremely large memory allocations, and also extends the array very inefficiently, wasting CPU.
Proof of concept
This demonstrates the failure to limit the service number, though with a value that does not cause excessive memory or CPU consumption.
rd = dns.rdata.from_text("IN", "WKS", "10.0.0.1 udp 65536")
Impact
If dnspython is used to read zonefile format where the attacker can control the type and rdata text, the program may consume excessive memory or CPU, denying service.
🎯 Affected products1
- pip/dnspython:< 2.9.2
🔗 References (5)
- https://github.com/rthalley/dnspython/security/advisories/GHSA-vvf4-9x63-8xvv
- https://github.com/rthalley/dnspython/commit/388db14ee9923288f6e73f86e482c77706e59d73
- https://github.com/rthalley/dnspython/commit/a62e1be066da0ed71b5b59f37435bb17cfa0070f
- https://github.com/rthalley/dnspython/releases/tag/v2.9.2
- https://github.com/advisories/GHSA-vvf4-9x63-8xvv