CVE-2026-97937 (GCVE-0-2026-97937)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:22 – Updated: 2026-09-25 14:41
VLAI
Title
ftrace: fork: Initialize function graph state before copy_exec_state()
Summary
In the Linux kernel, the following vulnerability has been resolved: ftrace: fork: Initialize function graph state before copy_exec_state() dup_task_struct() copies the parent's task_struct, including ret_stack. ftrace_graph_init_task() clears the copied function graph state, but it currently runs after copy_exec_state(). For non-CLONE_VM forks, copy_exec_state() allocates a new task_exec_state. If that allocation fails, copy_process() reaches bad_fork_free and free_task() calls ftrace_graph_exit_task(). Since the child still carries the parent's ret_stack pointer, the unwind frees the parent's active function graph return stack. The parent subsequently accesses freed memory from function_graph_enter_regs(). KASAN reports: [ 22.190920] ================================================================== [ 22.195899] BUG: KASAN: slab-use-after-free in function_graph_enter_regs+0xa76/0xb90 [ 22.200747] Write of size 8 at addr ff110000054dc0a8 by task repro/1 [ 22.205134] [ 22.210770] CPU: 0 UID: 0 PID: 1 Comm: repro Not tainted 7.2.0-07732-g9328b3b03bdc-dirty #3 PREEMPT(lazy) [ 22.212576] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 22.213750] Call Trace: [ 22.215271] <TASK> [ 22.216242] ? ftrace_stub_direct_tramp+0x10/0x10 [ 22.217774] dump_stack_lvl+0x4e/0x70 [ 22.220531] print_report+0x157/0x4b4 [ 22.223202] ? fixup_red_left+0x9/0x30 [ 22.224407] ? complete_report_info+0x83/0x110 [ 22.226679] ? function_graph_enter_regs+0xa76/0xb90 [ 22.228084] kasan_report+0xce/0x100 [ 22.230109] ? function_graph_enter_regs+0xa76/0xb90 [ 22.232860] ? stack_trace_save+0x4/0xd0 [ 22.234156] function_graph_enter_regs+0xa76/0xb90 [ 22.236090] ? kasan_save_stack+0x30/0x50 [ 22.237752] ? __pfx_function_graph_enter_regs+0x10/0x10 [ 22.238694] ? ring_buffer_lock_reserve+0x345/0xf80 [ 22.239628] ? stack_trace_save+0x4/0xd0 [ 22.242121] ? stack_trace_save+0x4/0xd0 [ 22.243588] ftrace_graph_func+0xda/0x160 [ 22.245362] ? ftrace_stub_direct_tramp+0x10/0x10 [ 22.246520] 0xffffffffa0000095 [ 22.250528] ? stack_trace_save+0x9/0xd0 [ 22.251757] ? ring_buffer_unlock_commit+0x11d/0x5c0 [ 22.253152] stack_trace_save+0x9/0xd0 [ 22.254264] kasan_save_stack+0x30/0x50 [ 22.273631] kasan_save_track+0x14/0x30 [ 22.276763] kasan_save_free_info+0x3b/0x70 [ 22.278296] __kasan_slab_free+0x43/0x70 [ 22.280157] kmem_cache_free+0xbf/0x3b0 [ 22.282963] ? ftrace_stub_direct_tramp+0x10/0x10 [ 22.284001] free_task+0xa2/0x160 [ 22.285699] ? ftrace_stub_direct_tramp+0x10/0x10 [ 22.286752] copy_process+0x2aae/0x7bc0 Initialize the child function graph state immediately after dup_task_struct(), before the first fallible operation.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 6b1c66c9cca99bf00386481c7b2aa7394c26d8b8 , < 1fadebbbf31f65beba353fa9d1373bf183e03fed (git)
Affected: 6b1c66c9cca99bf00386481c7b2aa7394c26d8b8 , < 08cacffeef8f64f1a222c93467ca84f24a46c953 (git)
guessed Create a notification for this product.
Linux Linux Affected: 7.2
Unaffected: 0 , < 7.2 (semver)
Unaffected: 7.2.7 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc3 , ≤ * (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/fork.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "1fadebbbf31f65beba353fa9d1373bf183e03fed",
              "status": "affected",
              "version": "6b1c66c9cca99bf00386481c7b2aa7394c26d8b8",
              "versionType": "git"
            },
            {
              "lessThan": "08cacffeef8f64f1a222c93467ca84f24a46c953",
              "status": "affected",
              "version": "6b1c66c9cca99bf00386481c7b2aa7394c26d8b8",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "kernel/fork.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "7.2"
            },
            {
              "lessThan": "7.2",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.7",
                  "versionStartIncluding": "7.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc3",
                  "versionStartIncluding": "7.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nftrace: fork: Initialize function graph state before copy_exec_state()\n\ndup_task_struct() copies the parent\u0027s task_struct, including ret_stack.\nftrace_graph_init_task() clears the copied function graph state, but it\ncurrently runs after copy_exec_state().\n\nFor non-CLONE_VM forks, copy_exec_state() allocates a new task_exec_state.\nIf that allocation fails, copy_process() reaches bad_fork_free and\nfree_task() calls ftrace_graph_exit_task(). Since the child still carries\nthe parent\u0027s ret_stack pointer, the unwind frees the parent\u0027s active\nfunction graph return stack. The parent subsequently accesses freed memory\nfrom function_graph_enter_regs().\n\nKASAN reports:\n\n[   22.190920] ==================================================================\n[   22.195899] BUG: KASAN: slab-use-after-free in function_graph_enter_regs+0xa76/0xb90\n[   22.200747] Write of size 8 at addr ff110000054dc0a8 by task repro/1\n[   22.205134]\n[   22.210770] CPU: 0 UID: 0 PID: 1 Comm: repro Not tainted 7.2.0-07732-g9328b3b03bdc-dirty #3 PREEMPT(lazy)\n[   22.212576] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014\n[   22.213750] Call Trace:\n[   22.215271]  \u003cTASK\u003e\n[   22.216242]  ? ftrace_stub_direct_tramp+0x10/0x10\n[   22.217774]  dump_stack_lvl+0x4e/0x70\n[   22.220531]  print_report+0x157/0x4b4\n[   22.223202]  ? fixup_red_left+0x9/0x30\n[   22.224407]  ? complete_report_info+0x83/0x110\n[   22.226679]  ? function_graph_enter_regs+0xa76/0xb90\n[   22.228084]  kasan_report+0xce/0x100\n[   22.230109]  ? function_graph_enter_regs+0xa76/0xb90\n[   22.232860]  ? stack_trace_save+0x4/0xd0\n[   22.234156]  function_graph_enter_regs+0xa76/0xb90\n[   22.236090]  ? kasan_save_stack+0x30/0x50\n[   22.237752]  ? __pfx_function_graph_enter_regs+0x10/0x10\n[   22.238694]  ? ring_buffer_lock_reserve+0x345/0xf80\n[   22.239628]  ? stack_trace_save+0x4/0xd0\n[   22.242121]  ? stack_trace_save+0x4/0xd0\n[   22.243588]  ftrace_graph_func+0xda/0x160\n[   22.245362]  ? ftrace_stub_direct_tramp+0x10/0x10\n[   22.246520]  0xffffffffa0000095\n[   22.250528]  ? stack_trace_save+0x9/0xd0\n[   22.251757]  ? ring_buffer_unlock_commit+0x11d/0x5c0\n[   22.253152]  stack_trace_save+0x9/0xd0\n[   22.254264]  kasan_save_stack+0x30/0x50\n[   22.273631]  kasan_save_track+0x14/0x30\n[   22.276763]  kasan_save_free_info+0x3b/0x70\n[   22.278296]  __kasan_slab_free+0x43/0x70\n[   22.280157]  kmem_cache_free+0xbf/0x3b0\n[   22.282963]  ? ftrace_stub_direct_tramp+0x10/0x10\n[   22.284001]  free_task+0xa2/0x160\n[   22.285699]  ? ftrace_stub_direct_tramp+0x10/0x10\n[   22.286752]  copy_process+0x2aae/0x7bc0\n\nInitialize the child function graph state immediately after\ndup_task_struct(), before the first fallible operation."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - Triggered by a local fork()/clone() without CLONE_VM entering copy_process(): copy_exec_state() -\u003e task_exec_state_copy() fails, and bad_fork_free -\u003e free_task() -\u003e ftrace_graph_exit_task() frees the ret_stack pointer the child inherited from the parent. No remote input is involved.\nAC:L - placeholder\nPR:L - placeholder\nUI:N - placeholder\nS:U - placeholder\nC:H - placeholder\nI:H - placeholder\nA:H - placeholder"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T14:41:40.998Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/1fadebbbf31f65beba353fa9d1373bf183e03fed"
        },
        {
          "url": "https://git.kernel.org/stable/c/08cacffeef8f64f1a222c93467ca84f24a46c953"
        }
      ],
      "title": "ftrace: fork: Initialize function graph state before copy_exec_state()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97937",
    "datePublished": "2026-09-25T10:22:51.075Z",
    "dateReserved": "2026-09-25T10:18:58.204Z",
    "dateUpdated": "2026-09-25T14:41:40.998Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97937",
      "date": "2026-09-27",
      "epss": "0.00154",
      "percentile": "0.03829"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "kernel/fork.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "1fadebbbf31f65beba353fa9d1373bf183e03fed",
                    "status": "affected",
                    "version": "6b1c66c9cca99bf00386481c7b2aa7394c26d8b8",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "08cacffeef8f64f1a222c93467ca84f24a46c953",
                    "status": "affected",
                    "version": "6b1c66c9cca99bf00386481c7b2aa7394c26d8b8",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "kernel/fork.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "7.2"
                  },
                  {
                    "lessThan": "7.2",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.7",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc3",
                    "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\nftrace: fork: Initialize function graph state before copy_exec_state()\n\ndup_task_struct() copies the parent\u0027s task_struct, including ret_stack.\nftrace_graph_init_task() clears the copied function graph state, but it\ncurrently runs after copy_exec_state().\n\nFor non-CLONE_VM forks, copy_exec_state() allocates a new task_exec_state.\nIf that allocation fails, copy_process() reaches bad_fork_free and\nfree_task() calls ftrace_graph_exit_task(). Since the child still carries\nthe parent\u0027s ret_stack pointer, the unwind frees the parent\u0027s active\nfunction graph return stack. The parent subsequently accesses freed memory\nfrom function_graph_enter_regs().\n\nKASAN reports:\n\n[   22.190920] ==================================================================\n[   22.195899] BUG: KASAN: slab-use-after-free in function_graph_enter_regs+0xa76/0xb90\n[   22.200747] Write of size 8 at addr ff110000054dc0a8 by task repro/1\n[   22.205134]\n[   22.210770] CPU: 0 UID: 0 PID: 1 Comm: repro Not tainted 7.2.0-07732-g9328b3b03bdc-dirty #3 PREEMPT(lazy)\n[   22.212576] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014\n[   22.213750] Call Trace:\n[   22.215271]  \u003cTASK\u003e\n[   22.216242]  ? ftrace_stub_direct_tramp+0x10/0x10\n[   22.217774]  dump_stack_lvl+0x4e/0x70\n[   22.220531]  print_report+0x157/0x4b4\n[   22.223202]  ? fixup_red_left+0x9/0x30\n[   22.224407]  ? complete_report_info+0x83/0x110\n[   22.226679]  ? function_graph_enter_regs+0xa76/0xb90\n[   22.228084]  kasan_report+0xce/0x100\n[   22.230109]  ? function_graph_enter_regs+0xa76/0xb90\n[   22.232860]  ? stack_trace_save+0x4/0xd0\n[   22.234156]  function_graph_enter_regs+0xa76/0xb90\n[   22.236090]  ? kasan_save_stack+0x30/0x50\n[   22.237752]  ? __pfx_function_graph_enter_regs+0x10/0x10\n[   22.238694]  ? ring_buffer_lock_reserve+0x345/0xf80\n[   22.239628]  ? stack_trace_save+0x4/0xd0\n[   22.242121]  ? stack_trace_save+0x4/0xd0\n[   22.243588]  ftrace_graph_func+0xda/0x160\n[   22.245362]  ? ftrace_stub_direct_tramp+0x10/0x10\n[   22.246520]  0xffffffffa0000095\n[   22.250528]  ? stack_trace_save+0x9/0xd0\n[   22.251757]  ? ring_buffer_unlock_commit+0x11d/0x5c0\n[   22.253152]  stack_trace_save+0x9/0xd0\n[   22.254264]  kasan_save_stack+0x30/0x50\n[   22.273631]  kasan_save_track+0x14/0x30\n[   22.276763]  kasan_save_free_info+0x3b/0x70\n[   22.278296]  __kasan_slab_free+0x43/0x70\n[   22.280157]  kmem_cache_free+0xbf/0x3b0\n[   22.282963]  ? ftrace_stub_direct_tramp+0x10/0x10\n[   22.284001]  free_task+0xa2/0x160\n[   22.285699]  ? ftrace_stub_direct_tramp+0x10/0x10\n[   22.286752]  copy_process+0x2aae/0x7bc0\n\nInitialize the child function graph state immediately after\ndup_task_struct(), before the first fallible operation."
          }
        ],
        "id": "CVE-2026-97937",
        "lastModified": "2026-09-25T15:18:02.577",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-25T11:17:21.080",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/08cacffeef8f64f1a222c93467ca84f24a46c953"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/1fadebbbf31f65beba353fa9d1373bf183e03fed"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



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…