🇰🇷 한글 설명
Linux 커널의 cdns3 드라이버에서 PCI 프로브 과정 중 NULL 포인터 역참조로 인해 커널 패닉이 발생할 수 있는 취약점입니다. Cadence USBSS 컨트롤러의 두 번째 기능이 첫 번째 기능의 데이터 설정이 완료되기 전에 호출될 때 발생합니다.
💡 쉬운 설명
컴퓨터 부품을 인식하는 과정에서 데이터가 아직 준비되지 않았는데 이를 사용하려고 시도하여 시스템이 멈추는 문제입니다. 이로 인해 운영체제가 갑자기 꺼지거나 재부팅될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: cdns3: Fix NULL pointer dereference in cdns3_pci_probe
The Cadence USBSS controller is a two-function PCI device. The first
probed function allocates the driver data and stores it with
pci_set_drvdata(), while the second function reuses it via
pci_get_drvdata() when pci_is_enabled() reports that the first
function has already been probed.
When the second function is probed while the first one has been
enabled but has not yet set its driver data, pci_get_drvdata()
returns NULL, and the subsequent wrap->devfn assignment dereferences
a NULL pointer and crashes the kernel.
logs:
Call trace:
cdns3_pci_probe+0xa4/0x300
local_pci_probe+0x44/0xa8
pci_call_probe+0x54/0x158
pci_device_probe+0x84/0x100
really_probe+0x184/0x3d0
__driver_probe_device+0x80/0x178
driver_probe_device+0x44/0xe8
__driver_attach+0xec/0x1f8
bus_for_each_dev+0x7c/0xe0
driver_attach+0x28/0x38
bus_add_driver+0x110/0x238
driver_register+0x64/0x128
__pci_register_driver+0x50/0x60
cdns3_pci_driver_init+0x28/0x38
do_one_initcall+0x5c/0x280
do_initcalls+0x104/0x1d8
kernel_init_freeable+0x140/0x218
kernel_init+0x28/0x1f8
ret_from_fork+0x10/0x20
Return -EPROBE_DEFER in this case so that probing is retried after
the first function has completed its probe.
📍 영향받는 시스템
Cadence USBSS 컨트롤러를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
물리적 장치 연결 또는 특정 PCI 장치 초기화 시퀀스를 통한 로컬 공격
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인하십시오.