🇰🇷 한글 설명
OpenPrinting CUPS 2.4.16 이하 버전의 _ppdCreateFromIPP() 함수에 정수 언더플로우 취약점이 존재합니다. 비특권 로컬 사용자가 음수 job-password-supported IPP 속성을 전달하면 상위 경계 검사만 수행되어 음수 값이 통과하고, size_t로 변환되면서 memset()에 매우 큰 길이가 전달되어 cupsd 루트 프로세스가 즉시 충돌합니다. systemd의 Restart=on-failure 설정과 결합하면 지속적인 서비스 거부 공격이 가능합니다.
💡 쉬운 설명
일반 사용자가 프린터 서비스(cupsd)에 잘못된 값을 보내 시스템의 핵심 프린터 프로세스를 강제로 종료시킬 수 있습니다. 서비스가 자동 재시작되는 설정이라면 공격자가 이를 반복해 프린터 기능을 계속 마비시킬 수 있습니다.
🇺🇸 원문 (English)
OpenPrinting CUPS is an open source printing system for Linux and other Unix-like operating systems. In versions 2.4.16 and prior, an integer underflow vulnerability in _ppdCreateFromIPP() (cups/ppd-cache.c) allows any unprivileged local user to crash the cupsd root process by supplying a negative job-password-supported IPP attribute. The bounds check only caps the upper bound, so a negative value passes validation, is cast to size_t (wrapping to ~2^64), and is used as the length argument to memset() on a 33-byte stack buffer. This causes an immediate SIGSEGV in the cupsd root process. Combined with systemd's Restart=on-failure, an attacker can repeat the crash for sustained denial of service.
📍 영향받는 시스템
OpenPrinting CUPS 2.4.16 이하 버전이 설치된 Linux 및 Unix 계열 시스템
⚔️ 공격 벡터
로컬 비특권 사용자가 음수 job-password-supported IPP 속성을 포함한 요청을 cupsd에 전송
🛡️ 대응 방법
CUPS를 2.4.17 이상 버전으로 업데이트하거나 배포판 보안 패치를 적용
🔧 검증 코드
출력된 버전이 2.4.16 이하이면 취약하므로 2.4.17 이상으로 업데이트가 필요하며, 명령이 아무 결과도 없으면 CUPS가 설치되지 않은 것입니다.
cups-config --version 2>/dev/null || dpkg -l cups 2>/dev/null | grep -E '^ii' || rpm -q cups 2>/dev/null