🇰🇷 한글 설명
Linux 커널의 ALSA FireWire isight 드라이버에서 샘플 카운트 검증 미흡으로 인한 취약점이 발견되었습니다. 공격자가 조작된 ISO 패킷을 통해 샘플 카운트를 실제 버퍼 크기보다 크게 설정하면, 메모리 범위를 벗어나는 읽기 또는 쓰기 작업이 발생할 수 있습니다.
💡 쉬운 설명
FireWire로 연결된 카메라가 잘못된 데이터를 보내면 컴퓨터의 메모리 영역을 침범할 수 있는 문제입니다. 이로 인해 시스템이 멈추거나 보안이 뚫릴 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ALSA: firewire: isight: bound the sample count to the packet payload
isight_packet() takes the frame count from the device iso packet and
checks it only against the device claimed iso length.
count = be32_to_cpu(payload->sample_count);
if (likely(count <= (length - 16) / 4))
isight_samples(isight, payload->samples, count);
length is the iso header data_length. It can be up to 0xffff. So the
gate allows a count up to about 16379. isight_samples() then copies
count frames out of payload->samples into the PCM DMA buffer.
payload->samples holds only 2 * MAX_FRAMES_PER_PACKET values. The
device multiplexes two samples per frame. A count past
MAX_FRAMES_PER_PACKET reads past the payload. A count past the buffer
size writes past runtime->dma_area. The smallest PCM buffer is larger
than MAX_FRAMES_PER_PACKET. Bounding the count to MAX_FRAMES_PER_PACKET
keeps both the read and the write in range.
A malicious or faulty Apple iSight on the FireWire bus reaches this
during a normal capture.
Add the MAX_FRAMES_PER_PACKET bound to the gate.
📍 영향받는 시스템
Linux kernel (ALSA firewire isight driver 포함 버전)
⚔️ 공격 벡터
FireWire 버스에 연결된 악의적인 또는 결함이 있는 Apple iSight 장치를 통한 데이터 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 샘플 카운트 제한 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.