🇰🇷 한글 설명
Linux 커널의 IPv4 패킷 처리 과정 중 paged allocation 경로에서 fraggap(파편화 간격)을 제대로 계산하지 못하는 취약점이 발견되었습니다. 이로 인해 데이터 복사 시 할당된 메모리 크기보다 더 많은 데이터를 쓰려고 시도하여 메모리 오버플로우가 발생할 수 있습니다.
💡 쉬운 설명
인터넷 데이터를 조각내어 보낼 때, 데이터 사이의 빈 공간을 계산하는 과정에서 실수가 발생했습니다. 이 실수 때문에 컴퓨터 메모리의 정해진 공간보다 더 많은 데이터를 억지로 집어넣으려다 시스템 오류가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ipv4: account for fraggap on the paged allocation path
In __ip_append_data(), when the paged-allocation branch is taken,
alloclen and pagedlen are computed as
alloclen = fragheaderlen + transhdrlen;
pagedlen = datalen - transhdrlen;
datalen already includes fraggap, but the fraggap bytes carried over
from the previous skb are copied into the new skb's linear area at
offset transhdrlen by the subsequent skb_copy_and_csum_bits(). The
linear area is therefore undersized by fraggap bytes while pagedlen is
overstated by the same amount.
The non-paged branch sets alloclen to fraglen, which already accounts
for fraggap because datalen does. Bring the paged branch in line by
adding fraggap to alloclen and subtracting it from pagedlen.
After this adjustment, copy no longer collapses to -fraggap on the
paged path, so remove the stale comment describing that old arithmetic.
📍 영향받는 시스템
fraggap 계산 오류가 포함된 이전 버전의 Linux 커널
⚔️ 공격 벡터
조작된 IPv4 패킷을 전송하여 커널 메모리 오버플로우 유도
🛡️ 대응 방법
fraggap 계산 로직이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인