1. CUPS flaws enable Linux remote code execution, but there’s 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'์ ๊ฐ์ด ์ฌ์ํ๊ณ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ ์๋น์ค์์ ๋ฐ์ํ๋ ๋ฌธ์ ์์๋ ๋ถ๊ตฌํ๊ณ ์ด ์ทจ์ฝ์ ์ ์ฌ์ํด ๋ณด์ด๋ ๊ตฌ์ฑ ์์๋ผ๋ ์ ๋๋ก ํ์ธํ์ง ์์ผ๋ฉด ๊ณต๊ฒฉ์ ๋ฒกํฐ๊ฐ ๋ ์ ์์์ ๊นจ๋ฌ์๋ค. ์์คํ ๋ณด์์ ๋ํด ๋ฐฐ์ฐ๋ฉด์ ์ค๋์ ๊ธฐ์ฌ๊ฐ ๋ง์ ๋์์ด ๋์๋ค. ์ฌ์ํ ๊ตฌ์ฑ ์ค๋ฅ๋ ๋นํ์ฑ ์๋น์ค๊ฐ ๊ณต๊ฒฉ์์๊ฒ ์ ์ฉ๋ ๊ฒฝ์ฐ ์ฌ๊ฐํ ์ํ์ ์ด๋ํ ์ ์๋ค๋ ์ ์ ๊ฐ์กฐํ์ต๋๋ค.