CVE-2026-68341 (GCVE-0-2026-68341)

Vulnerability from cvelistv5 – Published: 2026-08-10 12:03 – Updated: 2026-08-17 05:03
VLAI
Title
ovpn: fix use after free in unlock_ovpn()
Summary
In the Linux kernel, the following vulnerability has been resolved: ovpn: fix use after free in unlock_ovpn() unlock_ovpn() iterates over the release_list using llist_for_each_entry() and drops the peer reference inside the loop body via ovpn_peer_put(). If this drops the last reference, the peer is eventually freed. However, llist_for_each_entry() reads peer->release_entry.next in the loop advance expression, which runs after the body. By that time the peer may have already been freed, resulting in a use after free when advancing to the next list entry. Fix this by using llist_for_each_entry_safe(), which caches the next pointer before executing the loop body.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 80747caef33d77f5c1b3d24644e6d7dae69066b5 , < 5b96227c0e8b212b74838424c929fc889aedb555 (git)
Affected: 80747caef33d77f5c1b3d24644e6d7dae69066b5 , < 4cdb209f12a89c5faf9be0c45edb90ccdf65db0c (git)
Affected: 80747caef33d77f5c1b3d24644e6d7dae69066b5 , < e1ad6fe5db719874efa45b2caf9934552e09fc43 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.16
Unaffected: 0 , < 6.16 (semver)
Unaffected: 6.18.42 , ≤ 6.18.* (semver)
Unaffected: 7.1.6 , ≤ 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/peer.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "5b96227c0e8b212b74838424c929fc889aedb555",
              "status": "affected",
              "version": "80747caef33d77f5c1b3d24644e6d7dae69066b5",
              "versionType": "git"
            },
            {
              "lessThan": "4cdb209f12a89c5faf9be0c45edb90ccdf65db0c",
              "status": "affected",
              "version": "80747caef33d77f5c1b3d24644e6d7dae69066b5",
              "versionType": "git"
            },
            {
              "lessThan": "e1ad6fe5db719874efa45b2caf9934552e09fc43",
              "status": "affected",
              "version": "80747caef33d77f5c1b3d24644e6d7dae69066b5",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ovpn/peer.c"
          ],
          "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": "6.18.*",
              "status": "unaffected",
              "version": "6.18.42",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.6",
              "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": "6.18.42",
                  "versionStartIncluding": "6.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.6",
                  "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: fix use after free in unlock_ovpn()\n\nunlock_ovpn() iterates over the release_list using llist_for_each_entry()\nand drops the peer reference inside the loop body via ovpn_peer_put().\n\nIf this drops the last reference, the peer is eventually freed. However,\nllist_for_each_entry() reads peer-\u003erelease_entry.next in the loop advance\nexpression, which runs after the body. By that time the peer may have\nalready been freed, resulting in a use after free when advancing to the\nnext list entry.\n\nFix this by using llist_for_each_entry_safe(), which caches the next\npointer before executing the loop body."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - unlock_ovpn() is reached directly from remote-peer activity: a malformed/aborted OpenVPN TCP stream schedules ovpn_tcp_peer_del_work() -\u003e ovpn_peer_del() (tcp.c:154/287/506), peer disconnect hits ovpn_tcp_close(), and remote peers falling silent make ovpn_peer_keepalive_work() queue peers onto release_list. No local action is needed to enter the vulnerable loop.\nAC:L - The attacker controls both the trigger and its repetition rate: a remote peer can force transport errors, reconnects and keepalive expiries arbitrarily often, and in MP mode can control how many peers land on release_list at once, plus generate traffic-driven allocation pressure to influence slab reuse of the freed ovpn_peer.\nPR:L - The vulnerable loop only runs for peers already installed in the kernel, which the openvpn userspace daemon does for a connected client, so the attacker acts as an established (low-privileged) VPN peer rather than an unauthenticated stranger; no administrative rights on the target are needed.\nUI:N - Peer removal and the subsequent list walk happen automatically inside the kernel\u0027s TCP error/close handling and keepalive worker; no administrator or user action on the victim host is required.\nS:U - The use-after-free corrupts kernel heap state within the same kernel security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The freed ovpn_peer is re-read to obtain the next list pointer, so a reclaimed and re-populated slab object lets the attacker steer the walk onto arbitrary memory that is then dereferenced (peer-\u003esock, peer-\u003erefcount), yielding a kernel-memory read primitive and disclosure of sensitive kernel data.\nI:H - Continuing the walk onto a stale/attacker-groomed object causes rcu_replace_pointer() writes, lock_sock() and kref_put() (a controlled decrement plus invocation of a release callback) on a bogus struct ovpn_peer, giving heap-spray-based write and control-flow-hijack potential typical of exploitable UAFs.\nA:H - Dereferencing freed or recycled memory as an ovpn_peer reliably produces oops/panic or slab corruption, taking down the VPN gateway kernel; the path is remotely repeatable, so it is a dependable denial of service."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:03:41.213Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/5b96227c0e8b212b74838424c929fc889aedb555"
        },
        {
          "url": "https://git.kernel.org/stable/c/4cdb209f12a89c5faf9be0c45edb90ccdf65db0c"
        },
        {
          "url": "https://git.kernel.org/stable/c/e1ad6fe5db719874efa45b2caf9934552e09fc43"
        }
      ],
      "title": "ovpn: fix use after free in unlock_ovpn()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-68341",
    "datePublished": "2026-08-10T12:03:17.821Z",
    "dateReserved": "2026-07-30T09:28:09.384Z",
    "dateUpdated": "2026-08-17T05:03:41.213Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-68341",
      "date": "2026-09-22",
      "epss": "0.00566",
      "percentile": "0.45729"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/ovpn/peer.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "5b96227c0e8b212b74838424c929fc889aedb555",
                    "status": "affected",
                    "version": "80747caef33d77f5c1b3d24644e6d7dae69066b5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4cdb209f12a89c5faf9be0c45edb90ccdf65db0c",
                    "status": "affected",
                    "version": "80747caef33d77f5c1b3d24644e6d7dae69066b5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e1ad6fe5db719874efa45b2caf9934552e09fc43",
                    "status": "affected",
                    "version": "80747caef33d77f5c1b3d24644e6d7dae69066b5",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/ovpn/peer.c"
                ],
                "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": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.42",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.1.*",
                    "status": "unaffected",
                    "version": "7.1.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\novpn: fix use after free in unlock_ovpn()\n\nunlock_ovpn() iterates over the release_list using llist_for_each_entry()\nand drops the peer reference inside the loop body via ovpn_peer_put().\n\nIf this drops the last reference, the peer is eventually freed. However,\nllist_for_each_entry() reads peer-\u003erelease_entry.next in the loop advance\nexpression, which runs after the body. By that time the peer may have\nalready been freed, resulting in a use after free when advancing to the\nnext list entry.\n\nFix this by using llist_for_each_entry_safe(), which caches the next\npointer before executing the loop body."
          }
        ],
        "id": "CVE-2026-68341",
        "lastModified": "2026-08-17T06:17:42.307",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 8.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 2.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-08-10T13:20:24.613",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4cdb209f12a89c5faf9be0c45edb90ccdf65db0c"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/5b96227c0e8b212b74838424c929fc889aedb555"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e1ad6fe5db719874efa45b2caf9934552e09fc43"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-31T11:22:40+00:00",
      "cve": "CVE-2026-68341",
      "id": "CVE-2026-68341",
      "initial_release_date": "2026-08-10T00:00:00+00:00",
      "product_status:known_not_affected": "277",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: ovpn: fix use after free in unlock_ovpn()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-68341.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-11T23:47:12Z",
      "cve": "CVE-2026-68341",
      "id": "CVE-2026-68341",
      "initial_release_date": "2026-08-11T23:47:12Z",
      "product_status:known_not_affected": "296",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-68341",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-68341.json",
      "version": "2"
    }
  }
}



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…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…