🔍 CVE-2026-74470

7.8
CVSS Score
HIGH
2026-08-15
2026-10-16 20:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 scsi_debug 모듈에서 REPORT ZONES 명령 처리 시 발생하는 정수 언더플로우 및 Out-of-Bounds(OOB) 쓰기 취약점입니다. 32비트 시스템에서 특정 크기의 할당 요청 시 메모리 크기가 0으로 절단되어 잘못된 메모리 주소에 데이터를 쓰는 문제가 발생할 수 있습니다.

💡 쉬운 설명

컴퓨터가 메모리 크기를 계산하는 과정에서 숫자가 너무 커져 0으로 잘못 인식되는 오류가 있습니다. 이로 인해 시스템이 엉뚱한 메모리 위치에 데이터를 쓰려고 시도하다가 시스템이 멈추거나 충돌할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: scsi: scsi_debug: Fix REPORT ZONES alloc_len underflow OOB write resp_report_zones() sizes the reply buffer from the CDB allocation length. The v3 fix rounds alloc_len up with ALIGN() before deriving the descriptor count: rep_max_zones = (ALIGN((u64)alloc_len, RZONES_DESC_HD) - RZONES_DESC_HD) >> ilog2(RZONES_DESC_HD); arr_len = (u64)RZONES_DESC_HD * (rep_max_zones + 1); For alloc_len in 0xFFFFFFC1..0xFFFFFFFF, ALIGN() rounds up to 0x100000000, so arr_len is 4 GB. On 32-bit, kzalloc()'s size_t is 32-bit and truncates 0x100000000 to 0; kzalloc(0) returns ZERO_SIZE_PTR, which passes the !arr check, and desc = arr + 64 is then dereferenced in the loop -> out-of-bounds write / panic. Clamp rep_max_zones to devip->nr_zones. The loop already stops at sdebug_capacity (after nr_zones zones), so a report can never hold more than nr_zones descriptors; the clamp does not change the report, it only bounds arr_len to (nr_zones + 1) * RZONES_DESC_HD, a real device property that can never reach 0x100000000.

📍 영향받는 시스템

scsi_debug 모듈을 사용하는 32비트 Linux 커널 시스템

⚔️ 공격 벡터

조작된 SCSI REPORT ZONES 명령을 통해 커널 메모리 오염 유도

🛡️ 대응 방법

scsi_debug의 rep_max_zones 값을 장치의 실제 존(zone) 개수로 제한하도록 커널 패치 적용

🔧 검증 코드

커널 버전과 scsi_debug 모듈 정보를 확인하여 최신 보안 패치가 적용된 커널인지 확인합니다.

Shell / Script
uname -a && modinfo scsi_debug 2>/dev/null

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

NVIDIA Cloud Gaming Guest Driver for Linux