🔍 CVE-2025-39788

7.8
CVSS Score
HIGH
2025-09-11
2026-10-19 21:10
✅ 완료

🇰🇷 한글 설명

Linux 커널의 SCSI UFS Exynos 드라이버에서 HCI_UTRL_NEXUS_TYPE 레지스터 프로그래밍 시 32비트 정수 타입의 범위를 초과하는 시프트 연산으로 인한 정의되지 않은 동작이 발생합니다. Google gs101 플랫폼에서 UTP 전송 요청 슬롯이 32개일 때 레지스터 값이 0으로 잘못 계산되며, BIT() 매크로 도입으로 수정되었습니다.

💡 쉬운 설명

리눅스 커널의 저장소 드라이버가 특정 숫자를 계산할 때 허용된 범위를 초과하는 비트 시프트 연산을 수행하여 예기치 않은 결과를 초래할 수 있습니다. Google gs101 칩셋 기반 기기의 저장소 성능에 영향을 줄 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: scsi: ufs: exynos: Fix programming of HCI_UTRL_NEXUS_TYPE On Google gs101, the number of UTP transfer request slots (nutrs) is 32, and in this case the driver ends up programming the UTRL_NEXUS_TYPE incorrectly as 0. This is because the left hand side of the shift is 1, which is of type int, i.e. 31 bits wide. Shifting by more than that width results in undefined behaviour. Fix this by switching to the BIT() macro, which applies correct type casting as required. This ensures the correct value is written to UTRL_NEXUS_TYPE (0xffffffff on gs101), and it also fixes a UBSAN shift warning: UBSAN: shift-out-of-bounds in drivers/ufs/host/ufs-exynos.c:1113:21 shift exponent 32 is too large for 32-bit type 'int' For consistency, apply the same change to the nutmrs / UTMRL_NEXUS_TYPE write.

📍 영향받는 시스템

Google gs101 칩셋 기반 기기, Linux 커널 UFS Exynos 드라이버 (패치 이전 모든 버전)

⚔️ 공격 벡터

로컬 시스템 접근; UFS 드라이버 초기화 시 자동 발동 (원격 공격 불가)

🛡️ 대응 방법

Linux 커널을 BIT() 매크로 패치 포함된 최신 버전으로 업그레이드

🔧 검증 코드

카운트가 0이면 패치됨; 0이 아니면 UBSAN 경고가 검출되어 취약 상태 확인

Shell / Script
dmesg 2>/dev/null | grep -c 'UBSAN: shift-out-of-bounds in drivers/ufs/host/ufs-exynos.c'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel