🇰🇷 한글 설명
Linux 커널의 drop_monitor 모듈에서 64비트 통계 업데이트 시 인터럽트가 활성화된 상태로 실행되는 취약점이 발견되었습니다. 32비트 아키텍처에서 통계 업데이트 중 중첩된 인터럽트가 발생할 경우 seqcount 상태나 통계 값이 손상될 수 있습니다. 이를 해결하기 위해 인터럽트가 비활성화된 상태에서 통계 업데이트가 완료되도록 수정되었습니다.
💡 쉬운 설명
컴퓨터가 숫자를 기록하는 도중에 갑자기 다른 작업(인터럽트)이 끼어들어 기록 데이터가 엉망이 될 수 있는 문제입니다. 특히 32비트 시스템에서 데이터가 깨질 위험이 있어 이를 방지하기 위해 기록 순서를 조정했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drop_monitor: perform u64_stats updates under IRQ-disabled section
In net_dm_packet_trace_kfree_skb_hit() and net_dm_hw_trap_packet_probe(),
u64_stats_update_begin() / u64_stats_inc() / u64_stats_update_end() were
called after spin_unlock_irqrestore(&...drop_queue.lock, flags), when local
IRQs had already been re-enabled.
Tracepoint probes can execute in IRQ or softirq context. On 32-bit
architectures, u64_stats_update_begin() disables preemption but not interrupts,
relying on seqcount writes. If a nested interrupt occurs on the same CPU during
the 64-bit stats update, the reentrant seqcount update can corrupt the
seqcount state or stats value.
Fix this by performing the 64-bit per-CPU stats update before releasing
drop_queue.lock via spin_unlock_irqrestore(), ensuring local interrupts remain
disabled during the u64_stats update.
📍 영향받는 시스템
Linux kernel (32-bit architectures using drop_monitor)
⚔️ 공격 벡터
로컬 시스템에서 특정 트레이스포인트 프로브를 실행하여 인터럽트 타이밍을 조작함으로써 데이터 손상 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 drop_monitor의 통계 업데이트 로직을 수정해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.