🇰🇷 한글 설명
Linux 커널의 Renesas RZ/G2L irqchip 드라이버에서 인터럽트 상태 레지스터를 처리할 때 발생하는 경합 조건(Race Condition) 취약점입니다. 인터럽트 비트를 지우기 위해 읽기-수정-쓰기(read-modify-write) 방식을 사용함으로써, 처리되지 않은 다른 인터럽트 비트가 의도치 않게 초기화되어 손실될 수 있습니다.
💡 쉬운 설명
컴퓨터가 여러 가지 신호를 동시에 받을 때, 하나를 처리하는 과정에서 다른 중요한 신호를 실수로 지워버리는 문제입니다. 이로 인해 시스템이 특정 신호를 인식하지 못하고 무시하게 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
irqchip/renesas-rzg2l: Fix loss of interrupt
rzg2l_clear_irq_int() and rzg2l_clear_tint_int() perform a
read-modify-write on the ISCR/TSCR status registers to clear the bit
for the interrupt just handled. Since these registers are
write-0-to-clear per bit, this is racy:
If another interrupt's status bit gets set between the read and the write,
that bit is written back as 0 by the software-constructed value, clearing
an interrupt that hasn't been serviced yet and losing it.
This can be reproduced by triggering multiple interrupts at once, e.g.:
gpioset -c gpiochip0 355=0 353=0 328=0 352=0
Fix this by writing back only the bit being cleared, with all other bits
set to 1, instead of read-modify-writing the whole register. Since 1-bits
are left unchanged by hardware, concurrently-set status bits for other
interrupts are preserved.
📍 영향받는 시스템
Renesas RZ/G2L 플랫폼을 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
동시에 여러 개의 인터럽트를 발생시켜 하드웨어 레지스터의 경합 조건을 유도함
🛡️ 대응 방법
레지스터 전체를 읽고 쓰는 대신, 처리할 비트만 명시적으로 작성하여 다른 비트에 영향을 주지 않도록 커널 패치를 적용함
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 확인합니다.