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

CVE-2024-26944 (GCVE-0-2024-26944)

Vulnerability from cvelistv5 – Published: 2024-05-01 05:18 – Updated: 2026-08-05 11:28
VLAI
Title
btrfs: zoned: fix use-after-free in do_zone_finish()
Summary
In the Linux kernel, the following vulnerability has been resolved: btrfs: zoned: fix use-after-free in do_zone_finish() Shinichiro reported the following use-after-free triggered by the device replace operation in fstests btrfs/070. BTRFS info (device nullb1): scrub: finished on devid 1 with status: 0 ================================================================== BUG: KASAN: slab-use-after-free in do_zone_finish+0x91a/0xb90 [btrfs] Read of size 8 at addr ffff8881543c8060 by task btrfs-cleaner/3494007 CPU: 0 PID: 3494007 Comm: btrfs-cleaner Tainted: G W 6.8.0-rc5-kts #1 Hardware name: Supermicro Super Server/X11SPi-TF, BIOS 3.3 02/21/2020 Call Trace: <TASK> dump_stack_lvl+0x5b/0x90 print_report+0xcf/0x670 ? __virt_addr_valid+0x200/0x3e0 kasan_report+0xd8/0x110 ? do_zone_finish+0x91a/0xb90 [btrfs] ? do_zone_finish+0x91a/0xb90 [btrfs] do_zone_finish+0x91a/0xb90 [btrfs] btrfs_delete_unused_bgs+0x5e1/0x1750 [btrfs] ? __pfx_btrfs_delete_unused_bgs+0x10/0x10 [btrfs] ? btrfs_put_root+0x2d/0x220 [btrfs] ? btrfs_clean_one_deleted_snapshot+0x299/0x430 [btrfs] cleaner_kthread+0x21e/0x380 [btrfs] ? __pfx_cleaner_kthread+0x10/0x10 [btrfs] kthread+0x2e3/0x3c0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x31/0x70 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1b/0x30 </TASK> Allocated by task 3493983: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 __kasan_kmalloc+0xaa/0xb0 btrfs_alloc_device+0xb3/0x4e0 [btrfs] device_list_add.constprop.0+0x993/0x1630 [btrfs] btrfs_scan_one_device+0x219/0x3d0 [btrfs] btrfs_control_ioctl+0x26e/0x310 [btrfs] __x64_sys_ioctl+0x134/0x1b0 do_syscall_64+0x99/0x190 entry_SYSCALL_64_after_hwframe+0x6e/0x76 Freed by task 3494056: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 kasan_save_free_info+0x3f/0x60 poison_slab_object+0x102/0x170 __kasan_slab_free+0x32/0x70 kfree+0x11b/0x320 btrfs_rm_dev_replace_free_srcdev+0xca/0x280 [btrfs] btrfs_dev_replace_finishing+0xd7e/0x14f0 [btrfs] btrfs_dev_replace_by_ioctl+0x1286/0x25a0 [btrfs] btrfs_ioctl+0xb27/0x57d0 [btrfs] __x64_sys_ioctl+0x134/0x1b0 do_syscall_64+0x99/0x190 entry_SYSCALL_64_after_hwframe+0x6e/0x76 The buggy address belongs to the object at ffff8881543c8000 which belongs to the cache kmalloc-1k of size 1024 The buggy address is located 96 bytes inside of freed 1024-byte region [ffff8881543c8000, ffff8881543c8400) The buggy address belongs to the physical page: page:00000000fe2c1285 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1543c8 head:00000000fe2c1285 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0 flags: 0x17ffffc0000840(slab|head|node=0|zone=2|lastcpupid=0x1fffff) page_type: 0xffffffff() raw: 0017ffffc0000840 ffff888100042dc0 ffffea0019e8f200 dead000000000002 raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000 page dumped because: kasan: bad access detected Memory state around the buggy address: ffff8881543c7f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff8881543c7f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >ffff8881543c8000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff8881543c8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff8881543c8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb This UAF happens because we're accessing stale zone information of a already removed btrfs_device in do_zone_finish(). The sequence of events is as follows: btrfs_dev_replace_start btrfs_scrub_dev btrfs_dev_replace_finishing btrfs_dev_replace_update_device_in_mapping_tree <-- devices replaced btrfs_rm_dev_replace_free_srcdev btrfs_free_device <-- device freed cleaner_kthread btrfs_delete_unused_bgs btrfs_zone_finish do_zone_finish <-- refers the freed device The reason for this is that we're using a ---truncated---
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2024-05-28 17:52 UTC
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 4dcbb8ab31c1292aea6a3f240e19523f633320c2 , < 34ca809e055eca5cfe63d9c7efbf80b7c21b4e57 (git)
Affected: 4dcbb8ab31c1292aea6a3f240e19523f633320c2 , < 1ec17ef59168a1a6f1105f5dc517f783839a5302 (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.18
Unaffected: 0 , < 5.18 (semver)
Unaffected: 6.8.3 , ≤ 6.8.* (semver)
Unaffected: 6.9 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-26944",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-05-28T17:52:17.817601Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-04T17:49:14.503Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T00:21:05.525Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/34ca809e055eca5cfe63d9c7efbf80b7c21b4e57"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/1ec17ef59168a1a6f1105f5dc517f783839a5302"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/btrfs/zoned.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "34ca809e055eca5cfe63d9c7efbf80b7c21b4e57",
              "status": "affected",
              "version": "4dcbb8ab31c1292aea6a3f240e19523f633320c2",
              "versionType": "git"
            },
            {
              "lessThan": "1ec17ef59168a1a6f1105f5dc517f783839a5302",
              "status": "affected",
              "version": "4dcbb8ab31c1292aea6a3f240e19523f633320c2",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/btrfs/zoned.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.18"
            },
            {
              "lessThan": "5.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.8.*",
              "status": "unaffected",
              "version": "6.8.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.9",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8.3",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.9",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbtrfs: zoned: fix use-after-free in do_zone_finish()\n\nShinichiro reported the following use-after-free triggered by the device\nreplace operation in fstests btrfs/070.\n\n BTRFS info (device nullb1): scrub: finished on devid 1 with status: 0\n ==================================================================\n BUG: KASAN: slab-use-after-free in do_zone_finish+0x91a/0xb90 [btrfs]\n Read of size 8 at addr ffff8881543c8060 by task btrfs-cleaner/3494007\n\n CPU: 0 PID: 3494007 Comm: btrfs-cleaner Tainted: G        W          6.8.0-rc5-kts #1\n Hardware name: Supermicro Super Server/X11SPi-TF, BIOS 3.3 02/21/2020\n Call Trace:\n  \u003cTASK\u003e\n  dump_stack_lvl+0x5b/0x90\n  print_report+0xcf/0x670\n  ? __virt_addr_valid+0x200/0x3e0\n  kasan_report+0xd8/0x110\n  ? do_zone_finish+0x91a/0xb90 [btrfs]\n  ? do_zone_finish+0x91a/0xb90 [btrfs]\n  do_zone_finish+0x91a/0xb90 [btrfs]\n  btrfs_delete_unused_bgs+0x5e1/0x1750 [btrfs]\n  ? __pfx_btrfs_delete_unused_bgs+0x10/0x10 [btrfs]\n  ? btrfs_put_root+0x2d/0x220 [btrfs]\n  ? btrfs_clean_one_deleted_snapshot+0x299/0x430 [btrfs]\n  cleaner_kthread+0x21e/0x380 [btrfs]\n  ? __pfx_cleaner_kthread+0x10/0x10 [btrfs]\n  kthread+0x2e3/0x3c0\n  ? __pfx_kthread+0x10/0x10\n  ret_from_fork+0x31/0x70\n  ? __pfx_kthread+0x10/0x10\n  ret_from_fork_asm+0x1b/0x30\n  \u003c/TASK\u003e\n\n Allocated by task 3493983:\n  kasan_save_stack+0x33/0x60\n  kasan_save_track+0x14/0x30\n  __kasan_kmalloc+0xaa/0xb0\n  btrfs_alloc_device+0xb3/0x4e0 [btrfs]\n  device_list_add.constprop.0+0x993/0x1630 [btrfs]\n  btrfs_scan_one_device+0x219/0x3d0 [btrfs]\n  btrfs_control_ioctl+0x26e/0x310 [btrfs]\n  __x64_sys_ioctl+0x134/0x1b0\n  do_syscall_64+0x99/0x190\n  entry_SYSCALL_64_after_hwframe+0x6e/0x76\n\n Freed by task 3494056:\n  kasan_save_stack+0x33/0x60\n  kasan_save_track+0x14/0x30\n  kasan_save_free_info+0x3f/0x60\n  poison_slab_object+0x102/0x170\n  __kasan_slab_free+0x32/0x70\n  kfree+0x11b/0x320\n  btrfs_rm_dev_replace_free_srcdev+0xca/0x280 [btrfs]\n  btrfs_dev_replace_finishing+0xd7e/0x14f0 [btrfs]\n  btrfs_dev_replace_by_ioctl+0x1286/0x25a0 [btrfs]\n  btrfs_ioctl+0xb27/0x57d0 [btrfs]\n  __x64_sys_ioctl+0x134/0x1b0\n  do_syscall_64+0x99/0x190\n  entry_SYSCALL_64_after_hwframe+0x6e/0x76\n\n The buggy address belongs to the object at ffff8881543c8000\n  which belongs to the cache kmalloc-1k of size 1024\n The buggy address is located 96 bytes inside of\n  freed 1024-byte region [ffff8881543c8000, ffff8881543c8400)\n\n The buggy address belongs to the physical page:\n page:00000000fe2c1285 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1543c8\n head:00000000fe2c1285 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0\n flags: 0x17ffffc0000840(slab|head|node=0|zone=2|lastcpupid=0x1fffff)\n page_type: 0xffffffff()\n raw: 0017ffffc0000840 ffff888100042dc0 ffffea0019e8f200 dead000000000002\n raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000\n page dumped because: kasan: bad access detected\n\n Memory state around the buggy address:\n  ffff8881543c7f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n  ffff8881543c7f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n \u003effff8881543c8000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\n                                                        ^\n  ffff8881543c8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\n  ffff8881543c8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\n\nThis UAF happens because we\u0027re accessing stale zone information of a\nalready removed btrfs_device in do_zone_finish().\n\nThe sequence of events is as follows:\n\nbtrfs_dev_replace_start\n  btrfs_scrub_dev\n   btrfs_dev_replace_finishing\n    btrfs_dev_replace_update_device_in_mapping_tree \u003c-- devices replaced\n    btrfs_rm_dev_replace_free_srcdev\n     btrfs_free_device                              \u003c-- device freed\n\ncleaner_kthread\n btrfs_delete_unused_bgs\n  btrfs_zone_finish\n   do_zone_finish              \u003c-- refers the freed device\n\nThe reason for this is that we\u0027re using a\n---truncated---"
        }
      ],
      "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 - The vulnerability is reached through ordinary local filesystem activity (writes, deletions, ordered-extent completion, unused-block-group cleanup) on a mounted zoned btrfs; there is no network-facing component.\nAC:L - Once a device replace has completed, `block_group-\u003ephysical_map` holds a permanently dangling `btrfs_device` pointer, so triggering `do_zone_finish()` via ordinary file I/O is deterministic and requires winning no race; the reporter reproduced it with a stock fstests run (btrfs/070).\nPR:L - The attacker needs only write access to the mounted zoned btrfs to drive `btrfs_zone_finish_endio()`/`btrfs_delete_unused_bgs()` into the freed device, and can additionally groom the kmalloc-1k slab from unprivileged context; the CAP_SYS_ADMIN device replace that creates the dangling pointer is routine admin maintenance (the primary use case for zoned btrfs on SMR drives), not a privilege the attacker must hold.\nUI:N - After the stale pointer exists, the btrfs cleaner kthread and normal write-completion paths call `do_zone_finish()` automatically, and the attacker can force them with their own file operations without any victim action.\nS:U - The corruption is confined to kernel slab memory within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The freed 1KB `btrfs_device` and `btrfs_zoned_device_info` objects are read after free, and slab grooming lets the attacker control the reallocated contents, turning `device-\u003ezone_info`/`device-\u003ebdev` dereferences into an attacker-directed kernel read primitive.\nI:H - `do_zone_finish()` performs UAF writes \u2014 `zinfo-\u003ereserved_active_zones++`, `atomic_inc(\u0026zone_info-\u003eactive_zones_left)`, and `test_and_clear_bit(zno, zone_info-\u003eactive_zones)` with pointer and index both taken from freed memory \u2014 giving a controllable write/bit-clear primitive usable for control-flow hijacking, plus zone-management commands issued through a dangling `bdev`.\nA:H - The bug is a KASAN-confirmed slab use-after-free in the btrfs cleaner kthread that reliably oopses or panics the kernel, and it also drives blkdev_zone_mgmt() with freed block-device state."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:28:29.917Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/34ca809e055eca5cfe63d9c7efbf80b7c21b4e57"
        },
        {
          "url": "https://git.kernel.org/stable/c/1ec17ef59168a1a6f1105f5dc517f783839a5302"
        }
      ],
      "title": "btrfs: zoned: fix use-after-free in do_zone_finish()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-26944",
    "datePublished": "2024-05-01T05:18:04.909Z",
    "dateReserved": "2024-02-19T14:20:24.197Z",
    "dateUpdated": "2026-08-05T11:28:29.917Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2024-26944",
      "date": "2026-09-16",
      "epss": "0.00227",
      "percentile": "0.1353"
    },
    "fkie_nvd": {
      "configurations": "[{\"nodes\": [{\"operator\": \"OR\", \"negate\": false, \"cpeMatch\": [{\"vulnerable\": true, \"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"versionEndExcluding\": \"6.8.3\", \"matchCriteriaId\": \"45CAC835-1C61-4C27-A919-EF08207D3099\"}, {\"vulnerable\": true, \"criteria\": \"cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*\", \"matchCriteriaId\": \"22BEDD49-2C6D-402D-9DBF-6646F6ECD10B\"}]}]}]",
      "descriptions": "[{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nbtrfs: zoned: fix use-after-free in do_zone_finish()\\n\\nShinichiro reported the following use-after-free triggered by the device\\nreplace operation in fstests btrfs/070.\\n\\n BTRFS info (device nullb1): scrub: finished on devid 1 with status: 0\\n ==================================================================\\n BUG: KASAN: slab-use-after-free in do_zone_finish+0x91a/0xb90 [btrfs]\\n Read of size 8 at addr ffff8881543c8060 by task btrfs-cleaner/3494007\\n\\n CPU: 0 PID: 3494007 Comm: btrfs-cleaner Tainted: G        W          6.8.0-rc5-kts #1\\n Hardware name: Supermicro Super Server/X11SPi-TF, BIOS 3.3 02/21/2020\\n Call Trace:\\n  \u003cTASK\u003e\\n  dump_stack_lvl+0x5b/0x90\\n  print_report+0xcf/0x670\\n  ? __virt_addr_valid+0x200/0x3e0\\n  kasan_report+0xd8/0x110\\n  ? do_zone_finish+0x91a/0xb90 [btrfs]\\n  ? do_zone_finish+0x91a/0xb90 [btrfs]\\n  do_zone_finish+0x91a/0xb90 [btrfs]\\n  btrfs_delete_unused_bgs+0x5e1/0x1750 [btrfs]\\n  ? __pfx_btrfs_delete_unused_bgs+0x10/0x10 [btrfs]\\n  ? btrfs_put_root+0x2d/0x220 [btrfs]\\n  ? btrfs_clean_one_deleted_snapshot+0x299/0x430 [btrfs]\\n  cleaner_kthread+0x21e/0x380 [btrfs]\\n  ? __pfx_cleaner_kthread+0x10/0x10 [btrfs]\\n  kthread+0x2e3/0x3c0\\n  ? __pfx_kthread+0x10/0x10\\n  ret_from_fork+0x31/0x70\\n  ? __pfx_kthread+0x10/0x10\\n  ret_from_fork_asm+0x1b/0x30\\n  \u003c/TASK\u003e\\n\\n Allocated by task 3493983:\\n  kasan_save_stack+0x33/0x60\\n  kasan_save_track+0x14/0x30\\n  __kasan_kmalloc+0xaa/0xb0\\n  btrfs_alloc_device+0xb3/0x4e0 [btrfs]\\n  device_list_add.constprop.0+0x993/0x1630 [btrfs]\\n  btrfs_scan_one_device+0x219/0x3d0 [btrfs]\\n  btrfs_control_ioctl+0x26e/0x310 [btrfs]\\n  __x64_sys_ioctl+0x134/0x1b0\\n  do_syscall_64+0x99/0x190\\n  entry_SYSCALL_64_after_hwframe+0x6e/0x76\\n\\n Freed by task 3494056:\\n  kasan_save_stack+0x33/0x60\\n  kasan_save_track+0x14/0x30\\n  kasan_save_free_info+0x3f/0x60\\n  poison_slab_object+0x102/0x170\\n  __kasan_slab_free+0x32/0x70\\n  kfree+0x11b/0x320\\n  btrfs_rm_dev_replace_free_srcdev+0xca/0x280 [btrfs]\\n  btrfs_dev_replace_finishing+0xd7e/0x14f0 [btrfs]\\n  btrfs_dev_replace_by_ioctl+0x1286/0x25a0 [btrfs]\\n  btrfs_ioctl+0xb27/0x57d0 [btrfs]\\n  __x64_sys_ioctl+0x134/0x1b0\\n  do_syscall_64+0x99/0x190\\n  entry_SYSCALL_64_after_hwframe+0x6e/0x76\\n\\n The buggy address belongs to the object at ffff8881543c8000\\n  which belongs to the cache kmalloc-1k of size 1024\\n The buggy address is located 96 bytes inside of\\n  freed 1024-byte region [ffff8881543c8000, ffff8881543c8400)\\n\\n The buggy address belongs to the physical page:\\n page:00000000fe2c1285 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1543c8\\n head:00000000fe2c1285 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0\\n flags: 0x17ffffc0000840(slab|head|node=0|zone=2|lastcpupid=0x1fffff)\\n page_type: 0xffffffff()\\n raw: 0017ffffc0000840 ffff888100042dc0 ffffea0019e8f200 dead000000000002\\n raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000\\n page dumped because: kasan: bad access detected\\n\\n Memory state around the buggy address:\\n  ffff8881543c7f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\\n  ffff8881543c7f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\\n \u003effff8881543c8000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n                                                        ^\\n  ffff8881543c8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n  ffff8881543c8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n\\nThis UAF happens because we\u0027re accessing stale zone information of a\\nalready removed btrfs_device in do_zone_finish().\\n\\nThe sequence of events is as follows:\\n\\nbtrfs_dev_replace_start\\n  btrfs_scrub_dev\\n   btrfs_dev_replace_finishing\\n    btrfs_dev_replace_update_device_in_mapping_tree \u003c-- devices replaced\\n    btrfs_rm_dev_replace_free_srcdev\\n     btrfs_free_device                              \u003c-- device freed\\n\\ncleaner_kthread\\n btrfs_delete_unused_bgs\\n  btrfs_zone_finish\\n   do_zone_finish              \u003c-- refers the freed device\\n\\nThe reason for this is that we\u0027re using a\\n---truncated---\"}, {\"lang\": \"es\", \"value\": \"En el kernel de Linux, se resolvi\\u00f3 la siguiente vulnerabilidad: btrfs:zoned: corrige use-after-free en do_zone_finish() Shinichiro inform\\u00f3 el siguiente use-after-free desencadenado por la operaci\\u00f3n de reemplazo de dispositivo en fstests btrfs/070. Informaci\\u00f3n BTRFS (dispositivo nullb1): limpieza: finalizado en el dispositivo 1 con estado: 0 ================================== ================================= ERROR: KASAN: uso de losa despu\\u00e9s de liberarlo en do_zone_finish+0x91a/0xb90 [btrfs] Lectura del tama\\u00f1o 8 en la direcci\\u00f3n ffff8881543c8060 mediante la tarea btrfs-cleaner/3494007 CPU: 0 PID: 3494007 Comm: btrfs-cleaner Contaminado: GW 6.8.0-rc5-kts #1 Nombre del hardware: Supermicro Super Server/X11SPi-TF , BIOS 3.3 21/02/2020 Seguimiento de llamadas:  dump_stack_lvl+0x5b/0x90 print_report+0xcf/0x670 ? __virt_addr_valid+0x200/0x3e0 kasan_report+0xd8/0x110 ? do_zone_finish+0x91a/0xb90 [btrfs]? do_zone_finish+0x91a/0xb90 [btrfs] do_zone_finish+0x91a/0xb90 [btrfs] btrfs_delete_unused_bgs+0x5e1/0x1750 [btrfs] ? __pfx_btrfs_delete_unused_bgs+0x10/0x10 [btrfs] ? btrfs_put_root+0x2d/0x220 [btrfs] ? btrfs_clean_one_deleted_snapshot+0x299/0x430 [btrfs] clean_kthread+0x21e/0x380 [btrfs] ? __pfx_cleaner_kthread+0x10/0x10 [btrfs] kthread+0x2e3/0x3c0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x31/0x70 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1b/0x30  Asignado por tarea 3493983: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 __kasan_kmalloc+0xaa/0xb0 btrfs_alloc_device+0x b3/0x4e0 [btrfs] lista_dispositivo_add.constprop.0+0x993/ 0x1630 [btrfs] btrfs_scan_one_device+0x219/0x3d0 [btrfs] btrfs_control_ioctl+0x26e/0x310 [btrfs] __x64_sys_ioctl+0x134/0x1b0 do_syscall_64+0x99/0x190 entrada_SYSCALL_6 4_after_hwframe+0x6e/0x76 Liberado por la tarea 3494056: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 kasan_save_free_info+0x3f/0x60 veneno_slab_object+0x102/0x170 __kasan_slab_free+0x32/0x70 kfree+0x11b/0x320 btrfs_rm_dev_replace_free_srcdev+0xca/0x280 [btrfs_dev_replace_finishing+0xd 7e/0x14f0 [btrfs] btrfs_dev_replace_by_ioctl+0x1286/0x25a0 [btrfs] btrfs_ioctl+0xb27/0x57d0 [ btrfs] __x64_sys_ioctl+0x134/0x1b0 do_syscall_64+0x99/0x190 Entry_SYSCALL_64_after_hwframe+0x6e/0x76 La direcci\\u00f3n con errores pertenece al objeto en ffff8881543c8000 que pertenece al cach\\u00e9 kmalloc-1k de tama\\u00f1o 1024 Se encuentra la direcci\\u00f3n con errores 96 bytes dentro de los 1024 bytes liberados regi\\u00f3n [ffff8881543c8000, ffff8881543c8400) La direcci\\u00f3n del error pertenece a la p\\u00e1gina f\\u00edsica: p\\u00e1gina:00000000fe2c1285 refcount:1 mapcount:0 mapeo:00000000000000000 index:0x0 pfn:0x1543c8 head:00000000fe2c1285 entero_mapcount:0 nr_pages_mapped:0 pincount:0 banderas: 0x17ffffc0000840(slab|head|node=0|zone=2|lastcpupid=0x1fffff) tipo de p\\u00e1gina: 0xffffffff() raw: 0017ffffc0000840 ffff888100042dc0 ffffea0019e8f200 dead000000000002 raw: 0000000000 0000000000100010 00000001ffffffff 0000000000000000 p\\u00e1gina volcada porque: kasan: mal acceso detectado Estado de la memoria alrededor de la direcci\\u00f3n con errores : ffff8881543c7f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff8881543c7f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \u0026gt;ffff8881543c8000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff8881543c8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff8881543c8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb Esta UAF sucede porque estamos acceder a informaci\\u00f3n de zona obsoleta de un btrfs_device ya eliminado en do_zone_finish(). La secuencia de eventos es la siguiente: btrfs_dev_replace_start btrfs_scrub_dev btrfs_dev_replace_finishing btrfs_dev_replace_update_device_in_mapping_tree \u0026lt;-- dispositivos reemplazados btrfs_rm_dev_replace_free_srcdev btrfs_free_device \u0026lt;-- dispositivo liberado clean_kthread btrfs_delete_unused_ bgs btrfs_zone_finish do_zone_finish \u0026lt;-- hace referencia al dispositivo liberado. La raz\\u00f3n de esto es que estamos usando un ---truncado ---\"}]",
      "id": "CVE-2024-26944",
      "lastModified": "2025-01-14T14:29:21.517",
      "metrics": "{\"cvssMetricV31\": [{\"source\": \"nvd@nist.gov\", \"type\": \"Primary\", \"cvssData\": {\"version\": \"3.1\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\", \"baseScore\": 7.8, \"baseSeverity\": \"HIGH\", \"attackVector\": \"LOCAL\", \"attackComplexity\": \"LOW\", \"privilegesRequired\": \"LOW\", \"userInteraction\": \"NONE\", \"scope\": \"UNCHANGED\", \"confidentialityImpact\": \"HIGH\", \"integrityImpact\": \"HIGH\", \"availabilityImpact\": \"HIGH\"}, \"exploitabilityScore\": 1.8, \"impactScore\": 5.9}]}",
      "published": "2024-05-01T06:15:10.010",
      "references": "[{\"url\": \"https://git.kernel.org/stable/c/1ec17ef59168a1a6f1105f5dc517f783839a5302\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"tags\": [\"Patch\"]}, {\"url\": \"https://git.kernel.org/stable/c/34ca809e055eca5cfe63d9c7efbf80b7c21b4e57\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"tags\": [\"Patch\"]}, {\"url\": \"https://git.kernel.org/stable/c/1ec17ef59168a1a6f1105f5dc517f783839a5302\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\", \"tags\": [\"Patch\"]}, {\"url\": \"https://git.kernel.org/stable/c/34ca809e055eca5cfe63d9c7efbf80b7c21b4e57\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\", \"tags\": [\"Patch\"]}]",
      "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "vulnStatus": "Analyzed",
      "weaknesses": "[{\"source\": \"nvd@nist.gov\", \"type\": \"Primary\", \"description\": [{\"lang\": \"en\", \"value\": \"CWE-416\"}]}]"
    },
    "microsoft_vex": {
      "current_release_date": "2026-06-28T02:03:22.000Z",
      "cve": "CVE-2024-26944",
      "id": "msrc_CVE-2024-26944",
      "initial_release_date": "2024-05-02T07:00:00.000Z",
      "product_status:known_affected": "17",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "btrfs: zoned: fix use-after-free in do_zone_finish()",
      "url": "https://msrc.microsoft.com/csaf/vex/2024/msrc_cve-2024-26944.json",
      "version": "14"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2024-26944\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-05-01T06:15:10.010\",\"lastModified\":\"2026-08-04T11:17:24.413\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nbtrfs: zoned: fix use-after-free in do_zone_finish()\\n\\nShinichiro reported the following use-after-free triggered by the device\\nreplace operation in fstests btrfs/070.\\n\\n BTRFS info (device nullb1): scrub: finished on devid 1 with status: 0\\n ==================================================================\\n BUG: KASAN: slab-use-after-free in do_zone_finish+0x91a/0xb90 [btrfs]\\n Read of size 8 at addr ffff8881543c8060 by task btrfs-cleaner/3494007\\n\\n CPU: 0 PID: 3494007 Comm: btrfs-cleaner Tainted: G        W          6.8.0-rc5-kts #1\\n Hardware name: Supermicro Super Server/X11SPi-TF, BIOS 3.3 02/21/2020\\n Call Trace:\\n  \u003cTASK\u003e\\n  dump_stack_lvl+0x5b/0x90\\n  print_report+0xcf/0x670\\n  ? __virt_addr_valid+0x200/0x3e0\\n  kasan_report+0xd8/0x110\\n  ? do_zone_finish+0x91a/0xb90 [btrfs]\\n  ? do_zone_finish+0x91a/0xb90 [btrfs]\\n  do_zone_finish+0x91a/0xb90 [btrfs]\\n  btrfs_delete_unused_bgs+0x5e1/0x1750 [btrfs]\\n  ? __pfx_btrfs_delete_unused_bgs+0x10/0x10 [btrfs]\\n  ? btrfs_put_root+0x2d/0x220 [btrfs]\\n  ? btrfs_clean_one_deleted_snapshot+0x299/0x430 [btrfs]\\n  cleaner_kthread+0x21e/0x380 [btrfs]\\n  ? __pfx_cleaner_kthread+0x10/0x10 [btrfs]\\n  kthread+0x2e3/0x3c0\\n  ? __pfx_kthread+0x10/0x10\\n  ret_from_fork+0x31/0x70\\n  ? __pfx_kthread+0x10/0x10\\n  ret_from_fork_asm+0x1b/0x30\\n  \u003c/TASK\u003e\\n\\n Allocated by task 3493983:\\n  kasan_save_stack+0x33/0x60\\n  kasan_save_track+0x14/0x30\\n  __kasan_kmalloc+0xaa/0xb0\\n  btrfs_alloc_device+0xb3/0x4e0 [btrfs]\\n  device_list_add.constprop.0+0x993/0x1630 [btrfs]\\n  btrfs_scan_one_device+0x219/0x3d0 [btrfs]\\n  btrfs_control_ioctl+0x26e/0x310 [btrfs]\\n  __x64_sys_ioctl+0x134/0x1b0\\n  do_syscall_64+0x99/0x190\\n  entry_SYSCALL_64_after_hwframe+0x6e/0x76\\n\\n Freed by task 3494056:\\n  kasan_save_stack+0x33/0x60\\n  kasan_save_track+0x14/0x30\\n  kasan_save_free_info+0x3f/0x60\\n  poison_slab_object+0x102/0x170\\n  __kasan_slab_free+0x32/0x70\\n  kfree+0x11b/0x320\\n  btrfs_rm_dev_replace_free_srcdev+0xca/0x280 [btrfs]\\n  btrfs_dev_replace_finishing+0xd7e/0x14f0 [btrfs]\\n  btrfs_dev_replace_by_ioctl+0x1286/0x25a0 [btrfs]\\n  btrfs_ioctl+0xb27/0x57d0 [btrfs]\\n  __x64_sys_ioctl+0x134/0x1b0\\n  do_syscall_64+0x99/0x190\\n  entry_SYSCALL_64_after_hwframe+0x6e/0x76\\n\\n The buggy address belongs to the object at ffff8881543c8000\\n  which belongs to the cache kmalloc-1k of size 1024\\n The buggy address is located 96 bytes inside of\\n  freed 1024-byte region [ffff8881543c8000, ffff8881543c8400)\\n\\n The buggy address belongs to the physical page:\\n page:00000000fe2c1285 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1543c8\\n head:00000000fe2c1285 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0\\n flags: 0x17ffffc0000840(slab|head|node=0|zone=2|lastcpupid=0x1fffff)\\n page_type: 0xffffffff()\\n raw: 0017ffffc0000840 ffff888100042dc0 ffffea0019e8f200 dead000000000002\\n raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000\\n page dumped because: kasan: bad access detected\\n\\n Memory state around the buggy address:\\n  ffff8881543c7f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\\n  ffff8881543c7f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\\n \u003effff8881543c8000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n                                                        ^\\n  ffff8881543c8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n  ffff8881543c8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n\\nThis UAF happens because we\u0027re accessing stale zone information of a\\nalready removed btrfs_device in do_zone_finish().\\n\\nThe sequence of events is as follows:\\n\\nbtrfs_dev_replace_start\\n  btrfs_scrub_dev\\n   btrfs_dev_replace_finishing\\n    btrfs_dev_replace_update_device_in_mapping_tree \u003c-- devices replaced\\n    btrfs_rm_dev_replace_free_srcdev\\n     btrfs_free_device                              \u003c-- device freed\\n\\ncleaner_kthread\\n btrfs_delete_unused_bgs\\n  btrfs_zone_finish\\n   do_zone_finish              \u003c-- refers the freed device\\n\\nThe reason for this is that we\u0027re using a\\n---truncated---\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se resolvi\u00f3 la siguiente vulnerabilidad: btrfs:zoned: corrige use-after-free en do_zone_finish() Shinichiro inform\u00f3 el siguiente use-after-free desencadenado por la operaci\u00f3n de reemplazo de dispositivo en fstests btrfs/070. Informaci\u00f3n BTRFS (dispositivo nullb1): limpieza: finalizado en el dispositivo 1 con estado: 0 ================================== ================================= ERROR: KASAN: uso de losa despu\u00e9s de liberarlo en do_zone_finish+0x91a/0xb90 [btrfs] Lectura del tama\u00f1o 8 en la direcci\u00f3n ffff8881543c8060 mediante la tarea btrfs-cleaner/3494007 CPU: 0 PID: 3494007 Comm: btrfs-cleaner Contaminado: GW 6.8.0-rc5-kts #1 Nombre del hardware: Supermicro Super Server/X11SPi-TF , BIOS 3.3 21/02/2020 Seguimiento de llamadas:  dump_stack_lvl+0x5b/0x90 print_report+0xcf/0x670 ? __virt_addr_valid+0x200/0x3e0 kasan_report+0xd8/0x110 ? do_zone_finish+0x91a/0xb90 [btrfs]? do_zone_finish+0x91a/0xb90 [btrfs] do_zone_finish+0x91a/0xb90 [btrfs] btrfs_delete_unused_bgs+0x5e1/0x1750 [btrfs] ? __pfx_btrfs_delete_unused_bgs+0x10/0x10 [btrfs] ? btrfs_put_root+0x2d/0x220 [btrfs] ? btrfs_clean_one_deleted_snapshot+0x299/0x430 [btrfs] clean_kthread+0x21e/0x380 [btrfs] ? __pfx_cleaner_kthread+0x10/0x10 [btrfs] kthread+0x2e3/0x3c0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x31/0x70 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1b/0x30  Asignado por tarea 3493983: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 __kasan_kmalloc+0xaa/0xb0 btrfs_alloc_device+0x b3/0x4e0 [btrfs] lista_dispositivo_add.constprop.0+0x993/ 0x1630 [btrfs] btrfs_scan_one_device+0x219/0x3d0 [btrfs] btrfs_control_ioctl+0x26e/0x310 [btrfs] __x64_sys_ioctl+0x134/0x1b0 do_syscall_64+0x99/0x190 entrada_SYSCALL_6 4_after_hwframe+0x6e/0x76 Liberado por la tarea 3494056: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 kasan_save_free_info+0x3f/0x60 veneno_slab_object+0x102/0x170 __kasan_slab_free+0x32/0x70 kfree+0x11b/0x320 btrfs_rm_dev_replace_free_srcdev+0xca/0x280 [btrfs_dev_replace_finishing+0xd 7e/0x14f0 [btrfs] btrfs_dev_replace_by_ioctl+0x1286/0x25a0 [btrfs] btrfs_ioctl+0xb27/0x57d0 [ btrfs] __x64_sys_ioctl+0x134/0x1b0 do_syscall_64+0x99/0x190 Entry_SYSCALL_64_after_hwframe+0x6e/0x76 La direcci\u00f3n con errores pertenece al objeto en ffff8881543c8000 que pertenece al cach\u00e9 kmalloc-1k de tama\u00f1o 1024 Se encuentra la direcci\u00f3n con errores 96 bytes dentro de los 1024 bytes liberados regi\u00f3n [ffff8881543c8000, ffff8881543c8400) La direcci\u00f3n del error pertenece a la p\u00e1gina f\u00edsica: p\u00e1gina:00000000fe2c1285 refcount:1 mapcount:0 mapeo:00000000000000000 index:0x0 pfn:0x1543c8 head:00000000fe2c1285 entero_mapcount:0 nr_pages_mapped:0 pincount:0 banderas: 0x17ffffc0000840(slab|head|node=0|zone=2|lastcpupid=0x1fffff) tipo de p\u00e1gina: 0xffffffff() raw: 0017ffffc0000840 ffff888100042dc0 ffffea0019e8f200 dead000000000002 raw: 0000000000 0000000000100010 00000001ffffffff 0000000000000000 p\u00e1gina volcada porque: kasan: mal acceso detectado Estado de la memoria alrededor de la direcci\u00f3n con errores : ffff8881543c7f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff8881543c7f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \u0026gt;ffff8881543c8000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff8881543c8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff8881543c8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb Esta UAF sucede porque estamos acceder a informaci\u00f3n de zona obsoleta de un btrfs_device ya eliminado en do_zone_finish(). La secuencia de eventos es la siguiente: btrfs_dev_replace_start btrfs_scrub_dev btrfs_dev_replace_finishing btrfs_dev_replace_update_device_in_mapping_tree \u0026lt;-- dispositivos reemplazados btrfs_rm_dev_replace_free_srcdev btrfs_free_device \u0026lt;-- dispositivo liberado clean_kthread btrfs_delete_unused_ bgs btrfs_zone_finish do_zone_finish \u0026lt;-- hace referencia al dispositivo liberado. La raz\u00f3n de esto es que estamos usando un ---truncado ---\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"fs/btrfs/zoned.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"4dcbb8ab31c1292aea6a3f240e19523f633320c2\",\"lessThan\":\"34ca809e055eca5cfe63d9c7efbf80b7c21b4e57\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"4dcbb8ab31c1292aea6a3f240e19523f633320c2\",\"lessThan\":\"1ec17ef59168a1a6f1105f5dc517f783839a5302\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"fs/btrfs/zoned.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.18\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.18\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.8.3\",\"lessThanOrEqual\":\"6.8.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.9\",\"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:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2024-05-28T17:52:17.817601Z\",\"id\":\"CVE-2024-26944\",\"options\":[{\"exploitation\":\"none\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-416\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.16\",\"versionEndExcluding\":\"6.8.3\",\"matchCriteriaId\":\"37507A99-EDD7-48D9-80EE-8FFDB0704A2E\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"22BEDD49-2C6D-402D-9DBF-6646F6ECD10B\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1ec17ef59168a1a6f1105f5dc517f783839a5302\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/34ca809e055eca5cfe63d9c7efbf80b7c21b4e57\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/1ec17ef59168a1a6f1105f5dc517f783839a5302\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/34ca809e055eca5cfe63d9c7efbf80b7c21b4e57\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-18T14:14:49+00:00",
      "cve": "CVE-2024-26944",
      "id": "CVE-2024-26944",
      "initial_release_date": "2024-05-01T00:00:00+00:00",
      "product_status:known_not_affected": "198",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: btrfs: zoned: fix use-after-free in do_zone_finish()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-26944.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-09T00:33:22Z",
      "cve": "CVE-2024-26944",
      "id": "CVE-2024-26944",
      "initial_release_date": "2024-05-03T02:09:50Z",
      "product_status:known_affected": "394",
      "product_status:known_not_affected": "368",
      "product_status:recommended": "435",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2024-26944",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2024-26944.json",
      "version": "86"
    },
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/34ca809e055eca5cfe63d9c7efbf80b7c21b4e57\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/1ec17ef59168a1a6f1105f5dc517f783839a5302\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T00:21:05.525Z\"}}, {\"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-26944\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-05-28T17:52:17.817601Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-05-28T17:52:23.464Z\"}, \"title\": \"CISA ADP Vulnrichment\"}], \"cna\": {\"title\": \"btrfs: zoned: fix use-after-free in do_zone_finish()\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.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\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerability is reached through ordinary local filesystem activity (writes, deletions, ordered-extent completion, unused-block-group cleanup) on a mounted zoned btrfs; there is no network-facing component.\\nAC:L - Once a device replace has completed, `block_group-\u003ephysical_map` holds a permanently dangling `btrfs_device` pointer, so triggering `do_zone_finish()` via ordinary file I/O is deterministic and requires winning no race; the reporter reproduced it with a stock fstests run (btrfs/070).\\nPR:L - The attacker needs only write access to the mounted zoned btrfs to drive `btrfs_zone_finish_endio()`/`btrfs_delete_unused_bgs()` into the freed device, and can additionally groom the kmalloc-1k slab from unprivileged context; the CAP_SYS_ADMIN device replace that creates the dangling pointer is routine admin maintenance (the primary use case for zoned btrfs on SMR drives), not a privilege the attacker must hold.\\nUI:N - After the stale pointer exists, the btrfs cleaner kthread and normal write-completion paths call `do_zone_finish()` automatically, and the attacker can force them with their own file operations without any victim action.\\nS:U - The corruption is confined to kernel slab memory within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\\nC:H - The freed 1KB `btrfs_device` and `btrfs_zoned_device_info` objects are read after free, and slab grooming lets the attacker control the reallocated contents, turning `device-\u003ezone_info`/`device-\u003ebdev` dereferences into an attacker-directed kernel read primitive.\\nI:H - `do_zone_finish()` performs UAF writes \\u2014 `zinfo-\u003ereserved_active_zones++`, `atomic_inc(\u0026zone_info-\u003eactive_zones_left)`, and `test_and_clear_bit(zno, zone_info-\u003eactive_zones)` with pointer and index both taken from freed memory \\u2014 giving a controllable write/bit-clear primitive usable for control-flow hijacking, plus zone-management commands issued through a dangling `bdev`.\\nA:H - The bug is a KASAN-confirmed slab use-after-free in the btrfs cleaner kthread that reliably oopses or panics the kernel, and it also drives blkdev_zone_mgmt() with freed block-device state.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"4dcbb8ab31c1292aea6a3f240e19523f633320c2\", \"lessThan\": \"34ca809e055eca5cfe63d9c7efbf80b7c21b4e57\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"4dcbb8ab31c1292aea6a3f240e19523f633320c2\", \"lessThan\": \"1ec17ef59168a1a6f1105f5dc517f783839a5302\", \"versionType\": \"git\"}], \"programFiles\": [\"fs/btrfs/zoned.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5.18\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"5.18\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.8.3\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.8.*\"}, {\"status\": \"unaffected\", \"version\": \"6.9\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"fs/btrfs/zoned.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/34ca809e055eca5cfe63d9c7efbf80b7c21b4e57\"}, {\"url\": \"https://git.kernel.org/stable/c/1ec17ef59168a1a6f1105f5dc517f783839a5302\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nbtrfs: zoned: fix use-after-free in do_zone_finish()\\n\\nShinichiro reported the following use-after-free triggered by the device\\nreplace operation in fstests btrfs/070.\\n\\n BTRFS info (device nullb1): scrub: finished on devid 1 with status: 0\\n ==================================================================\\n BUG: KASAN: slab-use-after-free in do_zone_finish+0x91a/0xb90 [btrfs]\\n Read of size 8 at addr ffff8881543c8060 by task btrfs-cleaner/3494007\\n\\n CPU: 0 PID: 3494007 Comm: btrfs-cleaner Tainted: G        W          6.8.0-rc5-kts #1\\n Hardware name: Supermicro Super Server/X11SPi-TF, BIOS 3.3 02/21/2020\\n Call Trace:\\n  \u003cTASK\u003e\\n  dump_stack_lvl+0x5b/0x90\\n  print_report+0xcf/0x670\\n  ? __virt_addr_valid+0x200/0x3e0\\n  kasan_report+0xd8/0x110\\n  ? do_zone_finish+0x91a/0xb90 [btrfs]\\n  ? do_zone_finish+0x91a/0xb90 [btrfs]\\n  do_zone_finish+0x91a/0xb90 [btrfs]\\n  btrfs_delete_unused_bgs+0x5e1/0x1750 [btrfs]\\n  ? __pfx_btrfs_delete_unused_bgs+0x10/0x10 [btrfs]\\n  ? btrfs_put_root+0x2d/0x220 [btrfs]\\n  ? btrfs_clean_one_deleted_snapshot+0x299/0x430 [btrfs]\\n  cleaner_kthread+0x21e/0x380 [btrfs]\\n  ? __pfx_cleaner_kthread+0x10/0x10 [btrfs]\\n  kthread+0x2e3/0x3c0\\n  ? __pfx_kthread+0x10/0x10\\n  ret_from_fork+0x31/0x70\\n  ? __pfx_kthread+0x10/0x10\\n  ret_from_fork_asm+0x1b/0x30\\n  \u003c/TASK\u003e\\n\\n Allocated by task 3493983:\\n  kasan_save_stack+0x33/0x60\\n  kasan_save_track+0x14/0x30\\n  __kasan_kmalloc+0xaa/0xb0\\n  btrfs_alloc_device+0xb3/0x4e0 [btrfs]\\n  device_list_add.constprop.0+0x993/0x1630 [btrfs]\\n  btrfs_scan_one_device+0x219/0x3d0 [btrfs]\\n  btrfs_control_ioctl+0x26e/0x310 [btrfs]\\n  __x64_sys_ioctl+0x134/0x1b0\\n  do_syscall_64+0x99/0x190\\n  entry_SYSCALL_64_after_hwframe+0x6e/0x76\\n\\n Freed by task 3494056:\\n  kasan_save_stack+0x33/0x60\\n  kasan_save_track+0x14/0x30\\n  kasan_save_free_info+0x3f/0x60\\n  poison_slab_object+0x102/0x170\\n  __kasan_slab_free+0x32/0x70\\n  kfree+0x11b/0x320\\n  btrfs_rm_dev_replace_free_srcdev+0xca/0x280 [btrfs]\\n  btrfs_dev_replace_finishing+0xd7e/0x14f0 [btrfs]\\n  btrfs_dev_replace_by_ioctl+0x1286/0x25a0 [btrfs]\\n  btrfs_ioctl+0xb27/0x57d0 [btrfs]\\n  __x64_sys_ioctl+0x134/0x1b0\\n  do_syscall_64+0x99/0x190\\n  entry_SYSCALL_64_after_hwframe+0x6e/0x76\\n\\n The buggy address belongs to the object at ffff8881543c8000\\n  which belongs to the cache kmalloc-1k of size 1024\\n The buggy address is located 96 bytes inside of\\n  freed 1024-byte region [ffff8881543c8000, ffff8881543c8400)\\n\\n The buggy address belongs to the physical page:\\n page:00000000fe2c1285 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1543c8\\n head:00000000fe2c1285 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0\\n flags: 0x17ffffc0000840(slab|head|node=0|zone=2|lastcpupid=0x1fffff)\\n page_type: 0xffffffff()\\n raw: 0017ffffc0000840 ffff888100042dc0 ffffea0019e8f200 dead000000000002\\n raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000\\n page dumped because: kasan: bad access detected\\n\\n Memory state around the buggy address:\\n  ffff8881543c7f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\\n  ffff8881543c7f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\\n \u003effff8881543c8000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n                                                        ^\\n  ffff8881543c8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n  ffff8881543c8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb\\n\\nThis UAF happens because we\u0027re accessing stale zone information of a\\nalready removed btrfs_device in do_zone_finish().\\n\\nThe sequence of events is as follows:\\n\\nbtrfs_dev_replace_start\\n  btrfs_scrub_dev\\n   btrfs_dev_replace_finishing\\n    btrfs_dev_replace_update_device_in_mapping_tree \u003c-- devices replaced\\n    btrfs_rm_dev_replace_free_srcdev\\n     btrfs_free_device                              \u003c-- device freed\\n\\ncleaner_kthread\\n btrfs_delete_unused_bgs\\n  btrfs_zone_finish\\n   do_zone_finish              \u003c-- refers the freed device\\n\\nThe reason for this is that we\u0027re using a\\n---truncated---\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8.3\", \"versionStartIncluding\": \"5.18\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.9\", \"versionStartIncluding\": \"5.18\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:28:29.917Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-26944\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:28:29.917Z\", \"dateReserved\": \"2024-02-19T14:20:24.197Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-01T05:18:04.909Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.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…

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…