GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-68283 (GCVE-0-2026-68283)

Vulnerability from cvelistv5 – Published: 2026-08-10 12:02 – Updated: 2026-08-17 05:02
VLAI
Title
tracing: Fix use-after-free freeing trigger private data
Summary
In the Linux kernel, the following vulnerability has been resolved: tracing: Fix use-after-free freeing trigger private data Commit 61d445af0a7c ("tracing: Add bulk garbage collection of freeing event_trigger_data") moved the kfree() of event_trigger_data to a kthread that runs tracepoint_synchronize_unregister() before freeing. That removed the synchronization the trigger .free callbacks used to get implicitly and inline from trigger_data_free(). event_hist_trigger_free(), event_hist_trigger_named_free() and event_enable_trigger_free() free their satellite data (hist_data, cmd_ops, enable_data) right after trigger_data_free() returns. With the synchronization now deferred to the kthread, a concurrent tracepoint handler can still reach that data through the list_del_rcu()'d trigger, causing a use-after-free. The histogram teardown must stay synchronous: remove_hist_vars() and unregister_field_var_hists() have to detach a synthetic event from the histogram before the trigger-removal write returns, otherwise a following command races in and the synthetic-event removal fails with -EBUSY, as the trigger-synthetic-eprobe.tc selftest catches. Make those callbacks wait with the correct barrier - tracepoint_synchronize_unregister(), matching the free kthread - before freeing. The enable trigger has no such synchronous requirement, and a blocking synchronize there would re-serialize the path that commit deliberately deferred. Give it an optional private_data_free() callback that the free kthread runs after its grace period, and free enable_data from there.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 61d445af0a7c70018111919e47beaaee15653f2f , < b9c8a1400a3bf633f32820d184f3e05fed0f4af7 (git)
Affected: 61d445af0a7c70018111919e47beaaee15653f2f , < 79097812153b826fc156a2930ec8a90ed9edf4a2 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.19
Unaffected: 0 , < 6.19 (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": [
            "kernel/trace/trace.h",
            "kernel/trace/trace_events_hist.c",
            "kernel/trace/trace_events_trigger.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b9c8a1400a3bf633f32820d184f3e05fed0f4af7",
              "status": "affected",
              "version": "61d445af0a7c70018111919e47beaaee15653f2f",
              "versionType": "git"
            },
            {
              "lessThan": "79097812153b826fc156a2930ec8a90ed9edf4a2",
              "status": "affected",
              "version": "61d445af0a7c70018111919e47beaaee15653f2f",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "kernel/trace/trace.h",
            "kernel/trace/trace_events_hist.c",
            "kernel/trace/trace_events_trigger.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.19"
            },
            {
              "lessThan": "6.19",
              "status": "unaffected",
              "version": "0",
              "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": "7.1.6",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntracing: Fix use-after-free freeing trigger private data\n\nCommit 61d445af0a7c (\"tracing: Add bulk garbage collection of freeing\nevent_trigger_data\") moved the kfree() of event_trigger_data to a kthread\nthat runs tracepoint_synchronize_unregister() before freeing. That removed\nthe synchronization the trigger .free callbacks used to get implicitly and\ninline from trigger_data_free().\n\nevent_hist_trigger_free(), event_hist_trigger_named_free() and\nevent_enable_trigger_free() free their satellite data (hist_data, cmd_ops,\nenable_data) right after trigger_data_free() returns. With the\nsynchronization now deferred to the kthread, a concurrent tracepoint\nhandler can still reach that data through the list_del_rcu()\u0027d trigger,\ncausing a use-after-free.\n\nThe histogram teardown must stay synchronous: remove_hist_vars() and\nunregister_field_var_hists() have to detach a synthetic event from the\nhistogram before the trigger-removal write returns, otherwise a following\ncommand races in and the synthetic-event removal fails with -EBUSY, as the\ntrigger-synthetic-eprobe.tc selftest catches. Make those callbacks wait\nwith the correct barrier - tracepoint_synchronize_unregister(), matching\nthe free kthread - before freeing.\n\nThe enable trigger has no such synchronous requirement, and a blocking\nsynchronize there would re-serialize the path that commit deliberately\ndeferred. Give it an optional private_data_free() callback that the free\nkthread runs after its grace period, and free enable_data from there."
        }
      ],
      "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 - Placeholder.\nAC:L - The attacker controls both sides of the race: one thread writes \u0027!hist:\u0027/\u0027!enable_event:\u0027 to remove the trigger while another continuously fires the traced event, so an in-flight event_triggers_call() reader reliably touches hist_data/enable_data after they are freed inline.\nPR:L - Registering and removing triggers only needs write access to tracefs (TRACE_MODE_WRITE, DAC plus LOCKDOWN_TRACEFS, no capable() gate), which realistic deployments such as Android/perfetto, ChromeOS and gid=tracing mounts grant to unprivileged tracing users.\nUI:N - The attacker performs both the trigger removal and the event generation itself; no separate victim action is required.\nS:U - The use-after-free corrupts kernel heap memory within the same OS security authority and does not cross a VM, IOMMU, or sandbox boundary.\nC:H - A concurrent handler dereferences the freed hist_trigger_data (n_keys, fields[], key_size, tracing_map) and the freed enable_trigger_data-\u003efile, so reclaimed heap contents are read and can be reflected back through histogram output, giving arbitrary kernel memory disclosure.\nI:H - event_hist_trigger() writes into freed tracing_map elements and event_enable_trigger() writes event-file flags through a pointer read from freed enable_data, so heap spraying the reclaimed objects yields a controlled write primitive suitable for privilege escalation.\nA:H - Use-after-free of hist_data/cmd_ops/enable_data readily causes oops or panic in tracepoint context even without successful exploitation, and the race can be re-triggered at will."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:02:18.147Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b9c8a1400a3bf633f32820d184f3e05fed0f4af7"
        },
        {
          "url": "https://git.kernel.org/stable/c/79097812153b826fc156a2930ec8a90ed9edf4a2"
        }
      ],
      "title": "tracing: Fix use-after-free freeing trigger private data",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-68283",
    "datePublished": "2026-08-10T12:02:15.088Z",
    "dateReserved": "2026-07-30T09:28:09.379Z",
    "dateUpdated": "2026-08-17T05:02:18.147Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-68283",
      "date": "2026-09-16",
      "epss": "0.00374",
      "percentile": "0.31057"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-68283\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-10T13:20:17.563\",\"lastModified\":\"2026-08-17T05:18:30.910\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ntracing: Fix use-after-free freeing trigger private data\\n\\nCommit 61d445af0a7c (\\\"tracing: Add bulk garbage collection of freeing\\nevent_trigger_data\\\") moved the kfree() of event_trigger_data to a kthread\\nthat runs tracepoint_synchronize_unregister() before freeing. That removed\\nthe synchronization the trigger .free callbacks used to get implicitly and\\ninline from trigger_data_free().\\n\\nevent_hist_trigger_free(), event_hist_trigger_named_free() and\\nevent_enable_trigger_free() free their satellite data (hist_data, cmd_ops,\\nenable_data) right after trigger_data_free() returns. With the\\nsynchronization now deferred to the kthread, a concurrent tracepoint\\nhandler can still reach that data through the list_del_rcu()\u0027d trigger,\\ncausing a use-after-free.\\n\\nThe histogram teardown must stay synchronous: remove_hist_vars() and\\nunregister_field_var_hists() have to detach a synthetic event from the\\nhistogram before the trigger-removal write returns, otherwise a following\\ncommand races in and the synthetic-event removal fails with -EBUSY, as the\\ntrigger-synthetic-eprobe.tc selftest catches. Make those callbacks wait\\nwith the correct barrier - tracepoint_synchronize_unregister(), matching\\nthe free kthread - before freeing.\\n\\nThe enable trigger has no such synchronous requirement, and a blocking\\nsynchronize there would re-serialize the path that commit deliberately\\ndeferred. Give it an optional private_data_free() callback that the free\\nkthread runs after its grace period, and free enable_data from there.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"kernel/trace/trace.h\",\"kernel/trace/trace_events_hist.c\",\"kernel/trace/trace_events_trigger.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"61d445af0a7c70018111919e47beaaee15653f2f\",\"lessThan\":\"b9c8a1400a3bf633f32820d184f3e05fed0f4af7\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"61d445af0a7c70018111919e47beaaee15653f2f\",\"lessThan\":\"79097812153b826fc156a2930ec8a90ed9edf4a2\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"kernel/trace/trace.h\",\"kernel/trace/trace_events_hist.c\",\"kernel/trace/trace_events_trigger.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.19\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.19\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.6\",\"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:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":8.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/79097812153b826fc156a2930ec8a90ed9edf4a2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b9c8a1400a3bf633f32820d184f3e05fed0f4af7\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-31T11:20:58+00:00",
      "cve": "CVE-2026-68283",
      "id": "CVE-2026-68283",
      "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: tracing: Fix use-after-free freeing trigger private data",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-68283.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-15T01:37:15Z",
      "cve": "CVE-2026-68283",
      "id": "CVE-2026-68283",
      "initial_release_date": "2026-08-22T00:54:58Z",
      "product_status:known_affected": "374",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-68283",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-68283.json",
      "version": "4"
    }
  }
}



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…

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…