🇰🇷 한글 설명
Linux 커널의 mlx5 드라이버에서 장치가 내부 오류 상태일 때 펌웨어 완료 신호가 도착하면 Use-After-Free 취약점이 발생합니다. 이로 인해 참조 카운트 언더플로우가 발생하여 시스템 안정성이 저해될 수 있습니다.
💡 쉬운 설명
장치에 오류가 발생한 상태에서 잘못된 신호가 들어오면, 이미 사용이 끝난 메모리 영역을 다시 건드려 시스템이 멈추거나 충돌할 수 있는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/mlx5: Discard command completions in internal error
Fix use after free when FW completion arrives while device is in
internal error state. Avoid calling completion handler in this case,
since the device will flush the command interface and trigger all
completions manually.
Kernel log:
------------[ cut here ]------------
refcount_t: underflow; use-after-free.
...
RIP: 0010:refcount_warn_saturate+0xd8/0xe0
...
Call Trace:
<IRQ>
? __warn+0x79/0x120
? refcount_warn_saturate+0xd8/0xe0
? report_bug+0x17c/0x190
? handle_bug+0x3c/0x60
? exc_invalid_op+0x14/0x70
? asm_exc_invalid_op+0x16/0x20
? refcount_warn_saturate+0xd8/0xe0
cmd_ent_put+0x13b/0x160 [mlx5_core]
mlx5_cmd_comp_handler+0x5f9/0x670 [mlx5_core]
cmd_comp_notifier+0x1f/0x30 [mlx5_core]
notifier_call_chain+0x35/0xb0
atomic_notifier_call_chain+0x16/0x20
mlx5_eq_async_int+0xf6/0x290 [mlx5_core]
notifier_call_chain+0x35/0xb0
atomic_notifier_call_chain+0x16/0x20
irq_int_handler+0x19/0x30 [mlx5_core]
__handle_irq_event_percpu+0x4b/0x160
handle_irq_event+0x2e/0x80
handle_edge_irq+0x98/0x230
__common_interrupt+0x3b/0xa0
common_interrupt+0x7b/0xa0
</IRQ>
<TASK>
asm_common_interrupt+0x22/0x40
📍 영향받는 시스템
mlx5 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
장치의 내부 오류 상태를 유도하거나 하드웨어 인터럽트를 조작하여 메모리 오류를 유발
🛡️ 대응 방법
mlx5 드라이버의 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인