🇰🇷 한글 설명
Linux 커널의 SCSI bsg 드라이버에서 io_uring 패스스루 명령 설정 시 TOCTOU(Time-of-Check to Time-of-Use) 취약점이 발견되었습니다. 사용자 공간에서 공유된 mmap 영역의 SQE 필드를 검사 직후 변경할 수 있어, copy_from_user() 호출 시 scmd->cmnd 버퍼 오버플로우를 유발할 수 있습니다.
💡 쉬운 설명
프로그램이 데이터를 검사한 직후, 실제 사용하기 전 찰나의 순간에 데이터가 바뀌어 발생하는 보안 허점입니다. 공격자가 이 틈을 타서 허용된 크기보다 더 큰 데이터를 밀어 넣어 시스템을 망가뜨릴 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: bsg: Fix TOCTOU in io_uring passthrough command setup
scsi_bsg_uring_cmd() reads bsg_uring_cmd from the shared mmap'd SQE.
Userspace can change a field after we check it and before we use it.
request_len is the sharp case: it can grow past sizeof(scmd->cmnd) after
the bound check and overflow scmd->cmnd in copy_from_user().
READ_ONCE() the SQE fields we check or use into locals before use.
📍 영향받는 시스템
io_uring 및 SCSI bsg를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
공유 메모리(mmap)를 통해 io_uring SQE의 request_len 값을 검사 시점과 사용 시점 사이에 조작하는 방식
🛡️ 대응 방법
커널 패치를 적용하여 SQE 필드를 로컬 변수로 먼저 복사(READ_ONCE)한 뒤 검사 및 사용하도록 업데이트해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.