🇰🇷 한글 설명
Linux 커널 4.5 이전 버전의 UDP 처리 로직에서 MSG_PEEK 플래그를 사용한 recv 시스템 콜 실행 중 체크섬 검증이 제대로 수행되지 않아 메모리 손상이 발생합니다. 이를 통해 원격 공격자가 커널 메모리에 접근하여 임의 코드를 실행할 수 있습니다.
💡 쉬운 설명
인터넷을 통해 받는 데이터를 확인할 때(MSG_PEEK), 커널이 데이터 무결성을 제대로 검증하지 않아 공격자가 나쁜 코드를 실행시킬 수 있습니다. 원격에서 특수한 UDP 패킷을 보내기만 하면 되므로 피해자의 추가 동작이 필요 없습니다.
🇺🇸 원문 (English)
udp.c in the Linux kernel before 4.5 allows remote attackers to execute arbitrary code via UDP traffic that triggers an unsafe second checksum calculation during execution of a recv system call with the MSG_PEEK flag.
📍 영향받는 시스템
Linux kernel < 4.5 (모든 아키텍처, UDP 통신을 허용하는 모든 시스템)
⚔️ 공격 벡터
원격 공격자가 특수 조작된 UDP 패킷을 대상 시스템으로 전송하여 MSG_PEEK 플래그 처리 시 메모리 손상 유도
🛡️ 대응 방법
Linux 커널을 4.5 이상으로 업그레이드하거나 udp.c 패치 적용
🔧 검증 코드
VULNERABLE이 출력되면 커널이 취약하고 패치 필요, 아무것도 출력되지 않으면 커널 4.5 이상이므로 안전함
uname -r | grep -oE '^[0-9]+\.[0-9]+' | awk -F. '{if($1<4||($1==4&&$2<5)) print "VULNERABLE"}'