🇰🇷 한글 설명
Linux 커널의 TCP 스택에서 BIG TCP 기능을 사용할 때 skb_copy_ubufs() 함수가 skb 길이를 잘못 처리하여 시스템 충돌이 발생할 수 있는 취약점입니다. 특히 거대 페이지(hugepages)를 사용하는 TCP 제로카피 환경에서 skb 크기가 약 68KB를 초과할 경우 메모리 관리 오류가 발생합니다.
💡 쉬운 설명
대용량 데이터를 빠르게 전송하는 기술을 사용할 때, 컴퓨터가 데이터의 크기를 잘못 계산하여 시스템이 갑자기 멈추거나 꺼질 수 있는 문제입니다. 데이터가 너무 크면 메모리를 처리하는 과정에서 혼란이 생겨 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tcp: fix skb_copy_ubufs() vs BIG TCP
David Ahern reported crashes in skb_copy_ubufs() caused by TCP tx zerocopy
using hugepages, and skb length bigger than ~68 KB.
skb_copy_ubufs() assumed it could copy all payload using up to
MAX_SKB_FRAGS order-0 pages.
This assumption broke when BIG TCP was able to put up to 512 KB per skb.
We did not hit this bug at Google because we use CONFIG_MAX_SKB_FRAGS=45
and limit gso_max_size to 180000.
A solution is to use higher order pages if needed.
v2: add missing __GFP_COMP, or we leak memory.
📍 영향받는 시스템
BIG TCP 및 Zero-copy 기능을 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
특수하게 조작된 대용량 TCP 패킷을 전송하여 커널 패닉(Crash) 유도
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 최신 릴리스 버전인지 확인