🔍 CVE-2026-89455

0.0
CVSS Score
UNKNOWN
2026-09-11
2026-10-19 09:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 PLDA PCI 드라이버에서 IRQ 도메인 해제 시 Use-After-Free 취약점이 발견되었습니다. devm_request_irq로 할당된 인터럽트가 도메인 제거 전에 명시적으로 해제되지 않아, 이미 해제된 도메인 메모리에 접근을 시도하는 문제가 발생합니다.

💡 쉬운 설명

컴퓨터 부품이 작동을 멈출 때, 사용 중인 통로를 먼저 닫아야 하는데 통로를 먼저 없애버리는 오류가 있습니다. 이로 인해 시스템이 이미 사라진 통로를 다시 사용하려다 충돌이 발생하거나 멈출 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: PCI: plda: Fix use-after-free of event IRQs during teardown plda_pcie_irq_domain_deinit() removes pcie->event_domain via irq_domain_remove(), but the per-event IRQs mapped from that domain are requested with devm_request_irq() in plda_init_interrupts(). The actual free_irq() for a devm-managed IRQ is deferred by devres until after the calling probe()/remove() function returns. This means irq_domain_remove() can free the domain's internal data before the deferred free_irq() for IRQs still mapped into it has run. When devres later processes that deferred cleanup, it can end up dereferencing the already-freed domain. Free each event IRQ explicitly with devm_free_irq() before removing the domain. This triggers the free immediately and removes the IRQ from the devres tracking list, so devres will not attempt to free it a second time later. Also dispose of the event, INTx, and MSI IRQ mappings with irq_dispose_mapping() before their owning domains are removed. Finally, guard the calls to irq_set_chained_handler_and_data() for pcie->irq, pcie->msi_irq, and pcie->intx_irq so they only run when those fields hold a valid (>0) IRQ number. This is a pre-existing issue, flagged by automated review during work on an earlier, unrelated patch to this driver. Build-tested and boot-tested on StarFive VisionFive v1.2A board

📍 영향받는 시스템

Linux kernel (PLDA PCI driver 사용 시스템)

⚔️ 공격 벡터

로컬 공격자가 특정 PCI 장치의 드라이버를 로드/언로드하여 커널 메모리 오류 유도

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 IRQ 해제 로직 수정 적용

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel