CVE-2026-28810: Predictable DNS Transaction IDs Enable Cache Poisoning in Built-in Resolver
Generation of Predictable Numbers or Identifiers vulnerability in Erlang/OTP kernel (inet_res, inet_db modules) allows DNS Cache Poisoning.
The built-in DNS resolver (inet_res) uses a sequential, process-global 16-bit transaction ID for UDP queries and does not implement source port randomization. Response validation relies almost entirely on this ID, making DNS cache poisoning practical for an attacker who can observe one query or predict the next ID. This conflicts with RFC 5452 recommendations for mitigating forged DNS answers.
inet_res is intended for use in trusted network environments and with trusted recursive resolvers. Earlier documentation did not clearly state this deployment assumption, which could lead users to deploy the resolver in environments where spoofed DNS responses are possible.
This vulnerability is associated with program files lib/kernel/src/inet_db.erl and lib/kernel/src/inet_res.erl.
This issue affects OTP from OTP 17.0 before OTP 28.4.2, OTP 27.3.4.10 and OTP 26.2.5.19, corresponding to kernel from 3.0 before 10.6.2, 10.2.7.4 and 9.2.4.11.
Security readout for executives and security teams
Plain-English summary
Erlang/OTP’s built-in DNS resolver can make DNS requests predictable. An attacker able to send forged network responses may redirect an application to an incorrect destination or corrupt cached DNS data. The risk is greatest where inet_res communicates across networks that permit spoofed responses rather than trusted, controlled resolver infrastructure.
Executive priority
Treat this as a targeted, moderate-priority remediation. Rapidly identify systems using inet_res across untrusted networks, then upgrade them to the applicable fixed release. Trusted, segmented deployments have lower urgency but should still be updated. There is no supplied evidence of active exploitation or broad compromise.
Technical view
inet_res uses a sequential, process-global 16-bit DNS transaction ID for UDP queries without source-port randomization. Because response validation depends largely on that predictable ID, an unauthenticated network attacker who observes one query or predicts the next value may poison the DNS cache. The weakness is CWE-340 and conflicts with RFC 5452 mitigation recommendations.
Likely exposure
Exposure requires Erlang/OTP 17.0 or later in an affected branch and actual use of the built-in inet_res resolver. Systems using it with untrusted recursive resolvers or across networks where forged UDP DNS responses are possible face greater risk. Version presence alone does not confirm exploitable deployment.
Exploitation context
The CVSS 4.0 score is 6.3 with network reachability, no privileges, and no user interaction, but high attack complexity. The source bundle says poisoning is practical after observing a query or predicting the next ID. CISA KEV status is false, and the supplied sources do not establish active exploitation.
Researcher notes
The affected files are lib/kernel/src/inet_res.erl and inet_db.erl. Reported affected ranges begin with OTP 17.0 and kernel 3.0; fixed releases are branch-specific. The bundle associates fixes with OTP 28.4.2, 27.3.4.10, and 26.2.5.19, corresponding to kernel 10.6.2, 10.2.7.4, and 9.2.4.11. Validate branch ordering against vendor guidance.
Mitigation direction
Upgrade to OTP 28.4.2, 27.3.4.10, or 26.2.5.19, as appropriate for the deployed branch.
Follow the Erlang/OTP vendor advisory and applicable patch guidance.
Restrict inet_res to trusted network environments and trusted recursive resolvers.
Prioritize externally exposed or untrusted-network deployments for remediation.
Validation and detection
Inventory Erlang/OTP and kernel versions across applications and runtime images.
Confirm whether each application actually invokes the built-in inet_res resolver.
Identify the recursive DNS servers and network paths used by affected applications.
Verify installed versions meet the fixed release for their maintained OTP branch.
After upgrading, confirm DNS-dependent application functions and resolver connectivity still operate correctly.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-340: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-340 · source CWE mapping
Generation of Predictable Numbers or Identifiers
Generation of Predictable Numbers or Identifiers represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.