CVE-2024-47706

Siemens ProductCERT Advisory SSA-265688

Beschreibung

Im Linux-Kernel wurde folgende Schwachstelle behoben:

block, bfq: Behebung eines möglichen UAF (Use-After-Free) für bfqq->bic mit Merge-Kette

  1. Anfangszustand, drei Prozesse:

    Prozess 1       Prozess 2     Prozess 3
     (BIC1)          (BIC2)        (BIC3)
      |  Λ            |  Λ           |  Λ
      |  |            |  |           |  |
      V  |            V  |           V  |
      bfqq1           bfqq2         bfqq3
    Prozessreferenz:    1             1             1
    
  2. bfqq1 wird mit bfqq2 zusammengeführt:

    Prozess 1       Prozess 2     Prozess 3
     (BIC1)          (BIC2)        (BIC3)
      |               |            |  Λ
      \--------------\|           |  |
                       V           V  |
      bfqq1--------->bfqq2         bfqq3
    Prozessreferenz:    0             2             1
    
  3. bfqq2 wird mit bfqq3 zusammengeführt:

    Prozess 1       Prozess 2     Prozess 3
     (BIC1)          (BIC2)        (BIC3)
    hier -> Λ                |           |
      \--------------\ \-------------\
                       V           V
      bfqq1--------->bfqq2---------->bfqq3
    Prozessreferenz:    0             1             3
    

In diesem Fall wird der IO von Prozess 1 zuerst bfqq2 von BIC1 erhalten, dann über die Merge-Kette bfqq3, und schließlich den IO durch bfqq3 verarbeiten. Der aktuelle Code denkt jedoch, dass bfqq2 immer noch von BIC1 besessen wird, wie im Anfangszustand, und setzt bfqq2->bic auf BIC1.

bfq_insert_request

  • Durchgeführt von Prozess 1

    • bfqq = bfq_init_rq(rq)
      • bfqq = bfq_get_bfqq_handle_split
        • bfqq = bic_to_bfqq
          • -> bfqq2 von BIC1 erhalten
        • bfqq->ref++
        • rq->elv.priv[0] = bic
        • rq->elv.priv[1] = bfqq
        • Wenn (bfqq_process_refs(bfqq) == 1)
          • bfqq->bic = bic
          • -> BIC1 in bfqq2 aufzeichnen

    __bfq_insert_request

    • new_bfqq = bfq_setup_cooperator
      • -> bfqq3 von bfqq2->new_bfqq erhalten
    • bfqq_request_freed(bfqq)
    • new_bfqq->ref++
    • rq->elv.priv[1] = new_bfqq
    • -> IO durch bfqq3 verarbeiten

Das Problem wird behoben, indem zuerst geprüft wird, ob bfqq aus einer Merge-Kette stammt. Dies könnte auch ein weiteres Problem beheben, das von unserem Syzkaller (nicht reproduzierbar) gemeldet wurde:

==================================================================
BUG: KASAN: slab-use-after-free in bfq_do_early_stable_merge block/bfq-iosched.c:5692 [inline]
BUG: KASAN: slab-use-after-free in bfq_do_or_sched_stable_merge block/bfq-iosched.c:5805 [inline]
BUG: KASAN: slab-use-after-free in bfq_get_queue+0x25b0/0x2610 block/bfq-iosched.c:5889
Schreiben der Größe 1 an die Adresse ffff888123839eb8 durch den Prozess kworker/0:1H/18595

CPU: 0 PID: 18595 Comm: kworker/0:1H Tainted: G             L     6.6.0-07439-gba2303cacfda #6
Hardwarename: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
Arbeitswarteschlange: kblockd blk_mq_requeue_work
Aufrufverfolgung:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x91/0xf0 lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:364 [inline]
 print_report+0x10d/0x610 mm/kasan/report.c:475
 kasan_report+0x8e/0xc0 mm/kasan/report.c:588
 bfq_do_early_stable_merge block/bfq-iosched.c:5692 [inline]
 bfq_do_or_sched_stable_merge block/bfq-iosched.c:5805 [inline]
 bfq_get_queue+0x25b0/0x2610 block/bfq-iosched.c:5889
 bfq_get_bfqq_handle_split+0x169/0x5d0 block/bfq-iosched.c:6757
 bfq_init_rq block/bfq-iosched.c:6876 [inline]
 bfq_insert_request block/bfq-iosched.c:6254 [inline]
 bfq_insert_requests+0x1112/0x5cf0 block/bfq-iosched.c:6304
 blk_mq_insert_request+0x290/0x8d0 block/blk-mq.c:2593
 blk_mq_requeue_work+0x6bc/0xa70 block/blk-mq.c:1502
 process_one_work kernel/workqueue.c:2627 [inline]
 process_scheduled_works+0x432/0x13f0 kernel/workqueue.c:2700
 worker_thread+0x6f2/0x1160 kernel/workqueue.c:2781
 kthread+0x33c/0x440 kernel/kthread.c:388
 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1b/0x30 arch/x86/entry/entry_64.S:305
 </TASK>

