🇰🇷 한글 설명
리눅스 커널의 PCI 엔드포인트 테스트 모듈(pci-epf-test)에서 DMA 채널 해제 전 NULL 체크를 수행하지 않는 취약점이 발견되었습니다. 이로 인해 EPF 초기화 이후에도 DMA 채널 필드가 NULL일 경우 NULL 포인터 역참조가 발생하여 커널 패닉을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 부품인 커널이 데이터 통로를 정리하는 과정에서, 존재하지 않는 통로를 닫으려고 시도하다가 시스템이 멈춰버리는 오류입니다. 이 오류가 발생하면 컴퓨터가 갑자기 꺼지거나 재부팅될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
PCI: endpoint: pci-epf-test: Add NULL check for DMA channels before release
The fields dma_chan_tx and dma_chan_rx of the struct pci_epf_test can be
NULL even after EPF initialization. Then it is prudent to check that
they have non-NULL values before releasing the channels. Add the checks
in pci_epf_test_clean_dma_chan().
Without the checks, NULL pointer dereferences happen and they can lead
to a kernel panic in some cases:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000050
Call trace:
dma_release_channel+0x2c/0x120 (P)
pci_epf_test_epc_deinit+0x94/0xc0 [pci_epf_test]
pci_epc_deinit_notify+0x74/0xc0
tegra_pcie_ep_pex_rst_irq+0x250/0x5d8
irq_thread_fn+0x34/0xb8
irq_thread+0x18c/0x2e8
kthread+0x14c/0x210
ret_from_fork+0x10/0x20
[mani: trimmed the stack trace]
📍 영향받는 시스템
PCI EPF 테스트 모듈을 사용하는 리눅스 커널 버전
⚔️ 공격 벡터
로컬 공격자가 특정 PCI 엔드포인트 초기화/해제 시나리오를 유도하여 커널 패닉 유발
🛡️ 대응 방법
pci-epf-test 모듈에 DMA 채널 NULL 체크 로직이 포함된 최신 리눅스 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 패치된 최신 버전인지 확인합니다.