🇰🇷 한글 설명
Linux 커널의 Bluetooth L2CAP 프로토콜에서 설정 옵션의 길이를 검증하기 전에 값을 먼저 읽어 발생하는 취약점입니다. 공격자가 제어하는 길이 필드를 기반으로 버퍼 범위를 벗어난 메모리 읽기(Out-of-bounds read)가 발생할 수 있습니다.
💡 쉬운 설명
블루투스 연결 과정에서 데이터의 길이를 확인하기도 전에 내용을 먼저 읽어버리는 보안 결함입니다. 이로 인해 시스템의 잘못된 메모리 영역을 건드릴 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: L2CAP: validate option length before reading conf opt value
l2cap_get_conf_opt() derives the option length from the
attacker-controlled opt->len field and immediately dereferences
opt->val (as u8, get_unaligned_le16() or get_unaligned_le32(), or a
raw pointer for the default case) before any caller has confirmed
that opt->len bytes are present in the buffer. The callers
(l2cap_parse_conf_req(), l2cap_parse_conf_rsp() and
l2cap_conf_rfc_get()) only detect a malformed option afterwards, once
the running length has gone negative, by which point the
out-of-bounds read has already executed.
An existing post-hoc length check keeps the garbage value from being
consumed, so this is not a data leak in the current control flow. It
is still a validate-after-use ordering bug: up to 4 bytes are read
past the end of the buffer before it is known to contain them, and it
is fragile to future changes in the callers.
Fix it at the source. Pass the end of the buffer into
l2cap_get_conf_opt() and refuse to touch opt->val unless the full
option (header + value) fits. Each caller computes an end pointer
once before the loop and checks the return value directly instead of
inferring the error from a negative length.
📍 영향받는 시스템
Linux Kernel (Bluetooth L2CAP 관련 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 L2CAP 설정 요청(Configuration Request) 패킷을 전송하여 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인하십시오.