일단 진행시켜

[Linux]: CUPS 결함-가장 작고 사소한 것도 보호해야 한다 본문

🗞️ 보안 동향 파악 및 나의 생각 정리

[Linux]: CUPS 결함-가장 작고 사소한 것도 보호해야 한다

2024. 10. 1. 14:29

1. CUPS flaws enable Linux remote code execution, but there’s a catch

https://www.bleepingcomputer.com/news/security/cups-flaws-enable-linux-remote-code-execution-but-theres-a-catch/

 

CUPS flaws enable Linux remote code execution, but there’s a catch

Under certain conditions, attackers can chain a set of vulnerabilities in multiple components of the CUPS open-source printing system to execute arbitrary code remotely on vulnerable machines.

www.bleepingcomputer.com

 

해당 썸네일을 누르지 않을 수가 없었다

 

 

[요약정리]

시스템 보안에 대한 기사다. CUPS를 통한 원격 코드 실행(RCE)의 가능성을 다룬 기사다.

공격자는 여러 결함을 연결하여 시스템을 원격으로 악용할 수 있다.

 

 

CUPS(Common UNIX Printing System)?

  • Linux 시스템에서 가장 널리 사용되는 인쇄 시스템
  • FreeBSD, NetBSD, OpenBSD 등 파생 버전과 같은 Unix 계열 OS를 실행하는 장치에서도 지원된다.

 

cups-browsed  데몬

그 안에는 로컬 네트워크에서 광고된 네트워크 또는 공유 프린터를 검색하여 컴퓨터에서 인쇄할 수 있도록 하는 cups-browsed 데몬이 있다. (Windows와 Mac이 네트워크에서 인쇄할 원격 네트워크 프린터를 검색하는 방식과 유사함!)

 

cups-browsed는 기본값이 비활성화지만 활성화될 경우 cups-browsed 데몬이 활성화되면 UDP 포트(631)를 통해 수신한다.

UDP 포트를 사용하면 공격자는 진입점이 되는 네트워크 프린터를 검색하고 설치할 수 있게 된다.

 

 

 

취약점 설명(결함)

UDP 포트에서 실행되는 노출된 cups-browse 서비스에 수동으로 광고할 수 있는 악성 PostScript Printer Description(PPD) 프린터를 만들 수 있다.

 

PostScript Printer Description (PPD)?

  • PPD 파일은 프린터의 기능을 정의한다
  • 시스템과 프린터 간의 신뢰 관계를 활용하여 임의의 명령을 실행하게 악용할 수 있다.
  • 공격자는 로컬에서 한 번 명령을 실행하는 악성 PPD를 만들 수 있다.

즉, 공격자가 PPD를 만들면 원격 머신이 자동으로 악성 프린터를 설치하고 인쇄할 수 있게 된다.

노출된 서버를 사용하는 사용자가 새 프린터로 인쇄하면 PPD의 악성 명령어가 로컬을 통해 실행하게 되는 것이다.

 

 

 

원격 코드 실행 체인의 악용을 어떻게 막을 수 있을까?

우선 공격자의 악용행위는 아래와 같다고 볼 수 있다.

 

1. cups-browsed 데몬을 활성화한다.

2. 사용자를 속여 로컬 네트워크의 악성 프린터 서버에서 인쇄하도록 해야 한다.

대상 시스템에 네트워크에서 UDP 포트를 노출하기 위해 cups-browsed 데몬을 활성화한다.

 

로컬 네트워크의 프린터를 스푸핑 하여 프린터가 켜져있지 않으면 네트워크 검색을 통해 자동으로 추가된다.

즉, 공격자는 UDP를 통해 공격을 시도한다. UDP는 네트워크 유입에서 널리 비활성화되어 있고 해당 서비스가 기본적으로 비활성화되어 있다.

 

Read Hat은 해당 결함을 중요 심각도 영향으로 평가했으며, 아래와 같은 완화 조치를 공개했다.

 

 

완화 조치

패치는 개발 중에 있다고 한다. 관리자가 아래 명령을 실행하여 cups-browse 서비스의 실행을 중지하고 재부팅 시 시작되지 않도록 하여 악용 체인을 끊어낼 수 있다.

 

패치를 사용하기 전까지는 시스템 관리자가 cups-browsed를 비활성화하여 이러한 위험을 완화하기 위한 즉각적인 조치를 하는 것이 중요하다.

sudo systemctl stop cups-browsed
sudo systemctl dissable cups-browsed

 

 

추가로 아래 명령을 통해 자신의 시스템에서 cups-browsed가 실행 중인지 확인할 수 있다.

sudo systemctl status cups-browsed

 

Active: inactive (dead) 이 표시되면 취약하지 않음을 의미한다.

반대로 running, enabled이 표시되어 있다거나 /etc/cups/cups-browsed.conf의 값에 cups가 포함되어 있으면 해당 시스템은 취약하다.

 

 

 

 

 

 


 

🤔 이에 대한 나의 생각

이 기사를 통해 시스템 구성, 특히 네트워크 서비스를 노출하는 시스템 구성을 정기적으로 검토하는 것이 중요함을 깨달았다. 잊히거나 간과되는 부분에 대한 이해와 보호의 필요성을 배울 수 있었다.

'cups-browsed'와 같이 사소하고 거의 사용되지 않은 서비스에서 발생하는 문제임에도 불구하고 이 취약점은 사소해 보이는 구성 요소라도 제대로 확인하지 않으면 공격의 벡터가 될 수 있음을 깨달았다. 시스템 보안에 대해 배우면서 오늘의 기사가 많은 도움이 되었다. 사소한 구성 오류나 비활성 서비스가 공격자에게 악용될 경우 심각한 위험을 초래할 수 있다는 점을 강조했습니다.