Von Prozess 20776 zugewiesen:
 kasan_save_stack+0x20/0x40 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 __kasan_slab_alloc+0x87/0x90 mm/kasan/common.c:328
 kasan_slab_alloc include/linux/kasan.h:188 [inline]
 slab_post_alloc_hook mm/slab.h:763 [inline]
 slab_alloc_node mm/slub.c:3458 [inline]
 kmem_cache_alloc_node+0x1a4/0x6f0 mm/slub.c:3503
 ioc_create_icq block/blk-ioc.c:370 [inline]
---abgeschnitten---

Metriken

Severity
high
kein öffentlicher PoC bekannt
7.8
Quelle: cna-v3
15.7 %
Erhöht — CVE ist relevanter als mindestens 10 % der heute bewerteten CVEs.
0.2 %
Niedrig — Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Veröffentlicht
2022-02-18 00:00 UTC

Re-Analyse & Statuswechsel

Chronologie der NVD-Audit-Events für diese CVE — Reanalyses, CVSS-Updates, CPE-Diffs.

  1. CVE Modified2026-08-04 11:20 UTC· 416baaa9-dc9f-4396-8d5f-8c081fb06d67
    • CVSS V3.1: AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Betroffene Betriebssysteme

  • linux

    amazon / amazon_linux

  • linux

    suse / basesystem_module15

  • linux

    debian / debian_linux10.0

  • linux

    debian / debian_linux11.0

  • linux

    debian / debian_linux12.0

  • linux

    debian / debian_linux13.0

  • linux

    suse / development_tools_module15

  • linux

    redhat / enterprise_linux10.0

  • linux

    redhat / enterprise_linux8.0

  • linux

    redhat / enterprise_linux9.0

  • linux

    redhat / enterprise_linux_aus8.4

  • linux

    redhat / enterprise_linux_aus8.6

  • linux

    redhat / enterprise_linux_eus10.0

  • linux

    redhat / enterprise_linux_eus8.4

  • linux

    redhat / enterprise_linux_eus9.4

  • linux

    redhat / enterprise_linux_eus9.6

  • linux

    redhat / enterprise_linux_tus8.6

  • linux

    redhat / enterprise_linux_tus8.8

  • linux

    redhat / enterprise_linux_update_services_for_sap_solutions8.6

  • linux

    redhat / enterprise_linux_update_services_for_sap_solutions8.8

  • linux

    redhat / enterprise_linux_update_services_for_sap_solutions9.0

  • linux

    redhat / enterprise_linux_update_services_for_sap_solutions9.2

  • linux

    opensuse / leap15.3

  • linux

    opensuse / leap15.4

Betroffene Produkte

Aus der Hersteller-/CERT-Meldung extrahierte Produkte und Versionsbereiche. Ein Version-Range wie „<4.14.6“ impliziert die Update-Empfehlung „auf 4.14.6 oder höher aktualisieren“.

  • android

    :linux_kernel::0

  • android

    :linux_kernel:Kernel

  • arista

    cloudvision_agni2024.4.0 – 2025.2.2

  • arista

    cloudvision_portal2024.2.0 – 2026.1.0

  • arista

    velocloud_edge4.5.0 – 6.4.1

  • arista

    velocloud_gateway

  • arista

    velocloud_orchestrator

  • bitnami

    java-min1.9.0

  • Dell

    ECS3.8.1.0

  • Dell

    NetWorkerVirtual Edition

  • Dell

    NetWorkervProxy

  • Dell

    PowerProtect Data Domain7.10.1.70

  • Dell

    PowerProtect Data Domain7.13.1.40

  • Dell

    PowerProtect Data Domain8.3.1.10

  • Dell

    PowerProtect Data Domain8.4.0.0

  • Dell

    PowerProtect Data Domain< 7.10.1.70

    gefixt in 7.10.1.70

  • Dell

    PowerProtect Data Domain< 7.13.1.40

    gefixt in 7.13.1.40

  • Dell

    PowerProtect Data Domain< 8.3.1.10

    gefixt in 8.3.1.10

  • Dell

    PowerProtect Data Domain< 8.4.0.0

    gefixt in 8.4.0.0

  • Dell

    PowerScale OneFSNode Firmware Package 14.1

  • Dell

    Secure Connect GatewayAppliance 5.32.00.18

  • Hitachi Energy

    RTU500< 13.9.1

    gefixt in 13.9.1

  • HPE

    HP-UXOpenSSL Software <A.03.00.15.001

  • IBM

    AIX7.2

Quellen & Referenzen

Verknüpfte CVEs

423 weitere CVEs anzeigen
IDCVE-2024-47706
Siemens ProductCERT Advisory SSA-265688 — CVE-2024-47706 | NEOSEC Intel