🇰🇷 한글 설명
Linux 커널의 mlx5 드라이버에서 명령 플러시(command flush) 흐름 중 레이스 컨디션(Race Condition)이 발생하여 Use-After-Free 취약점이 존재합니다. 특정 명령이 참조 횟수를 해제하고 인덱스를 자유롭게 하는 동안 다른 프로세스가 해당 명령에 접근하여 참조 횟수를 증가시키려 할 때 발생합니다.
💡 쉬운 설명
컴퓨터 부품을 제어하는 명령어가 처리되는 과정에서, 이미 삭제된 명령어를 다른 프로세스가 다시 사용하려고 시도하면서 발생하는 오류입니다. 이로 인해 시스템이 예기치 않게 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/mlx5: Fix a race on command flush flow
Fix a refcount use after free warning due to a race on command entry.
Such race occurs when one of the commands releases its last refcount and
frees its index and entry while another process running command flush
flow takes refcount to this command entry. The process which handles
commands flush may see this command as needed to be flushed if the other
process released its refcount but didn't release the index yet. Fix it
by adding the needed spin lock.
It fixes the following warning trace:
refcount_t: addition on 0; use-after-free.
WARNING: CPU: 11 PID: 540311 at lib/refcount.c:25 refcount_warn_saturate+0x80/0xe0
...
RIP: 0010:refcount_warn_saturate+0x80/0xe0
...
Call Trace:
<TASK>
mlx5_cmd_trigger_completions+0x293/0x340 [mlx5_core]
mlx5_cmd_flush+0x3a/0xf0 [mlx5_core]
enter_error_state+0x44/0x80 [mlx5_core]
mlx5_fw_fatal_reporter_err_work+0x37/0xe0 [mlx5_core]
process_one_work+0x1be/0x390
worker_thread+0x4d/0x3d0
? rescuer_thread+0x350/0x350
kthread+0x141/0x160
? set_kthread_struct+0x40/0x40
ret_from_fork+0x1f/0x30
</TASK>
📍 영향받는 시스템
Mellanox(mlx5) 네트워크 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
로컬 시스템에서 특정 네트워크 명령을 반복적으로 실행하여 레이스 컨디션을 유도하는 방식
🛡️ 대응 방법
Mellanox 드라이버의 레이스 컨디션 수정을 포함한 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인합니다.