🇰🇷 한글 설명
Linux 커널의 PCI 서브오디네이트 버스 속성 처리 과정에서 발생하는 NULL 포인터 역참조 취약점입니다. 하위 버스가 할당되지 않은 브리지 장치에 대해 특정 OF 헬퍼 함수가 검증 없이 접근할 경우, 시스템 부팅 초기 단계에서 커널 패닉이나 중단(hang)이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 부품들을 연결하는 통로(PCI 브리지) 설정 과정에서, 연결된 하위 통로가 없는데도 이를 확인하지 않고 접근하려다 시스템이 멈추는 문제입니다. 이로 인해 컴퓨터가 정상적으로 켜지지 않을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
PCI: of_property: Omit bus properties without a subordinate bus
A bridge (a device with a Type 1 header) may not have a secondary bus
allocated (pdev->subordinate), e.g., if there are no available bus numbers
or the bridge secondary/subordinate bus numbers are not writable.
The dynamic OF helpers of_pci_prop_bus_range() and of_pci_prop_intr_map()
dereference pdev->subordinate without checking it. When
CONFIG_PCI_DYNAMIC_OF_NODES is enabled, this can cause a NULL pointer
dereference and early boot hang.
Generate 'bus-range' and 'interrupt-map' properties only when a subordinate
bus exists. Keep the node and its remaining properties for bridges without
one.
The problem was latent since 407d1a51921e ("PCI: Create device tree node
for bridge"), but wasn't reachable until 1f340724419e ("PCI: of: Create
device tree PCI host bridge node"), which appeared in v6.15. Before
1f340724419e, of_pci_make_dev_node() returned early because the parent OF
node was missing.
[bhelgaas: move pdev->subordinate test to callees, commit log]
📍 영향받는 시스템
Linux kernel v6.15 이상 (CONFIG_PCI_DYNAMIC_OF_NODES 활성화 시)
⚔️ 공격 벡터
로컬 공격자가 특수하게 구성된 PCI 장치 트리(Device Tree)를 통해 시스템 부팅 시 커널 중단을 유도할 수 있음
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 하위 버스 존재 여부 검증 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 이후 버전인지 확인합니다.