🇰🇷 한글 설명
Linux 커널의 ALSA scarlett2 드라이버에서 scarlett2_usb_get_config() 함수의 엔디언 변환 로직 오류로 인해, count가 1보다 클 때 할당된 버퍼 범위를 초과하는 버퍼 오버플로우가 발생합니다. 수정은 전체 버퍼 크기 대신 개별 원소 크기(config_item->size)를 기준으로 검사하도록 변경하는 것입니다.
💡 쉬운 설명
Linux 커널의 오디오 장치 드라이버가 설정 데이터를 읽을 때 메모리 경계를 잘못 계산하는 문제입니다. 이로 인해 할당되지 않은 메모리 영역에 접근할 수 있어 시스템이 불안정해지거나 권한 상승에 악용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ALSA: scarlett2: Fix buffer overflow in config retrieval
The scarlett2_usb_get_config() function has a logic error in the
endianness conversion code that can cause buffer overflows when
count > 1.
The code checks `if (size == 2)` where `size` is the total buffer size in
bytes, then loops `count` times treating each element as u16 (2 bytes).
This causes the loop to access `count * 2` bytes when the buffer only
has `size` bytes allocated.
Fix by checking the element size (config_item->size) instead of the
total buffer size. This ensures the endianness conversion matches the
actual element type.
📍 영향받는 시스템
ALSA scarlett2 드라이버(Focusrite Scarlett 2nd Gen 이후 USB 오디오 장치)를 포함하는 수정 전 Linux 커널 버전
⚔️ 공격 벡터
물리적으로 연결된 악성 또는 변조된 USB 오디오 장치를 통해 설정 데이터 응답을 조작하여 커널 메모리 손상을 유발
🛡️ 대응 방법
배포판에서 제공하는 보안 업데이트를 적용하여 커널을 패치된 버전으로 업그레이드하고 재부팅
🔧 검증 코드
출력된 커널 버전이 배포판 보안 공지에서 명시한 패치 버전 이상인지 비교하며, 패키지 정보가 나오지 않으면 배포판 보안 추적기에서 해당 CVE 수정 여부를 직접 확인
uname -r && (dpkg -l linux-image-$(uname -r) 2>/dev/null || rpm -q kernel 2>/dev/null) | head -5