🇰🇷 한글 설명
Linux 커널의 PPPoE 구현에서 dev_hard_header() 호출 전 저장된 헤더 포인터가 유효하지 않게 될 수 있는 취약점이 발견되었습니다. 특정 조건에서 장치 헤더 콜백이 skb 헤더를 재할당하면, PPPoE가 해제된 메모리 영역에 데이터를 쓰는 Use-After-Free 문제가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 보낼 때 메모리 주소를 잘못 참조하여 시스템 오류나 보안 문제가 생길 수 있는 결함입니다. 데이터가 저장된 위치가 바뀌었는데 옛날 주소를 계속 사용하여 엉뚱한 곳에 데이터를 쓰는 상황입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
pppoe: reload header pointer after dev_hard_header()
pppoe_sendmsg() saves a pointer to the PPPoE header before calling
dev_hard_header(). Device header callbacks are allowed to reallocate the
skb head, invalidating pointers into it.
This can happen when a send is blocked in copy_from_user() while the first
non-Ethernet port is added to an empty team device. The team's delegated
GRE header callback then expands the skb head. PPPoE subsequently writes
six bytes through the stale pointer into the freed head.
Reload the PPPoE header through the skb's network-header offset after
device header creation. pskb_expand_head() updates that offset when it
relocates the head.
📍 영향받는 시스템
Linux kernel (PPPoE 및 team device 사용 환경)
⚔️ 공격 벡터
특정 네트워크 구성(team device 및 GRE 헤더 콜백) 하에서 조작된 패킷 전송을 통한 메모리 오염
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.