🇰🇷 한글 설명
Linux 커널의 Bluetooth L2CAP 모듈에서 l2cap_sock_alloc() 함수가 NULL 소켓 포인터를 적절히 처리하지 못하는 취약점입니다. l2cap_sock_new_connection_cb()에서 호출될 때 에러 핸들링 경로에서 NULL 포인터를 검증하지 않아 NULL 포인터 역참조가 발생할 수 있습니다.
💡 쉬운 설명
Bluetooth 통신 기능에서 메모리 포인터를 제대로 확인하지 않아 시스템 충돌이 발생할 수 있습니다. 로컬에서 Bluetooth를 통해 악의적인 요청을 보내면 커널 패닉을 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: L2CAP: handle NULL sock pointer in l2cap_sock_alloc
A NULL sock pointer is passed into l2cap_sock_alloc() when it is called
from l2cap_sock_new_connection_cb() and the error handling paths should
also be aware of it.
Seemingly a more elegant solution would be to swap bt_sock_alloc() and
l2cap_chan_create() calls since they are not interdependent to that moment
but then l2cap_chan_create() adds the soon to be deallocated and still
dummy-initialized channel to the global list accessible by many L2CAP
paths. The channel would be removed from the list in short period of time
but be a bit more straight-forward here and just check for NULL instead of
changing the order of function calls.
Found by Linux Verification Center (linuxtesting.org) with SVACE static
analysis tool.
📍 영향받는 시스템
Linux 커널의 Bluetooth L2CAP 모듈 (패치 이전 버전)
⚔️ 공격 벡터
로컬에서 Bluetooth 연결 요청을 조작하여 l2cap_sock_new_connection_cb() 호출 시 NULL 포인터 역참조 유발
🛡️ 대응 방법
Linux 커널을 패치된 버전으로 업그레이드 (2024-58009 fix 적용된 버전 이상)
🔧 검증 코드
커널 버전 확인 후 Bluetooth L2CAP이 활성화되어 있는지 확인. 패치된 커널 버전 이상이면 안전함
uname -r && grep -i 'L2CAP\|bluetooth' /boot/config-$(uname -r) 2>/dev/null | head -5