CVE-2026-74750 (GCVE-0-2026-74750)

Vulnerability from cvelistv5 – Published: 2026-08-26 14:36 – Updated: 2026-08-27 05:01
VLAI
Title
ovpn: defer key slot crypto freeing to workqueue
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.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 8534731dbf2d52a539b94defd06d2a8d3514aacb , < 0f77ed5ee91946ea63e29f2e0ff9dc9e722d8da3 (git)
Affected: 8534731dbf2d52a539b94defd06d2a8d3514aacb , < 2da3dfa1ddfe55a065f484750c83660e3bd4ac00 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.16
Unaffected: 0 , < 6.16 (semver)
Unaffected: 7.1.10 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "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",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-74750",
      "date": "2026-09-01",
      "epss": "0.00359",
      "percentile": "0.28795"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-74750\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-26T15:16:54.050\",\"lastModified\":\"2026-08-27T06:17:26.000\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"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.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"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\",\"versions\":[{\"version\":\"8534731dbf2d52a539b94defd06d2a8d3514aacb\",\"lessThan\":\"0f77ed5ee91946ea63e29f2e0ff9dc9e722d8da3\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8534731dbf2d52a539b94defd06d2a8d3514aacb\",\"lessThan\":\"2da3dfa1ddfe55a065f484750c83660e3bd4ac00\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"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\",\"versions\":[{\"version\":\"6.16\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.16\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.10\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"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}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/0f77ed5ee91946ea63e29f2e0ff9dc9e722d8da3\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/2da3dfa1ddfe55a065f484750c83660e3bd4ac00\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-27T08:47:47+00:00",
      "cve": "CVE-2026-74750",
      "id": "CVE-2026-74750",
      "initial_release_date": "2026-08-26T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: ovpn: defer key slot crypto freeing to workqueue",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-74750.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…