🔍 CVE-2026-23287

5.5
CVSS Score
MEDIUM
2026-03-25
2026-10-15 02:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 sifive-plic 드라이버에서 인터럽트 친화성(affinity) 설정 변경 시 인터럽트가 중단되는 취약점이 발견되었습니다. 인터럽트 처리 중 친화성이 변경되면 PLIC가 완료 메시지를 무시하여 인터럽트가 영구적으로 동결될 수 있습니다. 이를 해결하기 위해 irqd_irq_disabled() 대신 PLIC의 활성화 비트를 직접 확인하도록 수정되었습니다.

💡 쉬운 설명

컴퓨터의 부품들이 신호를 주고받는 과정에서 설정이 바뀌면 신호가 멈춰버리는 문제입니다. 이로 인해 특정 장치(예: 시리얼 포트)가 갑자기 작동을 멈추고 먹통이 될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: irqchip/sifive-plic: Fix frozen interrupt due to affinity setting PLIC ignores interrupt completion message for disabled interrupt, explained by the specification: The PLIC signals it has completed executing an interrupt handler by writing the interrupt ID it received from the claim to the claim/complete register. The PLIC does not check whether the completion ID is the same as the last claim ID for that target. If the completion ID does not match an interrupt source that is currently enabled for the target, the completion is silently ignored. This caused problems in the past, because an interrupt can be disabled while still being handled and plic_irq_eoi() had no effect. That was fixed by checking if the interrupt is disabled, and if so enable it, before sending the completion message. That check is done with irqd_irq_disabled(). However, that is not sufficient because the enable bit for the handling hart can be zero despite irqd_irq_disabled(d) being false. This can happen when affinity setting is changed while a hart is still handling the interrupt. This problem is easily reproducible by dumping a large file to uart (which generates lots of interrupts) and at the same time keep changing the uart interrupt's affinity setting. The uart port becomes frozen almost instantaneously. Fix this by checking PLIC's enable bit instead of irqd_irq_disabled().

📍 영향받는 시스템

Linux kernel (sifive-plic driver 사용 시스템)

⚔️ 공격 벡터

인터럽트가 발생하는 상황에서 인터럽트 친화성(affinity) 설정을 반복적으로 변경하여 서비스 거부(DoS) 유도

🛡️ 대응 방법

sifive-plic 드라이버의 인터럽트 처리 로직이 수정된 최신 Linux 커널로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel