🇰🇷 한글 설명
Linux 커널의 Xen netfront 드라이버에서, 응답 체인의 슬롯 수가 skb 프래그 한도를 초과할 때 xennet_fill_frags() 실패 시 해당 skb가 해제되지 않아 메모리 누수가 발생하는 문제입니다. 해당 skb를 tmpq에 되돌려 놓는 방식으로 수정되었습니다.
💡 쉬운 설명
Xen 가상화 환경의 네트워크 드라이버가 특정 상황에서 데이터 버퍼를 반환하지 않아 메모리가 조금씩 새어 나갑니다. 백엔드가 보내는 데이터 양에 따라 누적되어 시스템 자원이 고갈될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xen/netfront: don't leak the skb when xennet_fill_frags() fails
When a response chain has more slots than fit in the skb's frags,
xennet_fill_frags() returns an error and xennet_poll() jumps to its
error path. That path moves what's left on tmpq to errq to be freed,
but the skb being filled was already dequeued from tmpq, so it's never
freed. Each chain that overflows leaks the skb and the pages attached
to it as frags, and the backend decides how many slots it sends.
Put the skb back on tmpq before taking the error path, like the
xennet_set_skb_gso() failure just above it does.
📍 영향받는 시스템
패치 이전의 Linux 커널 (Xen netfront 드라이버를 사용하는 Xen 게스트 VM), 정확한 영향 버전은 확인 필요
⚔️ 공격 벡터
악성 또는 손상된 Xen 백엔드(또는 이를 장악한 공격자)가 과도한 슬롯으로 구성된 응답 체인을 반복 전송하여 게스트의 메모리를 고갈시키는 서비스 거부(DoS) 공격
🛡️ 대응 방법
수정이 포함된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고 및 패치된 커널 버전과 비교하여, 해당 수정이 포함된 빌드인지 확인합니다 (패치 전 버전이면 취약할 수 있음).