🇰🇷 한글 설명
Linux 커널의 sg.c 파일에 있는 sg_ioctl 함수에서 SG_NEXT_CMD_LEN ioctl 호출 시 과도한 명령 크기를 처리하지 못해 스택 기반 버퍼 오버플로우가 발생합니다. 이는 sg_write 함수에서 경계를 벗어난 쓰기 접근을 유발하여 서비스 거부 또는 임의 코드 실행을 야기할 수 있습니다.
💡 쉬운 설명
Linux 커널의 SCSI 장치 드라이버에서 잘못된 크기의 데이터를 보내면 메모리가 손상되어 시스템이 충돌할 수 있습니다. 로컬 접근 권한이 있는 공격자가 이를 악용할 수 있습니다.
🇺🇸 원문 (English)
The sg_ioctl function in drivers/scsi/sg.c in the Linux kernel through 4.10.4 allows local users to cause a denial of service (stack-based buffer overflow) or possibly have unspecified other impact via a large command size in an SG_NEXT_CMD_LEN ioctl call, leading to out-of-bounds write access in the sg_write function.
📍 영향받는 시스템
Linux kernel 버전 4.10.4 이하 (SCSI sg 드라이버)
⚔️ 공격 벡터
로컬 사용자가 SG_NEXT_CMD_LEN ioctl을 통해 비정상적으로 큰 명령 크기를 전송하여 메모리 오버플로우 트리거
🛡️ 대응 방법
Linux 커널을 4.10.5 이상으로 업그레이드하거나 SCSI sg 드라이버 관련 패치 적용
🔧 검증 코드
커널 버전이 4.10.4 이하면 'Vulnerable', 그 외에는 'Check required' 출력 (정확한 판단은 배포판 패치 상태 확인 필요)
uname -r | awk -F. '{if($1==4 && $2==10 && $3<=4) print "Vulnerable"; else print "Check required"}'