CVE-2026-74667 in Linux
요약
\~에 의해 VulDB • 2026. 08. 23.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net/packet: 패킷 소켓 전송 경로에서 MAC 헤더를 초기화합니다
packet_parse_headers()는 프로토콜이 바인딩되지 않은 SOCK_RAW 프레임에 대해서만 MAC 헤더를 초기화합니다. 따라서 프로토콜이 바인딩된 SOCK_RAW 소켓, 모든 SOCK_DGRAM 프레임 및 레거시 SOCK_PACKET 경로는 여기서 skb->mac_header가 설정되지 않은 상태로 남습니다.
__dev_queue_xmit()을 통해 전송되는 프레임의 경우 이는 무해합니다: 이 함수는 MAC 헤더를 조건 없이 초기화하기 때문입니다. 그러나 패킷 소켓의 PACKET_QDISC_BYPASS 경로는 dev_direct_xmit()를 사용하며, 이 함수는 MAC 헤더를 초기화하지 않습니다. 그 결과 프레임이 ndo_start_xmit()에 도달할 때 MAC 헤더가 설정되지 않은 상태가 됩니다. 전송 시 eth_hdr(skb)를 읽는 드라이버는 skb->head + (u16)~0을 역참조하게 되며, 이는 head로부터 약 64 KiB 떨어진 바깥 영역(out-of-bounds)에 대한 접근입니다. 이 문제는 커밋 f5089008f90c("macsec: do not read an unset MAC header in macsec_encrypt()")에서 하나의 소비자(consumer)를 위해 수정된 것과 동일한 클래스의 문제입니다.
packet_parse_headers()는 전송 경로에서만 실행되며, 여기서 skb->data는 패킷 소켓 유형과 관계없이 모든 패킷에 대해 L2 헤더의 시작점을 가리킵니다: SOCK_RAW와 SOCK_PACKET은 사용자가 제공한 헤더를 포함하고 있으며, SOCK_DGRAM은 dev_hard_header()가 생성하는 헤더를 갖습니다. __dev_queue_xmit()을 모방하여 MAC 헤더를 조건 없이 초기화함으로써, 프레임이 우회(bypass) 경로에서도 올바르게 고정되도록 합니다.
0sec(https://0sec.ai)에 의해 자동 소스 분석을 통해 발견되었으며, 소스를 대조하고 f5089008f90c의 macsec KASAN 보고서와 일치시켰습니다. 컴파일 테스트 완료.
If you want to get best quality of vulnerability data, you may have to visit VulDB.