🔍 CVE-2026-99239

7.8
CVSS Score
HIGH
2026-11-02
2026-11-03 20:18
✅ 완료

🇰🇷 한글 설명

Linux 커널 Bluetooth L2CAP 서브시스템에서 l2cap_chan이 l2cap_conn에 두 번 연결되는 TOCTOU 경쟁 조건이 존재합니다. 동시에 실행되는 connect()와 bind() 호출 간 상태 불일치로 인해 불변식이 깨지며, 이는 메모리 손상 또는 커널 크래시로 이어질 수 있습니다.

💡 쉬운 설명

여러 프로그램이 동시에 블루투스 연결을 시도할 때 내부 상태가 꼬이는 문제입니다. 공격자는 이를 이용해 시스템을 불안정하게 만들거나 권한 상승을 시도할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: refuse __l2cap_chan_add if chan already has conn l2cap_chan may be linked to l2cap_conn at most once. This is assumed in several places, eg l2cap_chan_del cleanup. There is a TOCTOU race where the invariant is violated: [Task 1] [Task 2] l2cap_chan_connect l2cap_sock_bind l2cap_chan_lock lock_sock l2cap_state_change if (sk->sk_state != BT_OPEN) chan->state = BT_CONNECT l2cap_sock_state_change_cb chan->state = BT_BOUND sk->sk_state = BT_BOUND lock_sock <------------------ release_sock sk->sk_state = BT_CONNECT l2cap_sock_connect() does not check sk->sk_state, so since chan->state is now BT_BOUND, subsequent connect() ends up with second __l2cap_chan_add. Explicitly document and check the invariant in __l2cap_chan_add with WARN_ON_ONCE. The only callsite where it could be hit is l2cap_chan_connect, so add pre-check there to avoid relying on chan->state. chan->state read/write is not properly guarded currently so there can be other TOCTOUC problems. Add l2cap_lock_chan in l2cap_sock_bind() to guard chan->state write.

📍 영향받는 시스템

패치가 적용되지 않은 Linux 커널 (Bluetooth L2CAP 모듈 사용 환경)

⚔️ 공격 벡터

로컬 사용자가 경쟁 조건을 유발하도록 동시 connect()/bind() 호출을 반복하여 커널 상태를 손상시킴

🛡️ 대응 방법

배포판 제공 최신 커널 업데이트 적용 또는 해당 커널 패치 커밋 반영 후 재부팅

🔧 검증 코드

출력된 커널 버전을 배포판 보안 공지와 대조하여 CVE-2026-99239 수정 버전 이상인지 확인하며, 해당 버전 이하이면 취약한 것으로 판단합니다.

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel