🇰🇷 한글 설명
Linux 커널의 vivid 미디어 드라이버에서 캡처/출력 큐가 사용 중인지 확인하지 않고 포맷 설정을 변경할 수 있는 취약점이 발견되었습니다. REQBUFS와 STREAMON 사이 단계에서 특정 컨트롤을 변경할 경우 예기치 않은 동작이나 시스템 오류를 유발할 수 있습니다.
💡 쉬운 설명
동영상 장치를 준비하는 과정에서 장치가 아직 사용 준비가 되지 않았는데 설정을 강제로 바꾸려 할 때 발생하는 문제입니다. 이로 인해 시스템이 예상치 못한 방식으로 작동하거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: vivid: check for vb2_is_busy() when toggling caps
The vivid_update_format_cap/out() functions must only be called if the
capture/output queue are not busy. But for the controls that select
the CROP/COMPOSE/SCALE capability that is not checked.
Only when streaming starts will they be set to 'grabbed' and it is
impossible to change the control, but between REQBUFS and STREAMON you
are still allowed to set these controls. Since vivid_update_format_cap/out
will change the format, this can cause unexpected results.
Besides adding these checks, also add a WARN_ON in
vivid_update_format_cap/out() if the queue is busy.
I'm 90% certain that this is the cause of this syzbot bug:
https://syzkaller.appspot.com/bug?extid=dac8f5eaa46837e97b89
But since we never have reproducers, it is hard to be certain. In any case,
these checks are needed regardless.
📍 영향받는 시스템
Linux kernel (vivid media driver module)
⚔️ 공격 벡터
로컬 사용자가 미디어 컨트롤을 조작하여 특정 타이밍에 포맷 설정을 변경하는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 vivid 드라이버의 vb2_is_busy() 체크 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.
📊 CVSS Vector String
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux