🔍 CVE-2026-99066

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-23 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 CAN 장치 드라이버에서 init_can_skb() 함수가 skb의 헤더 초기화(mac_header, network_header, transport_header 리셋)를 누락하여, 수신된 CAN skb가 mac_header=0xFFFF 상태로 전달됩니다. 이로 인해 SOCK_PACKET 경로의 packet_rcv_spkt()에서 길이 계산이 오버플로되어 skb_under_panic 및 커널 BUG가 발생하고 시스템 전체가 패닉될 수 있습니다.

💡 쉬운 설명

CAN 통신 장치가 받은 데이터 패킷의 위치 정보를 제대로 설정하지 않아서, 특정 네트워크 처리 과정에서 계산 오류가 발생합니다. 그 결과 리눅스 시스템이 갑자기 멈추거나 재부팅될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: can: dev: init_can_skb(): restore skb header initialization Commit 9f10374bb024 ("can: remove private CAN skb headroom infrastructure") removed the skb_reset_mac_header()/skb_reset_network_header()/ skb_reset_transport_header() calls from init_can_skb(). As a result, RX skbs from alloc_can_skb() and friends again carry mac_header = 0xFFFF. When such an skb reaches packet_rcv_spkt() (SOCK_PACKET), the push length calculation overflows and triggers skb_under_panic -> kernel BUG -> full machine panic. The same issue was originally reported in 2014 on linux-can and fixed by commit 969439016d2c ("can: add missing initialisations in CAN related skbuffs"). packet_rcv_spkt() itself has never been hardened: only packet_rcv() and tpacket_rcv() gained dev_has_header() checks in commit d549699048b4 ("net/packet: fix packet receive on L3 devices without visible hard header").

📍 영향받는 시스템

커널 버전 9f10374bb024 커밋 이후의 Linux 커널 중 CAN 서브시스템을 사용하는 시스템 (CVSS 미정)

⚔️ 공격 벡터

CAN 버스 또는 가상 CAN 인터페이스로 조작된 프레임을 수신시켜 SOCK_PACKET 소켓 경로에서 커널 패닉을 유발하는 서비스 거부(DoS) 공격

🛡️ 대응 방법

패치된 Linux 커널 버전으로 업데이트하고, 해당 수정이 포함된 init_can_skb() 헤더 초기화 복원 커밋을 적용하며, 필요 시 SOCK_PACKET 사용을 제한

🔧 검증 코드

출력된 커널 버전이 패치가 포함된 버전인지 배포판 보안 공지와 대조하고, CAN 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않습니다.

Shell / Script
uname -r && (lsmod | grep -E '^can' || echo 'CAN 모듈 미로드')

💻 영향받는 소프트웨어

Linux Kernel