{"id":"CVE-2026-90110","revision":null,"records":[{"revision":"8cef563723694877aa29ae5444ae5247","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-90110","aliases":[],"title":"inetpeer: randomize RB-tree node comparison using SipHash","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ninetpeer: randomize RB-tree node comparison using SipHash\n\nThe inetpeer rate limiting system stores peer entries in a Red-Black tree\nkeyed deterministically on the remote IP address. Because tree lookups walk\nthe RB-tree using standard lexicographical comparisons (inetpeer_addr_cmp),\nan off-path adversary can predict the exact topology of the tree and the\nsequence of nodes traversed during lookups (the gc_stack candidate list).\n\nBy combining deterministic tree traversal with aggressive garbage collection\n(triggered when tree size exceeds inet_peer_threshold), an attacker can\nselectively force the eviction of targeted inet_peer nodes. When an evicted\nnode is subsequently re-created upon receiving a new packet, its rate-limiting\ntoken bucket (rate_tokens, rate_last) is reset to full capacity. This creates\na side-channel primitive allowing off-path attackers to bypass IP-keyed ICMP\nrate limits and infer open UDP ports (similar to SAD DNS style attacks).\n\nMitigate this by randomizing the RB-tree node comparison logic using SipHash\nwith a secret key (inetpeer_hash_key) initialized via net_get_random_once().\nNodes are ordered in the tree by SipHash(addr, key) rather than raw IP\naddresses. Because the secret key is unknown to external entities, the tree\nlayout and lookup traversal paths are unpredictable to off-path adversaries,\nbreaking the deterministic eviction gadget.\n\nCache the computed 64-bit SipHash (hash) in struct inet_peer and compute the\ntarget hash (dhash) once at the beginning of inet_getpeer() to avoid recomputing\nSipHash at every step of the RB-tree walk.","state":0,"publishedAt":"2026-09-17T16:06:18.113+00:00","modifiedAt":"2026-10-19T08:58:08.724+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"include/net/inetpeer.h\",\n                        \"net/ipv4/inetpeer.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"b145425f269a17ed344d737f746b844dfac60c82\",\n                            \"lessThan\": \"b20e98f0bb668a59abaf7bcf85d75c073e90d352\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"b145425f269a17ed344d737f746b844dfac60c82\",\n                            \"lessThan\": \"5f127e3cc9647a8a70db12c65dbd0de473545380\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"b145425f269a17ed344d737f746b844dfac60c82\",\n                            \"lessThan\": \"199fcf285e498111e029137d088949bc6c26d578\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"b145425f269a17ed344d737f746b844dfac60c82\",\n                            \"lessThan\": \"857681f6835d5b0a7bc4a34a026baeaaf5215623\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"b145425f269a17ed344d737f746b844dfac60c82\",\n                            \"lessThan\": \"7109bb63667a53e4542ad845476f97d0c8b28a61\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"b145425f269a17ed344d737f746b844dfac60c82\",\n                            \"lessThan\": \"2ee66e9487172fcd189bc52a767c30dad7141c09\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"include/net/inetpeer.h\",\n                        \"net/ipv4/inetpeer.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"4.14\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"4.14\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.1.188\",\n                            \"lessThanOrEqual\": \"6.1.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.6.157\",\n                            \"lessThanOrEqual\": \"6.6.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.12.110\",\n                            \"lessThanOrEqual\": \"6.12.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.18.52\",\n                            \"lessThanOrEqual\": \"6.18.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.2.6\",\n                            \"lessThanOrEqual\": \"7.2.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.3\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L","score":9.4,"severity":"CRITICAL"}],"references":["https://git.kernel.org/stable/c/b20e98f0bb668a59abaf7bcf85d75c073e90d352","https://git.kernel.org/stable/c/5f127e3cc9647a8a70db12c65dbd0de473545380","https://git.kernel.org/stable/c/199fcf285e498111e029137d088949bc6c26d578","https://git.kernel.org/stable/c/857681f6835d5b0a7bc4a34a026baeaaf5215623","https://git.kernel.org/stable/c/7109bb63667a53e4542ad845476f97d0c8b28a61","https://git.kernel.org/stable/c/2ee66e9487172fcd189bc52a767c30dad7141c09"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-90110","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-90110","identifiers":["CVE-2026-90110"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-09T03:04:09.5264463+00:00","complete":true,"records":1769,"lastAttemptAt":"2026-11-09T03:04:09.5264463+00:00","lastSuccessAt":"2026-11-09T03:04:09.687719+00:00","error":null,"lastVerifiedAt":"2026-11-09T03:04:09.687725+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-24e6fde7b744113daefb8f6135035fb8a5c69c9617c9c0d40574a0376532ffd3-147e40e6bacaf605c8b8b91790303c2161fe161e986dcab4007ffaf615b27ea0","complete":true,"records":421280,"lastAttemptAt":"2026-11-09T03:02:14.7184665+00:00","lastSuccessAt":"2026-11-09T03:02:14.7023872+00:00","error":null,"lastVerifiedAt":"2026-11-09T03:02:14.7184665+00:00","snapshotPublishedAt":"2026-11-09T02:22:19+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-5923d59598fe46c98ec384fbfaf44bc7","complete":false,"records":13654,"lastAttemptAt":"2026-11-09T03:16:18.1412099+00:00","lastSuccessAt":"2026-11-09T03:16:18.138+00:00","error":"6 identifier lookups failed; latest failures include HTTP 403. Other identifiers were checked independently.","lastVerifiedAt":"2026-11-09T03:16:18.138+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13655,"expectedIdentifiers":13706,"failedIdentifiers":6},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-09T03:04:09.5264463+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-09T03:04:09.5264463+00:00","lastSuccessAt":"2026-11-09T03:04:09.6884561+00:00","error":null,"lastVerifiedAt":"2026-11-09T03:04:09.6884561+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-5a44a451442747cb81d83104fe1e7771","complete":true,"records":13666,"lastAttemptAt":"2026-11-09T03:04:10.1662574+00:00","lastSuccessAt":"2026-11-09T02:08:52.274+00:00","error":null,"lastVerifiedAt":"2026-11-09T02:08:52.274+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13706,"expectedIdentifiers":13706,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-980593e6977a6d1b4fb1eed5a1ffe88a468736f89f0a06f710924ad59132c023","complete":true,"records":9914,"lastAttemptAt":"2026-11-09T03:04:09.4835743+00:00","lastSuccessAt":"2026-11-08T11:07:07.068788+00:00","error":null,"lastVerifiedAt":"2026-11-09T03:04:09.4835743+00:00","snapshotPublishedAt":"2026-11-08T11:02:46+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-fde804134ecdda0ddd5ff5c26ee1fff5a6fa659311f7ef2e51c6ad54964db0e2","complete":true,"records":1971,"lastAttemptAt":"2026-11-09T03:02:14.8618119+00:00","lastSuccessAt":"2026-11-06T19:03:17.0399903+00:00","error":null,"lastVerifiedAt":"2026-11-09T03:02:14.8618119+00:00","snapshotPublishedAt":"2026-11-06T18:17:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-3b1150af6d7ada2c07356cbab4ead5224c1485027890f71c71d0742cddf0b9e8","complete":true,"records":3055,"lastAttemptAt":"2026-11-09T03:04:09.4954044+00:00","lastSuccessAt":"2026-11-09T00:02:23.4330288+00:00","error":null,"lastVerifiedAt":"2026-11-09T03:04:09.4954044+00:00","snapshotPublishedAt":"2026-11-08T23:17:54+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-d847477990cd62b1d95e922f40ca328269fbc268a0aa72bfe5bee28e656d8ce7","complete":true,"records":231296,"lastAttemptAt":"2026-11-09T03:04:09.3500258+00:00","lastSuccessAt":"2026-11-09T03:04:07.965371+00:00","error":null,"lastVerifiedAt":"2026-11-09T03:04:09.3500258+00:00","snapshotPublishedAt":"2026-11-09T02:33:09+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}