{"api_version":"1","generated_at":"2026-09-01T22:05:29+00:00","cve":"CVE-2026-74750","urls":{"html":"https://cve.report/CVE-2026-74750","api":"https://cve.report/api/cve/CVE-2026-74750.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-74750","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-74750"},"summary":{"title":"ovpn: defer key slot crypto freeing to workqueue","description":"In the Linux kernel, the following vulnerability has been resolved:\n\novpn: defer key slot crypto freeing to workqueue\n\nKey slots are released through a kref and the existing release path\nfrees the AEAD transforms from an RCU callback. That is not safe for all\ncrypto implementations: crypto_free_aead can sleep, for example when an\nasync or hardware implementation has teardown work to complete.\n\nUse queue_rcu_work for key-slot release. This keeps the RCU grace period\nneeded by lockless key-slot readers, but runs the actual crypto teardown\nfrom workqueue context where sleeping is allowed. Once the rcu_work\ncallback runs, pre-existing RCU readers are gone, and the final kref put\nalready proves that no transform user remains, so the worker can release\nthe AEAD transforms and free the slot directly.\n\nThe previous patch drains ovpn_wq during module exit, so queued key-slot\nteardown work cannot outlive module text.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-08-26 15:16:54","updated_at":"2026-08-27 06:17:26"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"7.5","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.5","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"baseScore":7.5,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}}],"references":[{"url":"https://git.kernel.org/stable/c/2da3dfa1ddfe55a065f484750c83660e3bd4ac00","name":"https://git.kernel.org/stable/c/2da3dfa1ddfe55a065f484750c83660e3bd4ac00","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/0f77ed5ee91946ea63e29f2e0ff9dc9e722d8da3","name":"https://git.kernel.org/stable/c/0f77ed5ee91946ea63e29f2e0ff9dc9e722d8da3","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-74750","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-74750","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 8534731dbf2d52a539b94defd06d2a8d3514aacb 0f77ed5ee91946ea63e29f2e0ff9dc9e722d8da3 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 8534731dbf2d52a539b94defd06d2a8d3514aacb 2da3dfa1ddfe55a065f484750c83660e3bd4ac00 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.16","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.16 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.10 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"74750","cve":"CVE-2026-74750","epss":"0.003590000","percentile":"0.286600000","score_date":"2026-08-27","updated_at":"2026-08-28 00:03:39"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/net/ovpn/crypto.c","drivers/net/ovpn/crypto.h","drivers/net/ovpn/crypto_aead.c","drivers/net/ovpn/crypto_aead.h"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"0f77ed5ee91946ea63e29f2e0ff9dc9e722d8da3","status":"affected","version":"8534731dbf2d52a539b94defd06d2a8d3514aacb","versionType":"git"},{"lessThan":"2da3dfa1ddfe55a065f484750c83660e3bd4ac00","status":"affected","version":"8534731dbf2d52a539b94defd06d2a8d3514aacb","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/net/ovpn/crypto.c","drivers/net/ovpn/crypto.h","drivers/net/ovpn/crypto_aead.c","drivers/net/ovpn/crypto_aead.h"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"6.16"},{"lessThan":"6.16","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.10","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.10","versionStartIncluding":"6.16","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2","versionStartIncluding":"6.16","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\novpn: defer key slot crypto freeing to workqueue\n\nKey slots are released through a kref and the existing release path\nfrees the AEAD transforms from an RCU callback. That is not safe for all\ncrypto implementations: crypto_free_aead can sleep, for example when an\nasync or hardware implementation has teardown work to complete.\n\nUse queue_rcu_work for key-slot release. This keeps the RCU grace period\nneeded by lockless key-slot readers, but runs the actual crypto teardown\nfrom workqueue context where sleeping is allowed. Once the rcu_work\ncallback runs, pre-existing RCU readers are gone, and the final kref put\nalready proves that no transform user remains, so the worker can release\nthe AEAD transforms and free the slot directly.\n\nThe previous patch drains ovpn_wq during module exit, so queued key-slot\nteardown work cannot outlive module text."}],"metrics":[{"cvssV3_1":{"baseScore":7.5,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"},"scenarios":[{"lang":"en","value":"AV:N - Key-slot teardown runs from peer removal paths reachable over the network: remote TCP RST/FIN closes ovpn_tcp_close() and keepalive expiry deletes silent VPN peers, both releasing crypto key slots whose RCU callbacks call crypto_free_aead().\nAC:L - Once an ovpn instance with peers/keys exists, a remote party can deterministically trigger teardown (silence until keepalive timeout or force TCP disconnect) without winning races or influencing memory layout; async/hardware AEAD drivers make the sleeping-in-RCU callback reliably observable.\nPR:N - Exploitation needs only network reachability to an operational OpenVPN offload tunnel (or ability to reset its transport); no local account, CAP_NET_ADMIN, or init-namespace root on the victim is required beyond normal VPN service deployment.\nUI:N - No victim user action is required after ovpn is configured; peer teardown and key-slot release are driven automatically by transport disconnect or configured keepalive expiry from remote peer behavior.\nS:U - Impact is confined to kernel networking/crypto teardown on the same host; it does not cross VM, container, or IOMMU security boundaries and is standard in-kernel denial-of-service, not privilege escalation across authorities.\nC:N - The bug is calling a potentially sleeping crypto_free_aead() from an RCU callback, not an out-of-bounds read, UAF, or disclosure primitive; teardown occurs only after RCU grace period and final kref put with no attacker-readable side channel.\nI:N - Sleeping during AEAD transform release does not grant attacker-controlled memory writes or code execution; it violates atomic-context rules and can destabilize the kernel but does not corrupt adjacent structures into exploitable write primitives.\nA:H - crypto_free_aead() may block on async/hardware teardown while running in an RCU callback, triggering BUG: sleeping function called from invalid context, RCU stall, oops, or kernel panic and enabling repeatable remote denial of service against internet-facing VPN gateways."}]}],"providerMetadata":{"dateUpdated":"2026-08-27T05:01:10.597Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/0f77ed5ee91946ea63e29f2e0ff9dc9e722d8da3"},{"url":"https://git.kernel.org/stable/c/2da3dfa1ddfe55a065f484750c83660e3bd4ac00"}],"title":"ovpn: defer key slot crypto freeing to workqueue","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-74750","datePublished":"2026-08-26T14:36:58.355Z","dateReserved":"2026-08-15T05:44:03.931Z","dateUpdated":"2026-08-27T05:01:10.597Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-26 15:16:54","lastModifiedDate":"2026-08-27 06:17:26","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"},"exploitabilityScore":3.9,"impactScore":3.6}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"74750","Ordinal":"1","Title":"ovpn: defer key slot crypto freeing to workqueue","CVE":"CVE-2026-74750","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"74750","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\novpn: defer key slot crypto freeing to workqueue\n\nKey slots are released through a kref and the existing release path\nfrees the AEAD transforms from an RCU callback. That is not safe for all\ncrypto implementations: crypto_free_aead can sleep, for example when an\nasync or hardware implementation has teardown work to complete.\n\nUse queue_rcu_work for key-slot release. This keeps the RCU grace period\nneeded by lockless key-slot readers, but runs the actual crypto teardown\nfrom workqueue context where sleeping is allowed. Once the rcu_work\ncallback runs, pre-existing RCU readers are gone, and the final kref put\nalready proves that no transform user remains, so the worker can release\nthe AEAD transforms and free the slot directly.\n\nThe previous patch drains ovpn_wq during module exit, so queued key-slot\nteardown work cannot outlive module text.","Type":"Description","Title":"ovpn: defer key slot crypto freeing to workqueue"}]}}}