{"api_version":"1","generated_at":"2026-04-21T19:49:36+00:00","cve":"CVE-2026-23440","urls":{"html":"https://cve.report/CVE-2026-23440","api":"https://cve.report/api/cve/CVE-2026-23440.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-23440","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-23440"},"summary":{"title":"net/mlx5e: Fix race condition during IPSec ESN update","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/mlx5e: Fix race condition during IPSec ESN update\n\nIn IPSec full offload mode, the device reports an ESN (Extended\nSequence Number) wrap event to the driver. The driver validates this\nevent by querying the IPSec ASO and checking that the esn_event_arm\nfield is 0x0, which indicates an event has occurred. After handling\nthe event, the driver must re-arm the context by setting esn_event_arm\nback to 0x1.\n\nA race condition exists in this handling path. After validating the\nevent, the driver calls mlx5_accel_esp_modify_xfrm() to update the\nkernel's xfrm state. This function temporarily releases and\nre-acquires the xfrm state lock.\n\nSo, need to acknowledge the event first by setting esn_event_arm to\n0x1. This prevents the driver from reprocessing the same ESN update if\nthe hardware sends events for other reason. Since the next ESN update\nonly occurs after nearly 2^31 packets are received, there's no risk of\nmissing an update, as it will happen long after this handling has\nfinished.\n\nProcessing the event twice causes the ESN high-order bits (esn_msb) to\nbe incremented incorrectly. The driver then programs the hardware with\nthis invalid ESN state, which leads to anti-replay failures and a\ncomplete halt of IPSec traffic.\n\nFix this by re-arming the ESN event immediately after it is validated,\nbefore calling mlx5_accel_esp_modify_xfrm(). This ensures that any\nspurious, duplicate events are correctly ignored, closing the race\nwindow.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-04-03 16:16:26","updated_at":"2026-04-07 13:21:09"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/3dffc083292e6872787bd7e34b957627622f9af4","name":"https://git.kernel.org/stable/c/3dffc083292e6872787bd7e34b957627622f9af4","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/96c9c25b74686ac2de15921c9ad30c5ef13af8cd","name":"https://git.kernel.org/stable/c/96c9c25b74686ac2de15921c9ad30c5ef13af8cd","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/beb6e2e5976a128b0cccf10d158124422210c5ef","name":"https://git.kernel.org/stable/c/beb6e2e5976a128b0cccf10d158124422210c5ef","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/8d625c15471fb8780125eaef682983a96af77bdc","name":"https://git.kernel.org/stable/c/8d625c15471fb8780125eaef682983a96af77bdc","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/2051c709dce92da3550040aa7949cd5a9c89b14e","name":"https://git.kernel.org/stable/c/2051c709dce92da3550040aa7949cd5a9c89b14e","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-23440","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-23440","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected fef06678931ff67b158d337b581e5cf5ca40a3a3 3dffc083292e6872787bd7e34b957627622f9af4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected fef06678931ff67b158d337b581e5cf5ca40a3a3 2051c709dce92da3550040aa7949cd5a9c89b14e git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected fef06678931ff67b158d337b581e5cf5ca40a3a3 96c9c25b74686ac2de15921c9ad30c5ef13af8cd git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected fef06678931ff67b158d337b581e5cf5ca40a3a3 8d625c15471fb8780125eaef682983a96af77bdc git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected fef06678931ff67b158d337b581e5cf5ca40a3a3 beb6e2e5976a128b0cccf10d158124422210c5ef git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.4","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.4 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.130 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.78 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.20 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.19.10 6.19.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.0-rc5 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"23440","cve":"CVE-2026-23440","epss":"0.000180000","percentile":"0.046140000","score_date":"2026-04-07","updated_at":"2026-04-08 00:03:39"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"3dffc083292e6872787bd7e34b957627622f9af4","status":"affected","version":"fef06678931ff67b158d337b581e5cf5ca40a3a3","versionType":"git"},{"lessThan":"2051c709dce92da3550040aa7949cd5a9c89b14e","status":"affected","version":"fef06678931ff67b158d337b581e5cf5ca40a3a3","versionType":"git"},{"lessThan":"96c9c25b74686ac2de15921c9ad30c5ef13af8cd","status":"affected","version":"fef06678931ff67b158d337b581e5cf5ca40a3a3","versionType":"git"},{"lessThan":"8d625c15471fb8780125eaef682983a96af77bdc","status":"affected","version":"fef06678931ff67b158d337b581e5cf5ca40a3a3","versionType":"git"},{"lessThan":"beb6e2e5976a128b0cccf10d158124422210c5ef","status":"affected","version":"fef06678931ff67b158d337b581e5cf5ca40a3a3","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"6.4"},{"lessThan":"6.4","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.130","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.78","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.20","versionType":"semver"},{"lessThanOrEqual":"6.19.*","status":"unaffected","version":"6.19.10","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.0-rc5","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.130","versionStartIncluding":"6.4","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.78","versionStartIncluding":"6.4","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.20","versionStartIncluding":"6.4","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.19.10","versionStartIncluding":"6.4","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.0-rc5","versionStartIncluding":"6.4","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/mlx5e: Fix race condition during IPSec ESN update\n\nIn IPSec full offload mode, the device reports an ESN (Extended\nSequence Number) wrap event to the driver. The driver validates this\nevent by querying the IPSec ASO and checking that the esn_event_arm\nfield is 0x0, which indicates an event has occurred. After handling\nthe event, the driver must re-arm the context by setting esn_event_arm\nback to 0x1.\n\nA race condition exists in this handling path. After validating the\nevent, the driver calls mlx5_accel_esp_modify_xfrm() to update the\nkernel's xfrm state. This function temporarily releases and\nre-acquires the xfrm state lock.\n\nSo, need to acknowledge the event first by setting esn_event_arm to\n0x1. This prevents the driver from reprocessing the same ESN update if\nthe hardware sends events for other reason. Since the next ESN update\nonly occurs after nearly 2^31 packets are received, there's no risk of\nmissing an update, as it will happen long after this handling has\nfinished.\n\nProcessing the event twice causes the ESN high-order bits (esn_msb) to\nbe incremented incorrectly. The driver then programs the hardware with\nthis invalid ESN state, which leads to anti-replay failures and a\ncomplete halt of IPSec traffic.\n\nFix this by re-arming the ESN event immediately after it is validated,\nbefore calling mlx5_accel_esp_modify_xfrm(). This ensures that any\nspurious, duplicate events are correctly ignored, closing the race\nwindow."}],"providerMetadata":{"dateUpdated":"2026-04-03T15:15:24.596Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/3dffc083292e6872787bd7e34b957627622f9af4"},{"url":"https://git.kernel.org/stable/c/2051c709dce92da3550040aa7949cd5a9c89b14e"},{"url":"https://git.kernel.org/stable/c/96c9c25b74686ac2de15921c9ad30c5ef13af8cd"},{"url":"https://git.kernel.org/stable/c/8d625c15471fb8780125eaef682983a96af77bdc"},{"url":"https://git.kernel.org/stable/c/beb6e2e5976a128b0cccf10d158124422210c5ef"}],"title":"net/mlx5e: Fix race condition during IPSec ESN update","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-23440","datePublished":"2026-04-03T15:15:24.596Z","dateReserved":"2026-01-13T15:37:46.017Z","dateUpdated":"2026-04-03T15:15:24.596Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-04-03 16:16:26","lastModifiedDate":"2026-04-07 13:21:09","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"23440","Ordinal":"1","Title":"net/mlx5e: Fix race condition during IPSec ESN update","CVE":"CVE-2026-23440","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"23440","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/mlx5e: Fix race condition during IPSec ESN update\n\nIn IPSec full offload mode, the device reports an ESN (Extended\nSequence Number) wrap event to the driver. The driver validates this\nevent by querying the IPSec ASO and checking that the esn_event_arm\nfield is 0x0, which indicates an event has occurred. After handling\nthe event, the driver must re-arm the context by setting esn_event_arm\nback to 0x1.\n\nA race condition exists in this handling path. After validating the\nevent, the driver calls mlx5_accel_esp_modify_xfrm() to update the\nkernel's xfrm state. This function temporarily releases and\nre-acquires the xfrm state lock.\n\nSo, need to acknowledge the event first by setting esn_event_arm to\n0x1. This prevents the driver from reprocessing the same ESN update if\nthe hardware sends events for other reason. Since the next ESN update\nonly occurs after nearly 2^31 packets are received, there's no risk of\nmissing an update, as it will happen long after this handling has\nfinished.\n\nProcessing the event twice causes the ESN high-order bits (esn_msb) to\nbe incremented incorrectly. The driver then programs the hardware with\nthis invalid ESN state, which leads to anti-replay failures and a\ncomplete halt of IPSec traffic.\n\nFix this by re-arming the ESN event immediately after it is validated,\nbefore calling mlx5_accel_esp_modify_xfrm(). This ensures that any\nspurious, duplicate events are correctly ignored, closing the race\nwindow.","Type":"Description","Title":"net/mlx5e: Fix race condition during IPSec ESN update"}]}}}