🇰🇷 한글 설명
Linux 커널의 SCSI UFS 코어에서 문자열 디스크립터 길이를 검증하는 과정에 취약점이 발견되었습니다. UTF-16 페이로드 처리 시 바이트 수가 아닌 코드 유닛 수를 전달해야 함에도 불구하고 바이트 수를 전달하여 버퍼 범위를 벗어나는 읽기(overread)가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 데이터를 읽을 때 데이터의 실제 크기보다 더 많은 범위를 읽으려고 시도하여 오류가 발생하거나 정보가 유출될 수 있는 문제입니다. 이는 데이터의 길이를 계산하는 방식이 잘못되어 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: ufs: core: Validate string descriptors
The string descriptor length includes a two-byte header while the UTF-16
payload starts after it. utf16s_to_utf8s() expects a count of UTF-16 code
units, not bytes. Passing the payload byte count can make it read beyond
the descriptor buffer.
Validate that the payload has an even byte count, pass a code-unit count to
the converter, and allocate sufficient UTF-8 output space.
The raw string buffer starts after the descriptor header but its size is
bLength. Copying bLength bytes from that pointer can read beyond the
response buffer.
Allocate a zeroed bLength-sized buffer and copy only the UTF-16
payload. This preserves the raw buffer size consumed by the RPMB device-ID
ABI while avoiding the overread.
📍 영향받는 시스템
Linux kernel (scsi: ufs: core 관련 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 문자열 디스크립터를 포함한 UFS 장치를 통해 커널 메모리 범위를 초과하여 읽기 시도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 문자열 디스크립터 검증 로직을 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.