🇰🇷 한글 설명
Linux 커널의 NVMe over RDMA 구현에서 태그 할당 문제로 인한 ABBA 데드락 취약점이 발견되었습니다. 관리 큐(admin_q) 재연결 시 예약된 태그가 이미 다른 요청에 의해 점유되어 있어 재연결이 영구적으로 실패하는 현상이 발생합니다.
💡 쉬운 설명
컴퓨터가 저장 장치와 다시 연결을 시도할 때, 필요한 번호표(태그)가 이미 다른 작업에 사용 중이라 연결을 무한히 기다리는 문제가 있습니다. 이로 인해 시스템이 저장 장치와 통신하지 못하는 상태에 빠질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nvme: fix reconnection fail due to reserved tag allocation
We found a issue on production environment while using NVMe over RDMA,
admin_q reconnect failed forever while remote target and network is ok.
After dig into it, we found it may caused by a ABBA deadlock due to tag
allocation. In my case, the tag was hold by a keep alive request
waiting inside admin_q, as we quiesced admin_q while reset ctrl, so the
request maked as idle and will not process before reset success. As
fabric_q shares tagset with admin_q, while reconnect remote target, we
need a tag for connect command, but the only one reserved tag was held
by keep alive command which waiting inside admin_q. As a result, we
failed to reconnect admin_q forever. In order to fix this issue, I
think we should keep two reserved tags for admin queue.
📍 영향받는 시스템
NVMe over RDMA를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
직접적인 외부 공격보다는 특정 네트워크 환경 및 컨트롤러 리셋 상황에서 발생하는 시스템 가용성 저하(DoS) 문제
🛡️ 대응 방법
관리 큐(admin_q)를 위해 예약된 태그를 2개 이상 유지하도록 커널을 업데이트합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인합니다.