🇰🇷 한글 설명
Linux 커널의 ALSA seq 구성 요소에서 bounce_error_event() 함수가 모든 클라이언트에게 커널 힙 주소를 무조건적으로 노출하는 취약점이 발견되었습니다. 이로 인해 사용자 공간(userspace) 클라이언트가 커널 내부의 메모리 주소를 획득할 수 있어 정보 유출의 위험이 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제인 리눅스 내부에서 중요한 메모리 주소가 외부 프로그램에 실수로 노출되는 보안 결함입니다. 해커가 이 주소를 알게 되면 시스템의 다른 보안 방어막을 뚫는 데 악용할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ALSA: seq: Fix kernel heap address leak in bounce_error_event()
The comment above bounce_error_event() documents that user clients
should receive SNDRV_SEQ_EVENT_BOUNCE with the original event embedded
as variable-length data, while kernel clients should receive
SNDRV_SEQ_EVENT_KERNEL_ERROR with a quoted kernel pointer.
However, the implementation unconditionally uses
SNDRV_SEQ_EVENT_KERNEL_ERROR with data.quote.event set to the raw
struct snd_seq_event pointer for all clients. When a bounce error
event is delivered to a USER_CLIENT via snd_seq_read(), the kernel
heap address in data.quote.event is exposed to userspace through
copy_to_user() in the fixed-length branch.
This is a distinct leak path from the one addressed by commit
705dd6dcbc0e ("ALSA: seq: Clear variable event pointer on read"),
which sanitizes data.ext.ptr in the variable-length branch of
snd_seq_read(). The bounce_error_event() leak uses fixed-length
events that take the else branch where no sanitization occurs.
Differentiate the bounce event by client type. For USER_CLIENT,
send SNDRV_SEQ_EVENT_BOUNCE with SNDRV_SEQ_EVENT_LENGTH_VARIABLE
and data.ext pointing to the original event. The variable-length
path in snd_seq_event_dup() copies the event data into chained
cells, and snd_seq_expand_var_event() copies only the content --
never the pointer -- to userspace. For KERNEL_CLIENT, keep the
existing SNDRV_SEQ_EVENT_KERNEL_ERROR behavior with the quoted
pointer.
📍 영향받는 시스템
Linux Kernel (ALSA seq 모듈이 포함된 버전)
⚔️ 공격 벡터
사용자 공간 클라이언트가 snd_seq_read()를 통해 bounce error 이벤트를 요청하여 커널 힙 주소를 탈취
🛡️ 대응 방법
ALSA seq 모듈의 bounce_error_event() 로직을 수정하여 클라이언트 유형에 따라 이벤트를 구분하여 전달하도록 커널 업데이트 적용
🔧 검증 코드
출력된 커널 버전이 최신 보안 패치가 적용된 버전인지 배포판 보안 공지를 통해 확인하십시오.