🔍 CVE-2026-63980

7.5
CVSS Score
HIGH
2026-07-19
2026-10-19 21:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 net/handshake 구성 요소에서 소프트인터럽트(BH) 컨텍스트와 프로세스 컨텍스트 간의 잠금 순서 문제로 인한 데드락 취약점이 발견되었습니다. nvmet_tcp_state_change() 함수가 실행될 때 일반 spin_lock을 사용함으로써, 동일한 CPU에서 소프트인터럽트가 발생할 경우 시스템이 멈출 수 있습니다.

💡 쉬운 설명

컴퓨터 내부에서 작업을 처리하는 순서가 꼬여서 시스템이 아무것도 못 하고 멈춰버리는 현상이 발생할 수 있습니다. 특정 네트워크 연결을 끊는 과정에서 발생하는 충돌로 인해 발생합니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net/handshake: Use spin_lock_bh for hn_lock nvmet_tcp_state_change(), a socket callback that runs in BH context, can reach handshake_req_cancel() via nvmet_tcp_schedule_release_queue() and tls_handshake_cancel(). handshake_req_cancel() acquires hn->hn_lock with plain spin_lock(). If a process-context thread on the same CPU holds hn->hn_lock when a softirq invokes the cancel path, the lock attempt deadlocks. This is the only caller that invokes tls_handshake_cancel() from BH context; every other consumer calls it from process context. Deferring the cancel to process context in the NVMe target is not straightforward: nvmet_tcp_schedule_release_queue() must call tls_handshake_cancel() atomically with its state transition to DISCONNECTING. If the cancel were deferred, the handshake completion callback could fire in the window before the cancel runs, observe the unexpected state, and return without dropping its kref on the queue. Reworking that interlock is considerably more invasive than hardening the handshake lock. Convert all hn->hn_lock acquisitions from spin_lock/spin_unlock to spin_lock_bh/spin_unlock_bh so the lock is never taken with softirqs enabled.

📍 영향받는 시스템

Linux Kernel (net/handshake 및 nvmet_tcp 관련 모듈 사용 시스템)

⚔️ 공격 벡터

특정 네트워크 환경에서 NVMe over TCP 연결을 생성하거나 해제하는 과정에서 트리거 가능

🛡️ 대응 방법

커널 패치를 적용하여 hn_lock 획득 방식을 spin_lock에서 spin_lock_bh로 변경

🔧 검증 코드

출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel