CVE-2025-59023

8.2 HIGH

📋 TL;DR

This vulnerability in PowerDNS Recursor allows attackers to poison cached DNS delegations by sending crafted delegations or IP fragments. This affects PowerDNS Recursor installations that accept DNS queries from untrusted sources, potentially leading to DNS cache poisoning attacks.

💻 Affected Systems

Products:
  • PowerDNS Recursor
Versions: All versions before 4.9.8, 4.10.0 before 4.10.2
Operating Systems: All operating systems running PowerDNS Recursor
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects PowerDNS Recursor, not PowerDNS Authoritative Server. Vulnerability exists in the delegation cache handling.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could redirect legitimate domain queries to malicious servers, enabling phishing, malware distribution, or credential theft across all users relying on the poisoned resolver.

🟠

Likely Case

Targeted DNS cache poisoning affecting specific domains, potentially redirecting users to malicious sites or intercepting sensitive communications.

🟢

If Mitigated

Limited impact with proper network segmentation and DNS query restrictions, though cache poisoning could still affect internal clients.

🌐 Internet-Facing: HIGH - Recursors exposed to the internet are directly vulnerable to crafted DNS queries from any source.
🏢 Internal Only: MEDIUM - Internal attackers or compromised systems could poison the cache, affecting internal DNS resolution.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Exploitation requires sending specially crafted DNS delegations or IP fragments to the Recursor, but no public exploit code is currently available.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.9.8, 4.10.2, or later

Vendor Advisory: https://docs.powerdns.com/recursor/security-advisories/powerdns-advisory-2025-06.html

Restart Required: Yes

Instructions:

1. Download the patched version from PowerDNS repository. 2. Stop the Recursor service. 3. Install the updated package. 4. Start the Recursor service. 5. Verify the version is 4.9.8, 4.10.2, or later.

🔧 Temporary Workarounds

Restrict Recursor Access

all

Limit which clients can query the Recursor to trusted networks only

# Edit recursor.conf and set allow-from to trusted networks
allow-from=192.168.0.0/16, 10.0.0.0/8

Disable Recursion for Untrusted Sources

all

Configure Recursor to only perform recursion for authorized clients

# In recursor.conf, set:
allow-from=trusted-networks
local-address=internal-ip-only

🧯 If You Can't Patch

  • Implement strict network ACLs to only allow DNS queries from trusted internal networks
  • Monitor DNS logs for unusual delegation patterns or cache poisoning attempts

🔍 How to Verify

Check if Vulnerable:

Check PowerDNS Recursor version with 'rec_control version' or 'pdns_recursor --version'

Check Version:

rec_control version

Verify Fix Applied:

Verify version is 4.9.8, 4.10.2, or later using version check command

📡 Detection & Monitoring

Log Indicators:

  • Unusual delegation patterns in Recursor logs
  • Multiple failed delegation attempts from single sources
  • Cache statistics showing abnormal delegation cache growth

Network Indicators:

  • DNS queries with crafted delegation records
  • Unusual IP fragmentation in DNS traffic
  • Multiple identical delegation queries from suspicious sources

SIEM Query:

source="powerdns-recursor" ("delegation" OR "cache") AND ("error" OR "unusual" OR "malformed")

🔗 References

📤 Share & Export