🇰🇷 한글 설명
Linux 커널의 ALSA seq 모듈에서 snd_seq_read() 함수가 가변 길이 이벤트 헤더를 사용자 공간으로 복사할 때 확장 페이로드 포인터를 제대로 초기화하지 않는 취약점입니다. 이로 인해 사용자 공간의 시퀀서 클라이언트가 커널 내부의 확장 셀 주소를 읽어낼 수 있습니다.
💡 쉬운 설명
컴퓨터의 소리 관련 시스템에서 보안상 숨겨져 있어야 할 커널의 내부 메모리 주소가 외부로 유출될 수 있는 문제입니다. 공격자는 이 주소를 이용해 시스템의 다른 보안 취약점을 공격하는 데 활용할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ALSA: seq: Clear variable event pointer on read
snd_seq_read() copies a queued variable-length event header to userspace
before expanding the payload. Queued variable-length events use
SNDRV_SEQ_EXT_CHAINED internally, and data.ext.ptr points at the first
extension cell.
The read side strips SNDRV_SEQ_EXT_* bits from data.ext.len before the
copy, but it leaves data.ext.ptr untouched. A userspace sequencer client
can therefore write a direct variable event to itself and read back the
extension-cell kernel address from the returned header.
Clear the temporary header pointer before copy_to_user(). The original
queued event remains unchanged and is still passed to
snd_seq_expand_var_event(), so payload expansion keeps using the
internal chain.
📍 영향받는 시스템
Linux kernel (ALSA seq module 포함 버전)
⚔️ 공격 벡터
사용자 공간의 시퀀서 클라이언트가 특정 가변 길이 이벤트를 직접 작성하고 읽어오는 방식
🛡️ 대응 방법
ALSA seq 모듈의 취약점이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 배포판의 보안 업데이트 버전인지 확인