🇰🇷 한글 설명
Linux 커널의 Xilinx Axienet 드라이버에서 DMA 엔진이 시작되기 전에 DQL에 Tx 패킷을 먼저 큐에 넣지 않아 발생하는 레이스 컨디션 취약점입니다. 이로 인해 DMA 엔진이 완료 콜백을 실행할 때 패킷이 아직 큐에 등록되지 않은 상태가 되어 커널 크래시(Kernel BUG)가 발생할 수 있습니다.
💡 쉬운 설명
데이터를 보내는 순서가 꼬여서 컴퓨터의 핵심 시스템인 커널이 갑자기 멈추거나 오류를 일으키는 문제입니다. 데이터를 처리하기 전에 준비 작업을 먼저 끝내지 않아서 발생하는 충돌 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: xilinx: axienet: Enqueue Tx packets in dql before dmaengine starts
Enqueue packets in dql after dma engine starts causes race condition.
Tx transfer starts once dma engine is started and may execute dql dequeue
in completion before it gets queued. It results in following kernel crash
while running iperf stress test:
kernel BUG at lib/dynamic_queue_limits.c:99!
<snip>
Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
pc : dql_completed+0x238/0x248
lr : dql_completed+0x3c/0x248
Call trace:
dql_completed+0x238/0x248
axienet_dma_tx_cb+0xa0/0x170
xilinx_dma_do_tasklet+0xdc/0x290
tasklet_action_common+0xf8/0x11c
tasklet_action+0x30/0x3c
handle_softirqs+0xf8/0x230
<snip>
Start dmaengine after enqueue in dql fixes the crash.
📍 영향받는 시스템
Xilinx Axienet 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
네트워크 트래픽 부하(예: iperf 스트레스 테스트)를 통한 레이스 컨디션 유도 및 커널 크래시 유발
🛡️ 대응 방법
DMA 엔진을 시작하기 전에 DQL에 패킷을 먼저 큐에 넣도록 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.