🇰🇷 한글 설명
Linux 커널의 atl1c 네트워크 드라이버에서 PCIe 링크 또는 MAC이 재설정되는 동안 하드웨어가 범위를 벗어난 tpd_cons 값(0xffff)을 보고할 수 있는 취약점입니다. 이로 인해 드라이버가 유효하지 않은 값을 처리하는 과정에서 무한 루프에 빠져 CPU 소프트 락업(soft lockup) 현상이 발생할 수 있습니다.
💡 쉬운 설명
네트워크 카드가 재시작될 때 잘못된 신호를 보내면 컴퓨터의 두뇌 역할을 하는 CPU가 특정 작업에 갇혀서 멈춰버리는 문제입니다. 이로 인해 시스템이 응답하지 않거나 매우 느려질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: atl1c: fix soft lockup on out-of-range tpd_cons read
The hardware can report an out-of-range tpd_cons (seen as 0xffff)
while the PCIe link/MAC is resetting. An out-of-range value can
never be reached and the loop below would spin forever. To avoid
a soft lockup treat it as "nothing new to clean" instead.
Reproduced on two machines, same NIC (Qualcomm Atheros AR8151 v2.0,
4-port), triggered by rebooting a Mikrotik CCR2004 PCIe card that
the ports are directly linked to:
- Ubuntu 26.04.1 LTS, kernel 7.0.0-31-generic. The link-flap
precursor, before the lockup was captured with a full trace
elsewhere:
atl1c 0000:05:00.0 enp5s0f0: NETDEV WATCHDOG: CPU: 4: transmit queue 2 timed out 489984 ms
atl1c 0000:05:00.0: MAC state machine can't be idle since disabled for 10ms second
atl1c 0000:05:00.0: atl1c: enp5s0f0 NIC Link is Up<65535 Mbps Full Duplex>
65535 (0xffff) here is the same value tpd_cons reads back once the
loop below gets stuck.
- Proxmox VE, kernel 7.0.14-11-pve. Same NIC/trigger, this time
caught by the soft lockup watchdog with a full stack trace:
watchdog: BUG: soft lockup - CPU#12 stuck for 354s! [napi/eth%d-0:329]
CPU: 12 UID: 0 PID: 329 Comm: napi/eth%d-0 Tainted: P O L 7.0.14-11-pve #1 PREEMPT(lazy)
RIP: 0010:atl1c_clean_tx+0x142/0x2d0 [atl1c]
Call Trace:
<TASK>
__napi_poll+0x32/0x1e0
napi_threaded_poll_loop+0x286/0x2e0
napi_threaded_poll+0xfd/0x140
kthread+0xf7/0x130
ret_from_fork+0x2da/0x3a0
ret_from_fork_asm+0x1a/0x30
</TASK>
📍 영향받는 시스템
Linux kernel (atl1c driver 사용 시스템, 예: Ubuntu 26.04.1 LTS, Proxmox VE 등)
⚔️ 공격 벡터
하드웨어(NIC)의 물리적 상태 변화(PCIe/MAC 리셋)를 유도하여 발생 (로컬/물리적 트리거)
🛡️ 대응 방법
atl1c 드라이버의 소프트 락업 수정 사항이 포함된 최신 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 버전인지 배포판 보안 공지를 통해 확인하십시오.