🇰🇷 한글 설명
Linux 커널의 PPPoE 드라이버가 RFC 2516 권장 사항을 준수하지 않고 프로토콜 필드 압축(PFC) 프레임을 허용하는 취약점입니다. 공격자가 압축된 프레임을 전송할 경우 데이터가 1바이트씩 밀리면서 네트워크 헤더 정렬이 어긋나고, 특정 아키텍처에서 정렬되지 않은 접근 예외(unaligned access exception)를 유발할 수 있습니다.
💡 쉬운 설명
인터넷 연결 방식 중 하나인 PPPoE에서 데이터 형식을 비정상적으로 압축해 보내면 시스템이 혼란을 겪을 수 있습니다. 이로 인해 컴퓨터의 특정 부품이 데이터를 읽는 과정에서 오류가 발생하거나 시스템이 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
pppoe: drop PFC frames
RFC 2516 Section 7 states that Protocol Field Compression (PFC) is NOT
RECOMMENDED for PPPoE. In practice, pppd does not support negotiating
PFC for PPPoE sessions, and the current PPPoE driver assumes an
uncompressed (2-byte) protocol field. However, the generic PPP layer
function ppp_input() is not aware of the negotiation result, and still
accepts PFC frames.
If a peer with a broken implementation or an attacker sends a frame with
a compressed (1-byte) protocol field, the subsequent PPP payload is
shifted by one byte. This causes the network header to be 4-byte
misaligned, which may trigger unaligned access exceptions on some
architectures.
To reduce the attack surface, drop PPPoE PFC frames. Introduce
ppp_skb_is_compressed_proto() helper function to be used in both
ppp_generic.c and pppoe.c to avoid open-coding.
📍 영향받는 시스템
PFC(Protocol Field Compression)를 허용하는 설정의 Linux Kernel (PPPoE 드라이버 포함)
⚔️ 공격 벡터
압축된 프로토콜 필드(1바이트)를 포함한 악의적인 PPPoE 프레임을 전송하여 데이터 정렬 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 PPPoE PFC 프레임을 차단하도록 수정
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인