# CUPS를 통한 UNIX 시스템 공격

> Clean Markdown view of GeekNews topic #16963. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16963](https://news.hada.io/topic?id=16963)
- GeekNews Markdown: [https://news.hada.io/topic/16963.md](https://news.hada.io/topic/16963.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-09-27T16:33:17+09:00
- Updated: 2024-09-27T16:33:17+09:00
- Original source: [evilsocket.net](https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I/)
- Points: 1
- Comments: 0

## Topic Body

### 유닉스 시스템 공격: CUPS를 통한 공격, Part I

#### 요약

- **CVE-2024-47176**: `cups-browsed` <= 2.0.1은 UDP INADDR_ANY:631에서 바인딩되어, 공격자가 제어하는 URL로 `Get-Printer-Attributes` IPP 요청을 트리거할 수 있음
- **CVE-2024-47076**: `libcupsfilters` <= 2.1b1의 `cfGetPrinterAttributes5`는 IPP 서버에서 반환된 IPP 속성을 검증하거나 정리하지 않아, 공격자가 제어하는 데이터를 CUPS 시스템에 제공할 수 있음
- **CVE-2024-47175**: `libppd` <= 2.1b1의 `ppdCreatePPDFromIPP2`는 임시 PPD 파일에 IPP 속성을 기록할 때 검증하거나 정리하지 않아, 공격자가 제어하는 데이터를 주입할 수 있음
- **CVE-2024-47177**: `cups-filters` <= 2.0.1의 `foomatic-rip`는 `FoomaticRIPCommandLine` PPD 매개변수를 통해 임의의 명령 실행을 허용함

#### 영향

- 원격 인증되지 않은 공격자가 기존 프린터의 IPP URL을 악성 URL로 교체하거나 새로운 프린터를 설치할 수 있으며, 프린트 작업이 시작될 때 임의의 명령을 실행할 수 있음

#### 진입점

- **WAN / 공용 인터넷**: 원격 공격자가 포트 631로 UDP 패킷을 전송함. 인증 불필요
- **LAN**: 로컬 공격자가 zeroconf / mDNS / DNS-SD 광고를 스푸핑하여 동일한 코드 경로를 통해 RCE를 달성할 수 있음

#### 영향을 받는 시스템

- 대부분의 GNU/Linux 배포판
- 일부 BSD
- Google Chromium / ChromeOS (가능성 있음)
- Oracle Solaris
- 기타

#### 해결책

- `cups-browsed` 서비스를 비활성화하고 제거함
- 시스템의 CUPS 패키지를 업데이트함
- 시스템을 업데이트할 수 없는 경우, UDP 포트 631과 모든 DNS-SD 트래픽을 차단함

#### 소개

- 몇 주 전, 새로운 노트북에 Ubuntu를 설정하던 중 UDP 포트를 청취하는 서비스를 확인하기 위해 `netstat -anu` 명령을 실행함
- 포트 631에서 `cups-browsed`가 UDP를 사용하여 모든 네트워크 인터페이스에서 청취하고 응답하는 것을 발견함
- `cups-browsed`는 새로운 프린터를 자동으로 시스템에 추가하는 역할을 함

#### cups-browsed란?

- `cups-browsed`는 CUPS 시스템의 일부로, 새로운 프린터를 발견하고 자동으로 시스템에 추가함
- 기본 설정 파일은 주석 처리되어 있으며, 누구나 연결할 수 있도록 허용됨

#### 스택 버퍼 오버플로 및 경쟁 조건

- `cups-browsed`는 oss-fuzz의 커버리지에 포함되지 않음
- `process_browse_data` 함수에서 스택 버퍼 오버플로와 경쟁 조건이 발생할 수 있음
- 이러한 문제는 개발자와 CERT에 보고되었으나, 아직 패치되지 않음

#### found_cups_printer로 돌아가기

- `found_cups_printer` 함수는 패킷에서 URL을 추출하여 `cfGetPrinterAttributes` 함수에 전달함
- 이 URL은 공격자가 제어하는 서버로 연결됨

#### 인터넷 프린팅 프로토콜 (IPP)

- IPP는 클라이언트 장치와 프린터 간의 통신을 위한 프로토콜임
- 공격자가 제어하는 프린터 속성을 반환하여, 시스템에 프린터를 추가할 수 있음

#### GN⁺의 정리

- 이 글은 CUPS 시스템의 취약점을 악용하여 원격 코드 실행을 달성하는 방법을 설명함
- CUPS와 관련된 다양한 취약점이 있으며, 이를 통해 공격자가 시스템을 제어할 수 있음
- 이러한 취약점은 아직 패치되지 않았으며, 사용자는 CUPS 서비스를 비활성화하거나 업데이트해야 함
- 비슷한 기능을 가진 다른 프로젝트로는 `LPRng`와 `CUPS`의 최신 버전이 있음

## Comments



_No public comments on this page._
