{"id":"CVE-2024-57982","title":"xfrm: state: fix out-of-bounds read during lookup","summary":"In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: state: fix out-of-bounds read during lookup\n\nlookup and resize can run in parallel.\n\nThe xfrm_state_hash_generation seqlock ensures a retry, but the hash\nfunction…","severity":"high","cvss":7.8,"cvssVector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","cvssSource":"cna","vendor":"Linux","product":"Linux","affected":["Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < 80610185e9dd2ef7c0a4818a47390a8655b3dc27","Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < b86dc510308d7a8955f3f47a4fea4bef887653e4","Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < a16871c7832ea6435abb6e0b58289ae7dcb7e4fc","Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < dd4c2a174994238d55ab54da2545543d36f4e0d0","Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < e952837f3ddb0ff726d5b582aa1aad9aa38d024d","Linux 4.9"],"ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"partial","timestamp":"2025-10-01T19:31:46.705139Z"},"published":"2025-02-27","updated":"2026-10-30","sourceUpdated":"2026-10-30T12:20:34.191Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2024-57982","references":[{"url":"https://git.kernel.org/stable/c/80610185e9dd2ef7c0a4818a47390a8655b3dc27"},{"url":"https://git.kernel.org/stable/c/b86dc510308d7a8955f3f47a4fea4bef887653e4"},{"url":"https://git.kernel.org/stable/c/a16871c7832ea6435abb6e0b58289ae7dcb7e4fc"},{"url":"https://git.kernel.org/stable/c/dd4c2a174994238d55ab54da2545543d36f4e0d0"},{"url":"https://git.kernel.org/stable/c/e952837f3ddb0ff726d5b582aa1aad9aa38d024d"}],"tags":["cve.org"],"epss":0.00254,"epssPercentile":0.17128,"ingestedAt":"2026-11-03T15:48:07.694Z","slug":"CVE-2024-57982","body":"## Overview\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: state: fix out-of-bounds read during lookup\n\nlookup and resize can run in parallel.\n\nThe xfrm_state_hash_generation seqlock ensures a retry, but the hash\nfunctions can observe a hmask value that is too large for the new hlist\narray.\n\nrehash does:\n  rcu_assign_pointer(net->xfrm.state_bydst, ndst) [..]\n  net->xfrm.state_hmask = nhashmask;\n\nWhile state lookup does:\n  h = xfrm_dst_hash(net, daddr, saddr, tmpl->reqid, encap_family);\n  hlist_for_each_entry_rcu(x, net->xfrm.state_bydst + h, bydst) {\n\nThis is only safe in case the update to state_bydst is larger than\nnet->xfrm.xfrm_state_hmask (or if the lookup function gets\nserialized via state spinlock again).\n\nFix this by prefetching state_hmask and the associated pointers.\nThe xfrm_state_hash_generation seqlock retry will ensure that the pointer\nand the hmask will be consistent.\n\nThe existing helpers, like xfrm_dst_hash(), are now unsafe for RCU side,\nadd lockdep assertions to document that they are only safe for insert\nside.\n\nxfrm_state_lookup_byaddr() uses the spinlock rather than RCU.\nAFAICS this is an oversight from back when state lookup was converted to\nRCU, this lock should be replaced with RCU in a future patch.\n\n## Affected\n\n- `Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < 80610185e9dd2ef7c0a4818a47390a8655b3dc27`\n- `Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < b86dc510308d7a8955f3f47a4fea4bef887653e4`\n- `Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < a16871c7832ea6435abb6e0b58289ae7dcb7e4fc`\n- `Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < dd4c2a174994238d55ab54da2545543d36f4e0d0`\n- `Linux >= c2f672fc94642bae96821a393f342edcfa9794a6 < e952837f3ddb0ff726d5b582aa1aad9aa38d024d`\n- `Linux 4.9`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"twilight","depthScore":43,"depthScoreParts":{"impact":42.9,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}