🇰🇷 한글 설명
Linux 커널의 comedi 드라이버 내 comedi_buf_munge() 함수에서 0으로 나누기 오류가 발생할 수 있는 취약점이 발견되었습니다. 사용자가 chanlist_len 값을 0으로 설정한 명령을 제출할 경우, 인터럽트 핸들러 경로에서 0으로 나누기 연산이 수행되어 커널 패닉이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제인 리눅스에서 특정 장치를 제어할 때, 잘못된 숫자를 입력하면 시스템이 계산을 못 하고 멈춰버리는 문제입니다. 공격자가 이 숫자를 조작하면 컴퓨터 전체가 갑자기 꺼지거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
comedi: fix divide-by-zero in comedi_buf_munge()
The comedi_buf_munge() function performs a modulo operation
`async->munge_chan %= async->cmd.chanlist_len` without first
checking if chanlist_len is zero. If a user program submits a command with
chanlist_len set to zero, this causes a divide-by-zero error when the device
processes data in the interrupt handler path.
Add a check for zero chanlist_len at the beginning of the
function, similar to the existing checks for !map and
CMDF_RAWDATA flag. When chanlist_len is zero, update
munge_count and return early, indicating the data was
handled without munging.
This prevents potential kernel panics from malformed user commands.
📍 영향받는 시스템
comedi 드라이버를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
사용자 프로그램이 chanlist_len이 0인 조작된 명령을 커널에 제출
🛡️ 대응 방법
comedi_buf_munge() 함수 내에 chanlist_len이 0인지 확인하는 유효성 검사 로직이 포함된 최신 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 패치된 최신 버전인지 확인합니다.