🇰🇷 한글 설명
Linux 커널의 i3c 드라이버에서 NPCM845 하드웨어 사용 시 발생하는 취약점입니다. 특정 상황에서 SDA 라인이 저전압 상태로 고정되면 잘못된 인터럽트가 발생하고, 이를 복구하려는 시도가 다시 인터럽트를 유발하는 무한 루프(IRQ storm)를 생성하여 CPU를 점유할 수 있습니다.
💡 쉬운 설명
하드웨어 오류를 고치려고 시도하는 과정이 오히려 시스템을 계속 괴롭히는 무한 반복 상태에 빠지는 문제입니다. 이로 인해 컴퓨터의 두뇌인 CPU가 과부하되어 시스템이 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
i3c: master: svc: Prevent IRQ storm from false SLVSTART on NPCM845
On NPCM845, when a target on the I3C bus gets stuck holding SDA low,
the controller reports a false Master Request (MR) in-band interrupt
event. The driver handles this by emitting a STOP condition to restore
the bus.
However, the hardware quirk SVC_I3C_QUIRK_FALSE_SLVSTART indicates that
emitting a STOP condition may spuriously set the SLVSTART interrupt
status bit. In the Master Request case, this creates a feedback loop:
the STOP triggers a new SLVSTART event, the IRQ handler fires again,
the controller still reports an MR type, another STOP is emitted, and
the cycle repeats indefinitely, resulting in an IRQ storm that can lock
up the CPU.
Clear the SLVSTART status bit explicitly after emitting the STOP in the
Master Request IBI handler when the SVC_I3C_QUIRK_FALSE_SLVSTART quirk
is set. This breaks the feedback loop without affecting normal SLVSTART
processing, which is already guarded in the top-level IRQ handler by
checking that MSTATUS is in SLVREQ state.
📍 영향받는 시스템
NPCM845 하드웨어를 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
I3C 버스 상의 타겟 장치가 SDA 라인을 Low 상태로 유지하여 하드웨어 결함을 유도하는 방식
🛡️ 대응 방법
커널 패치를 통해 STOP 조건 발생 후 SLVSTART 상태 비트를 명시적으로 초기화하여 피드백 루프를 차단해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전인지 확인해야 합니다.