🇰🇷 한글 설명
Linux 커널의 SCSI I/O 벡터 처리에서 작은 연속 버퍼가 같은 페이지에 속할 때 메모리 참조 계산이 불균형을 이루는 문제입니다. bio_add_pc_page 함수가 버퍼를 병합하지만 페이지 참조를 제대로 해제하지 않아 메모리 누수가 발생합니다.
💡 쉬운 설명
리눅스의 저장장치 처리 코드에서 메모리 정리가 제대로 되지 않는 결함입니다. 공격자가 이를 악용하면 시스템 메모리를 계속 소비시켜 컴퓨터를 느리게 하거나 중지시킬 수 있습니다.
🇺🇸 원문 (English)
The bio_map_user_iov and bio_unmap_user functions in block/bio.c in the Linux kernel before 4.13.8 do unbalanced refcounting when a SCSI I/O vector has small consecutive buffers belonging to the same page. The bio_add_pc_page function merges them into one, but the page reference is never dropped. This causes a memory leak and possible system lockup (exploitable against the host OS by a guest OS user, if a SCSI disk is passed through to a virtual machine) due to an out-of-memory condition.
📍 영향받는 시스템
Linux kernel 4.13.8 이전 모든 버전 (SCSI 디스크가 가상머신으로 전달되는 환경에서 주로 영향)
⚔️ 공격 벡터
가상머신 게스트 OS의 일반 사용자가 SCSI 디스크를 통해 호스트 시스템의 메모리 누수를 유발
🛡️ 대응 방법
Linux kernel을 4.13.8 이상으로 업데이트
🔧 검증 코드
출력이 'Vulnerable'이면 패치되지 않은 상태이며 즉시 커널 업데이트가 필요합니다.
uname -r | awk -F. '{print ($1<4 || ($1==4 && $2<13) || ($1==4 && $2==13 && $3<8)) ? "Vulnerable" : "Patched"}'