🇰🇷 한글 설명
Linux 커널 Bluetooth SCO 소켓의 setsockopt 함수에서 사용자 입력 길이를 검증하지 않아 발생하는 힙 버퍼 오버플로우 취약점. 로컬 공격자가 조작된 setsockopt 호출을 통해 커널 메모리를 읽거나 서비스 거부를 유발할 수 있습니다.
💡 쉬운 설명
Linux 커널의 Bluetooth 기능에서 사용자가 보낸 데이터 크기를 확인하지 않아 메모리에 과도한 데이터를 쓸 수 있는 문제입니다. 같은 컴퓨터에 접근한 공격자가 이를 악용해 시스템을 충돌시키거나 민감한 정보를 읽을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: SCO: Fix not validating setsockopt user input
syzbot reported sco_sock_setsockopt() is copying data without
checking user input length.
BUG: KASAN: slab-out-of-bounds in copy_from_sockptr_offset
include/linux/sockptr.h:49 [inline]
BUG: KASAN: slab-out-of-bounds in copy_from_sockptr
include/linux/sockptr.h:55 [inline]
BUG: KASAN: slab-out-of-bounds in sco_sock_setsockopt+0xc0b/0xf90
net/bluetooth/sco.c:893
Read of size 4 at addr ffff88805f7b15a3 by task syz-executor.5/12578
📍 영향받는 시스템
Bluetooth SCO를 지원하는 Linux kernel 5.18 이전 버전 (정확한 범위는 배포판과 백포트 패치에 따라 달라짐)
⚔️ 공격 벡터
로컬 공격자가 sco_sock_setsockopt()에 부적절한 길이의 데이터를 전달하여 힙 오버플로우 트리거
🛡️ 대응 방법
Linux 커널을 5.18 이상의 패치된 버전으로 업데이트 또는 배포판 보안 업데이트 적용
🔧 검증 코드
커널 버전을 확인하여 5.18 이상이면 안전, 미만이면 업데이트 필요
uname -r | grep -oE '[0-9]+\.[0-9]+' | head -1 | awk -F. '{if($1>5||($1==5&&$2>=18)) print "patched"; else print "vulnerable"}'