CVE-2023-53326 in Linux
Résumé
par VulDB • 28/05/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
powerpc : Ne pas tenter de copier PPR pour une tâche avec pt_regs NULL
powerpc définit PF_KTHREAD et PF_IO_WORKER avec un pt_regs NULL, ce qui, selon mes vérifications (qui sont peut-être très courtes), n'est pas couramment fait pour les autres architectures. Cela fonctionne correctement, sauf lorsque des PF_IO_WORKER ont été créés et que la tâche effectue une action provoquant la génération d'un coredump. Nous obtenons alors ce plantage :
Kernel attempted to read user page (160) - exploit attempt? (uid: 1000) BUG: Kernel NULL pointer dereference on read at 0x00000160 Faulting instruction address: 0xc0000000000c3a60 Oops: Kernel access of bad area, sig: 11 [#1]
LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=32 NUMA pSeries Modules linked in: bochs drm_vram_helper drm_kms_helper xts binfmt_misc ecb ctr syscopyarea sysfillrect cbc sysimgblt drm_ttm_helper aes_generic ttm sg libaes evdev joydev virtio_balloon vmx_crypto gf128mul drm dm_mod fuse loop configfs drm_panel_orientation_quirks ip_tables x_tables autofs4 hid_generic usbhid hid xhci_pci xhci_hcd usbcore usb_common sd_mod CPU: 1 PID: 1982 Comm: ppc-crash Not tainted 6.3.0-rc2+ #88 Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1202 0xf000005 of:SLOF,HEAD hv:linux,kvm pSeries NIP: c0000000000c3a60 LR: c000000000039944 CTR: c0000000000398e0 REGS: c0000000041833b0 TRAP: 0300 Not tainted (6.3.0-rc2+) MSR: 800000000280b033 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI,LE> CR: 88082828 XER: 200400f8 ... NIP memcpy_power7+0x200/0x7d0 LR ppr_get+0x64/0xb0 Call Trace: ppr_get+0x40/0xb0 (unreliable) __regset_get+0x180/0x1f0 regset_get_alloc+0x64/0x90 elf_core_dump+0xb98/0x1b60 do_coredump+0x1c34/0x24a0 get_signal+0x71c/0x1410 do_notify_resume+0x140/0x6f0 interrupt_exit_user_prepare_main+0x29c/0x320 interrupt_exit_user_prepare+0x6c/0xa0 interrupt_return_srr_user+0x8/0x138
Cela est dû au fait que ppr_get() tente de copier depuis un PF_IO_WORKER avec un pt_regs NULL.
Vérifiez la présence d'un pt_regs valide dans ppc_get/ppr_set, et retournez une erreur s'il n'est pas défini. La valeur d'erreur réelle n'est pas importante ici, donc choisissez simplement -EINVAL.
[mpe : Supprimez l'oops dans le journal des modifications, ajoutez Fixes & Cc stable]
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.