ipv4: udp: Create exceptions before socket matching
In the Linux kernel, the following vulnerability has been resolved: ipv4: udp: Create exceptions before socket matching Currently, when ICMP Fragmentation Needed and Redirect Message packets are locally delivered and quote a UDP packet, a FIB nexthop exception (FNHE) is only created if the kernel can match the UDP packet to an existing socket. This behavior allows off-path attackers to conduct a side-channel attack on the FNHE cache in order to discover the ephemeral port used by a connected UDP socket. Commit 6457378fe796 ("ipv4: use siphash instead of Jenkins in fnhe_hashfun()") and commit 67d6d681e15b ("ipv4: make exception cache less predictible") tried to mitigate such attacks by making it harder for attackers to discover hash collisions in the FNHE cache and by randomizing the number of exceptions a hash bucket can hold, respectively. Unfortunately, both of the mitigations can be bypassed. Instead, mitigate such attacks by always creating a FNHE, even before trying to find a matching socket. Do that by calling ipv4_update_pmtu() and ipv4_redirect(), the helpers used when the quoted packet did not originate from a socket. This means that guesses (right or wrong) from an off-path attacker will always result in a FNHE being created or updated in the cache that the attacker can observe. Pass an oif of 0, in a similar fashion to icmp_err(). This is also the oif used by the socket path for sockets that are not bound to a device. Note that this does not allow attackers to crea
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.273, 5.15.224, 6.1.191, 6.12.115, 6.18.59, 6.6.161, 7.2.11
- CVEs
- CVE-2026-99077
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 18:05 UTC · Revision 1
Source evidence
ipv4: udp: Create exceptions before socket matching
core-osv · Original sourcePublished 23 Oct 2026, 12:23 UTC
In the Linux kernel, the following vulnerability has been resolved: ipv4: udp: Create exceptions before socket matching Currently, when ICMP Fragmentation Needed and Redirect Message packets are locally delivered and quote a UDP packet, a FIB nexthop exception (FNHE) is only created if the kernel can match the UDP packet to an existing socket. This behavior allows off-path attackers to conduct a side-channel attack on the FNHE cache in order to discover the ephemeral port used by a connected UDP socket. Commit 6457378fe796 ("ipv4: use siphash instead of Jenkins in fnhe_hashfun()") and commit 67d6d681e15b ("ipv4: make exception cache less predictible") tried to mitigate such attacks by making it harder for attackers to discover hash collisions in the FNHE cache and by randomizing the number of exceptions a hash bucket can hold, respectively. Unfortunately, both of the mitigations can be bypassed. Instead, mitigate such attacks by always creating a FNHE, even before trying to find a matching socket. Do that by calling ipv4_update_pmtu() and ipv4_redirect(), the helpers used when the quoted packet did not originate from a socket. This means that guesses (right or wrong) from an off-path attacker will always result in a FNHE being created or updated in the cache that the attacker can observe. Pass an oif of 0, in a similar fashion to icmp_err(). This is also the oif used by the socket path for sockets that are not bound to a device. Note that this does not allow attackers to crea
osv:CVE-2026-99077
Kernel
Fixed versions: 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.59, 7.2.11
Complete source record
{
"id": "25b372842a3b134736c8ac997a57f8b8aa34f35f56d5cdef17cc4ed15352f616",
"url": "https://osv.dev/vulnerability/CVE-2026-99077",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "ipv4: udp: Create exceptions before socket matching",
"summary": "In the Linux kernel, the following vulnerability has been resolved: ipv4: udp: Create exceptions before socket matching Currently, when ICMP Fragmentation Needed and Redirect Message packets are locally delivered and quote a UDP packet, a FIB nexthop exception (FNHE) is only created if the kernel can match the UDP packet to an existing socket. This behavior allows off-path attackers to conduct a side-channel attack on the FNHE cache in order to discover the ephemeral port used by a connected UDP socket. Commit 6457378fe796 (\"ipv4: use siphash instead of Jenkins in fnhe_hashfun()\") and commit 67d6d681e15b (\"ipv4: make exception cache less predictible\") tried to mitigate such attacks by making it harder for attackers to discover hash collisions in the FNHE cache and by randomizing the number of exceptions a hash bucket can hold, respectively. Unfortunately, both of the mitigations can be bypassed. Instead, mitigate such attacks by always creating a FNHE, even before trying to find a matching socket. Do that by calling ipv4_update_pmtu() and ipv4_redirect(), the helpers used when the quoted packet did not originate from a socket. This means that guesses (right or wrong) from an off-path attacker will always result in a FNHE being created or updated in the cache that the attacker can observe. Pass an oif of 0, in a similar fashion to icmp_err(). This is also the oif used by the socket path for sockets that are not bound to a device. Note that this does not allow attackers to crea",
"evidence": "osv:CVE-2026-99077",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.273",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.224",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.191",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.161",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.115",
"evidence": "/affected/1/ranges"
},
{
"value": "6.18.59",
"evidence": "/affected/1/ranges"
},
{
"value": "7.2.11",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2026-99077",
"aliases": [
"CVE-2026-99077"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "4895c771c7f006b4b90f9d6b1d2210939ba57b38"
},
{
"fixed": "e8f211a37396f1684af9ac81b3fc53538eb9c2f7"
},
{
"fixed": "9f97b01ee799bdf57d9183623f3987c8bbfd4f6f"
},
{
"fixed": "e0cd4942831d4ef8f6d4b90b0d3510460fdfbceb"
},
{
"fixed": "0cf0ff2f728f2a1434c56c0bcf267fe230abf124"
},
{
"fixed": "3b92e4349c6b0dd1e05d5f0483e71ef37691b1c3"
},
{
"fixed": "ecd7ead4bf05e221e90f18a29aec570a50fd1592"
},
{
"fixed": "be4fd05398f2b5e42029be70ee875fc749b8ce3a"
},
{
"fixed": "4c3499f79f8c7e8561266bcc220a18538cec0458"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-99077.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "3.6.0"
},
{
"fixed": "5.10.273"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.224"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.191"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.161"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.115"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.18.59"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.0"
},
{
"fixed": "7.2.11"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-99077.json"
}
}
],
"modified": "2026-11-01T02:30:56.925109289Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/0cf0ff2f728f2a1434c56c0bcf267fe230abf124",
"https://git.kernel.org/stable/c/3b92e4349c6b0dd1e05d5f0483e71ef37691b1c3",
"https://git.kernel.org/stable/c/4c3499f79f8c7e8561266bcc220a18538cec0458",
"https://git.kernel.org/stable/c/9f97b01ee799bdf57d9183623f3987c8bbfd4f6f",
"https://git.kernel.org/stable/c/be4fd05398f2b5e42029be70ee875fc749b8ce3a",
"https://git.kernel.org/stable/c/e0cd4942831d4ef8f6d4b90b0d3510460fdfbceb",
"https://git.kernel.org/stable/c/e8f211a37396f1684af9ac81b3fc53538eb9c2f7",
"https://git.kernel.org/stable/c/ecd7ead4bf05e221e90f18a29aec570a50fd1592",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/99xxx/CVE-2026-99077.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-99077",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/99xxx/CVE-2026-99077.json"
}
},
"related_cves": [
{
"value": "CVE-2026-99077",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 498205,
"published_at": "2026-10-23T12:23:22.773+00:00"
}