🇰🇷 한글 설명
Linux 커널의 solo6x10 미디어 드라이버에서 chip_id 범위 검사 부재로 인한 부호있는 정수 시프트 오버플로우 취약점입니다. 범위 초과 chip_id 값 입력 시 정의되지 않은 동작 발생 가능.
💡 쉬운 설명
Linux 커널의 비디오 캡처 카드 드라이버에서 정수 오버플로우 취약점이 발견되었습니다. 시스템 불안정이나 예기치 않은 동작을 초래할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: solo6x10: Check for out of bounds chip_id
Clang with CONFIG_UBSAN_SHIFT=y noticed a condition where a signed type
(literal "1" is an "int") could end up being shifted beyond 32 bits,
so instrumentation was added (and due to the double is_tw286x() call
seen via inlining), Clang decides the second one must now be undefined
behavior and elides the rest of the function[1]. This is a known problem
with Clang (that is still being worked on), but we can avoid the entire
problem by actually checking the existing max chip ID, and now there is
no runtime instrumentation added at all since everything is known to be
within bounds.
Additionally use an unsigned value for the shift to remove the
instrumentation even without the explicit bounds checking.
[hverkuil: fix checkpatch warning for is_tw286x]
📍 영향받는 시스템
CONFIG_VIDEO_SOLO6X10=y로 컴파일된 Linux 커널 (solo6x10 미디어 드라이버 포함)
⚔️ 공격 벡터
로컬 공격자가 범위 밖의 chip_id 값을 입력하여 정의되지 않은 정수 시프트 연산 트리거
🛡️ 대응 방법
Linux 커널을 최신 패치 버전으로 업그레이드하여 범위 검사 적용
🔧 검증 코드
CONFIG_VIDEO_SOLO6X10=y 출력 시 해당 커널에 드라이버 컴파일됨. 패치 버전 확인 후 업그레이드 필요
grep VIDEO_SOLO6X10 /boot/config-$(uname -r) 2>/dev/null | grep -E '^CONFIG_VIDEO_SOLO6X10=y' && echo 'Vulnerable: driver enabled' || echo 'Not vulnerable: driver disabled'