🇰🇷 한글 설명
Linux 커널의 sch_cake qdisc에서 TCP 옵션을 파싱할 때 경계 외 메모리를 읽는 취약점이 발견되었습니다. TCP 옵션 길이가 1인 경우, 특정 조건에서 루프가 실행되며 지정된 범위를 벗어난 1바이트를 추가로 읽어 들일 수 있습니다.
💡 쉬운 설명
인터넷 데이터 패킷을 처리하는 과정에서 데이터의 길이를 잘못 계산하여, 허용되지 않은 메모리 영역을 몰래 읽을 수 있는 문제입니다. 이로 인해 시스템 정보가 유출되거나 프로그램이 예기치 않게 종료될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sch_cake: Fix out of bounds when parsing TCP options and header
The TCP option parser in cake qdisc (cake_get_tcpopt and
cake_tcph_may_drop) could read one byte out of bounds. When the length
is 1, the execution flow gets into the loop, reads one byte of the
opcode, and if the opcode is neither TCPOPT_EOL nor TCPOPT_NOP, it reads
one more byte, which exceeds the length of 1.
This fix is inspired by commit 9609dad263f8 ("ipv4: tcp_input: fix stack
out of bounds when parsing TCP options.").
v2 changes:
Added doff validation in cake_get_tcphdr to avoid parsing garbage as TCP
header. Although it wasn't strictly an out-of-bounds access (memory was
allocated), garbage values could be read where CAKE expected the TCP
header if doff was smaller than 5.
📍 영향받는 시스템
Linux Kernel (sch_cake qdisc를 사용하는 시스템)
⚔️ 공격 벡터
조작된 TCP 옵션이 포함된 패킷을 전송하여 커널의 메모리 경계 외 읽기 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 패치 버전인지 확인합니다.