CVE-2026-74750 (GCVE-0-2026-74750)
Vulnerability from cvelistv5
Published
2026-08-26 14:36
Modified
2026-08-27 05:01
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
ovpn: defer key slot crypto freeing to workqueue
Key slots are released through a kref and the existing release path
frees the AEAD transforms from an RCU callback. That is not safe for all
crypto implementations: crypto_free_aead can sleep, for example when an
async or hardware implementation has teardown work to complete.
Use queue_rcu_work for key-slot release. This keeps the RCU grace period
needed by lockless key-slot readers, but runs the actual crypto teardown
from workqueue context where sleeping is allowed. Once the rcu_work
callback runs, pre-existing RCU readers are gone, and the final kref put
already proves that no transform user remains, so the worker can release
the AEAD transforms and free the slot directly.
The previous patch drains ovpn_wq during module exit, so queued key-slot
teardown work cannot outlive module text.
References
Impacted products
{
"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"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…