🇰🇷 한글 설명
Linux 커널의 speakup 모듈에서 keyhelp의 letter_offsets 배열 인덱스 범위를 검증하지 않아 발생하는 취약점입니다. 루트 권한으로 sysfs를 통해 함수 이름을 조작할 경우, 배열 범위를 벗어난 인덱스 참조로 인해 OOB(Out-of-Bounds) 쓰기가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 음성 안내 기능인 speakup 설정에서 잘못된 이름을 입력하면 시스템의 메모리 영역을 침범할 수 있는 오류입니다. 공격자가 이 기능을 악용하면 시스템에 예기치 않은 동작을 일으키거나 보안 문제를 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
speakup: keyhelp: guard letter_offsets possible out-of-range indexing
help_init() builds letter_offsets[] by using the first byte of each
function name as an index via `(start & 31) - 1`. If function_names are
overridden from sysfs (root) with a name starting outside [a–z], the
index underflows or exceeds the array, leading to OOB write.
Function names can be overridden with the following commands as root:
modprobe speakup_soft
echo "0 _bad" > /sys/accessibility/speakup/i18n/function_names
# then press Insert+2 on /dev/tty
This fix checks the first letter in help_init(), and if it is not in the
[a–z] range the function returns an error to the caller. Eventually this
error is propagated to drivers/accessibility/speakup/main.c:2217, which
causes a bleep sound.
📍 영향받는 시스템
Linux kernel (speakup 모듈 사용 시스템)
⚔️ 공격 벡터
루트 권한을 가진 공격자가 sysfs를 통해 speakup의 function_names를 조작하여 메모리 범위를 벗어난 쓰기를 유도함
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 help_init()의 인덱스 검증 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.