ํน๊ถ ํฌํผ๊ฐ ์ฌ์ฉ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฏฟ์ ๋ ์๊ธฐ๋ ์ผ (CVE-2015-5287, Red Hat ABRT)
2015๋ ๊ฐ์, ๋ ๋ํ ๊ณ์ด ์๋ฒ๋ฅผ ๋๋ฆฌ๋ ๊ด๋ฆฌ์๋ค์ abrt ๊ด๋ จ ๋ณด์ ์ ๋ฐ์ดํธ ๊ณต์ง๋ฅผ ํ ๋ฒ์ ์ฌ๋ฌ ๊ฑด ๋ฐ์์ผ ํ๋ค. ๊ทธ๊ฒ๋ ์๊ฒฉ RCE๊ฐ ์๋๋ผ ์ ๋ถ ๋ก์ปฌ ๊ถํ ์์น์ด์๋ค. "๋ก์ปฌ์ด๋ฉด ์ด๋ฏธ ๋ค์ด์จ ๊ฑฐ ์๋๋"๊ณ ๋๊ธฐ๊ธฐ ์ฌ์ด๋ฐ, ์น์ ธ ํ๋๋ก www-data ๊ถํ๋ง ์ก์ ๊ณต๊ฒฉ์์๊ฒ ๋ก์ปฌ ๋ฃจํธ ์ทจ์ฝ์ ์ ์ฌ์ค์ ๊ฒ์์ ํ๋ฐ๋ถ๋ฅผ ์ด์ด์ฃผ๋ ์ด์ ๋ผ์ ๊ทธ๋ ๊ฒ ๊ฐ๋ณ๊ฒ ๋ณผ ๋ฌผ๊ฑด์ด ์๋์๋ค. CVE-2015-5287์ ๊ทธ ๋ฌถ์ ์ค ํ๋๋ค.
- ABRT(Automatic Bug Reporting Tool)๋ ํฌ๋์๊ฐ ๋๋ฉด ์๋์ผ๋ก ์ฝ์ด๋คํ์ ์ง๋จ ์ ๋ณด๋ฅผ ๋ชจ์์ฃผ๋ ๋๊ตฌ์ธ๋ฐ, ๊ทธ ์์ง ๊ณผ์ ์ผ๋ถ๊ฐ ๋์ ๊ถํ์ผ๋ก ๋์ํจ
- CVE-2015-5287์ ๊ทธ ํน๊ถ ๋์์ด ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์๋ ์ ์๋ ๊ฒฝ๋ก·ํ์ผ์ ์ถฉ๋ถํ ์์ฌํ์ง ์์ ๋ก์ปฌ ์ฌ์ฉ์๊ฐ ๊ถํ์ ๋์ด์ฌ๋ฆด ์ ์์๋ ์ฌ์์
- ๋ฐฉ์ด๋ ํจ์น๊ฐ 1์์, ๊ทธ๋ค์์ด ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋ณดํธ ์ปค๋ ํ๋ผ๋ฏธํฐ·์ฝ์ด๋คํ ์ ์ฑ ์ ๋ฆฌ·abrt ๊ด๋ จ ๋๋ ํฐ๋ฆฌ ๊ฐ์ฌ ๊ท์น์
ABRT๊ฐ ํ๋ ์ผ๋ถํฐ ์ง๊ณ ๊ฐ๊ธฐ
ABRT๋ ์ด๋ฆ ๊ทธ๋๋ก "๋ฒ๊ทธ๋ฅผ ์๋์ผ๋ก ์ ๊ณ ํด์ฃผ๋ ๋๊ตฌ"๋ค. ํ๋ก์ธ์ค๊ฐ ์ฃฝ์ผ๋ฉด ์ปค๋์ด ์ฝ์ด๋คํ๋ฅผ ๋๊ฒจ์ฃผ๊ณ , ABRT๊ฐ ๊ทธ๊ฑธ ๋ฐ์ ํฌ๋์ ์ ๋ณด๋ฅผ ์ ๋ฆฌํด ์คํ ๋๋ ํฐ๋ฆฌ์ ์์๋๊ณ , ํ์ํ๋ฉด ๋๋ฒ๊ทธ ์ฌ๋ณผ์ ๋ด๋ ค๋ฐ๊ฑฐ๋ sosreport ๊ฐ์ ์ง๋จ ์๋ฃ๊น์ง ๋ถ์ฌ ๋ฆฌํฌํธ๋ฅผ ๋ง๋ ๋ค. RHEL·Fedora ๊ณ์ด์์๋ ๊ธฐ๋ณธ์ผ๋ก ๊น๋ ค ์กฐ์ฉํ ๋์๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ฌ๊ธฐ์ ๋ฐฉ์ด์๊ฐ ๋์ฌ๊ฒจ๋ด์ผ ํ ์ง์ ์ ๋ฑ ํ๋์.
- ํฌ๋์๋ฅผ ์ผ์ผํค๋ ์ชฝ์ ์๋ฌด ๊ถํ ์๋ ์ผ๋ฐ ์ฌ์ฉ์์
- ํฌ๋์๋ฅผ ์ฒ๋ฆฌํ๋ ์ชฝ์ root ํน์ ๊ทธ์ ์คํ๋ ๊ถํ์
- ๋์ด ๋ง๋๋ ์ ์ ์ด ํ์ผ์์คํ ๊ฒฝ๋ก๋ผ๋ ๊ฒ
๊ถํ์ด ๋ฎ์ ์ชฝ์ด ์ ๋ ฅ์ ๋ง๋ค๊ณ ๊ถํ์ด ๋์ ์ชฝ์ด ๊ทธ๊ฑธ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ๋, ์ค๊ณํ ๋ ๊ฐ์ฅ ์กฐ์ฌํด์ผ ํ๋ ํํ์ธ๋ฐ๋ "๋ด๋ถ ๋๊ตฌ๋๊น ๊ด์ฐฎ๊ฒ ์ง" ํ๊ณ ๋์ด๊ฐ๊ธฐ ์ฌ์ด ๊ณณ์ด๊ธฐ๋ ํ๋ค.
๋ฌธ์ ์ ๊ตฌ์กฐ — ๊ฐ๋ ์์ค์ผ๋ก๋ง
CVE-2015-5287์ด ์ํ abrt ๊ณ์ด ๋ก์ปฌ ๊ถํ ์์น๋ค์ ๋์ฒด๋ก ๊ฐ์ ๋ฟ๋ฆฌ๋ฅผ ๊ณต์ ํจ. ์คํ ๊ฐ๋ฅํ ์ฌํ ์ ์ฐจ๋ ๊ตณ์ด ์ ์ง ์๊ณ , ์ด๋ค ์กฐ๊ฑด์ด ๊ฒน์น๋ฉด ์ํํด์ง๋์ง๋ง ์ ๋ฆฌํจ.
- ์์ธก ๊ฐ๋ฅํ ๊ฒฝ๋ก: ํน๊ถ ํ๋ก์ธ์ค๊ฐ /var/tmp๋ ์คํ ํ์์ฒ๋ผ ์ผ๋ฐ ์ฌ์ฉ์๋ ์ด๋ฆ์ ๋ฏธ๋ฆฌ ์ ์ ์๋ ์์น์ ํ์ผ·๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ฆ
- ๊ฒ์ฌ์ ์ฌ์ฉ ์ฌ์ด์ ํ(TOCTOU): "์ด ๊ฒฝ๋ก๊ฐ ์์ ํ๊ฐ" ํ์ธํ ์์ ๊ณผ ์ค์ ๋ก ์ด๊ฑฐ๋ ์ฐ๋ ์์ ์ฌ์ด์ ์์ฃผ ์งง์ ๊ณต๋ฐฑ์ด ์๊ณ , ๊ทธ ์ฌ์ด์ ๋์์ด ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ฐ๋ ์ ์์
- ์ฌ๋ณผ๋ฆญ ๋งํฌ·ํ๋๋งํฌ: ๊ทธ ํ์ ๋งํฌ๋ฅผ ์ฌ์ด๋๋ฉด, ํน๊ถ ํ๋ก์ธ์ค๊ฐ ์๋ ์๋ํ ํ์ผ ๋์ ์ ํ ๋ค๋ฅธ ์์คํ ํ์ผ์ ํฅํด ์ฐ๊ธฐ·์์ ๊ถ ๋ณ๊ฒฝ์ ์ํํ๊ฒ ๋จ
- ์์ ๊ถ·๊ถํ์ ์ ๋งคํ ์ธ๊ณ: ์ฌ์ฉ์ ์์ ๋ก ๋ง๋ค์ด์ง ์ฐ์ถ๋ฌผ์ ๋์ค์ root๊ฐ ์ ๋ขฐํ๊ณ ๋ค์ ์ฝ๊ฑฐ๋ ์คํ ๊ฒฝ๋ก์ ๋ผ์ ๋ฃ์
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ณต๊ฒฉ์๋ ์๊ธฐ ์ ธ์์ ํ๋ก๊ทธ๋จ ํ๋๋ฅผ ์ผ๋ถ๋ฌ ์ฃฝ์ด๋ ์ ๋์ ํ๋ฒํ ํ๋์ผ๋ก ํน๊ถ ์ฒ๋ฆฌ ๋ฃจํด์ ๋ฐ๋์ํค๊ณ , ๊ทธ ๋ฃจํด์ ์์ ๋น๋ ค ์๊ธฐ๊ฐ ์ํ๋ ํ์ผ์ ์ ๊ทผํ๊ฒ ๋ง๋ฆ. ํน๋ณํ ์ต์คํ๋ก์ ์ฝ๋๋ณด๋ค ํ์ด๋ฐ๊ณผ ๊ฒฝ๋ก ์กฐ์์ด ๋ณธ์ง์ธ ์ ํ์.
ํ์ง — ๋ฌด์์ ๋ก๊ทธ๋ก ๋จ๊ธธ ๊ฒ์ธ๊ฐ
์ด ๊ณ์ด์ ๋คํธ์ํฌ IDS๋ก๋ ๊ฑฐ์ ์ ์กํ. ์ ๋ถ ํธ์คํธ ์์์ ๋ฒ์ด์ง๋ ์ผ์ด๋ผ ํ์ผ์์คํ ๊ณผ ํ๋ก์ธ์ค ๊ด์ ์ ๊ด์ธก์ด ํ์ํจ.
- ๋น์ ์์ ์ธ ํฌ๋์ ๋น๋: ์ด๋ฐ ๊ณต๊ฒฉ์ ๊ฒฝ์ ์กฐ๊ฑด์ ์ด๊ธฐ๋ ค๊ณ ํฌ๋์๋ฅผ ์์ญ, ์๋ฐฑ ๋ฒ ๋ฐ๋ณต ์ ๋ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์. ๊ฐ์ ์ฌ์ฉ์·๊ฐ์ ๋ฐ์ด๋๋ฆฌ๊ฐ ์งง์ ์๊ฐ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฝ์ด๋คํ๋ฅผ ๋จ๊ธฐ๋ฉด ๊ทธ ์์ฒด๊ฐ ์ ํธ์.
abrt-cli list์ journald์ abrtd ๋ก๊ทธ๋ฅผ ํจ๊ป ๋ณด๋ฉด ํจํด์ด ๋๋ฌ๋จ - abrt ๊ด๋ จ ๋๋ ํฐ๋ฆฌ ๊ฐ์ฌ: /var/spool/abrt, /var/tmp/abrt ํ์์ ์์ฑ·์ด๋ฆ๋ณ๊ฒฝ·์ญ์ ๋ฅผ auditd ๊ท์น์ผ๋ก ๊ฑธ์ด๋๋ฉด ๋งํฌ ์ฌ๊ธฐ ์๋๋ฅผ ๊ด์ธกํ ์ ์์. ์:
-w /var/spool/abrt -p wa -k abrt_watch - ๊ฑฐ๋ถ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ ์ถ์ : ์ปค๋์ ๋งํฌ ๋ณดํธ ๊ธฐ๋ฅ์ด ์ผ์ ธ ์์ผ๋ฉด ์ฐจ๋จ ์ ๋ก๊ทธ๊ฐ ๋จ์. ์ด ๋ก๊ทธ๊ฐ ๋ฌ๋ค๋ ๊ฑด ๋๊ตฐ๊ฐ ๊ทธ ํธ๋ฆญ์ ์ฐ๋ ค ํ๋ค๋ ๋ป์ด๋ฏ๋ก ๋จ์ ๋ ธ์ด์ฆ๋ก ๋๊ธฐ์ง ๋ง ๊ฒ
- ์ด์ํ ์์น์ root ์์ ํ์ผ: ์ฌ์ฉ์ ํ์ด๋ ์์ ๋๋ ํฐ๋ฆฌ์ root ์์ ํ์ผ์ด ์๋ก ์๊ธฐ๋ ๊ฒ์ ๋ํ์ ์ธ ์ฌํ ํ์ ์. ์ฃผ๊ธฐ์ ์ผ๋ก ์ค์บํด๋๋ฉด ์ข์
- SELinux denial: enforcing ์ํ๋ผ๋ฉด AVC ๊ฑฐ๋ถ ๋ก๊ทธ๊ฐ ๊ณต๊ฒฉ ์๋์ 1์ฐจ ์ฆ๊ฑฐ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
์ํ — ์์๋๋ก
- ํจ์น๊ฐ 1์์: ๋ฒค๋ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฏธ ๋์ ์๋ ์ฌ์์. abrt์ libreport ๊ณ์ด ํจํค์ง๋ฅผ ํจ๊ป ์ฌ๋ ค์ผ ํจ. ํ๋๋ง ์ฌ๋ฆฌ๊ณ ๋๋ด๋ฉด ๋ค๋ฅธ ๊ตฌ์ฑ์์์ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋จ์
- ์ปค๋ ๋งํฌ ๋ณดํธ ํ์ฑํ:
fs.protected_symlinks=1,fs.protected_hardlinks=1์ sysctl์ ๋ฐ์๋ ๊ฒ. ์ด๋ฒ ๊ฑด๋ฟ ์๋๋ผ ๊ฐ์ ๊ณ์ด ์ทจ์ฝ์ ์๋น์์ ์ฑ๊ณต๋ฅ ์ ํฌ๊ฒ ๋จ์ด๋จ๋ฆผ - ์ฝ์ด๋คํ ์ ์ฑ
์ ๋ฆฌ:
kernel.core_pattern์ด ์ด๋๋ก ํ์ดํ๋๊ณ ์๋์ง ํ์ธํ๊ณ , setuid ํ๋ก๊ทธ๋จ์ ๋คํ๋ฅผ ํ์ฉํ ์ด์ ๊ฐ ์๋ค๋ฉดfs.suid_dumpable=0์ ์ ์งํ ๊ฒ - ํ์ ์์ผ๋ฉด ๋๊ธฐ: ๋ค์ค ์ฌ์ฉ์ ์๋ฒ๋ ์ปจํ ์ด๋ ํธ์คํธ์์ ์๋ ๋ฒ๊ทธ ๋ฆฌํฌํ ์ด ์ค์ ๋ก ์ฐ์ด์ง ์๋๋ค๋ฉด abrt ์๋น์ค๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ํธ์ด ๊ฐ์ฅ ํ์คํจ. ๊ฐ์ธ์ ์ผ๋ก๋ ์ฌ์ฉ์ ๊ณ์ ์ด ์ฌ๋ฟ ๋ถ๋ ์๋ฒ๋ผ๋ฉด ๋๋ ์ชฝ์ ์ถ์ฒํจ
- ๋ง์ดํธ ์ต์ : /var/tmp, /tmp๋ฅผ ๋ณ๋ ํํฐ์ ์ผ๋ก ๋๊ณ nosuid, nodev๋ฅผ ๊ฑธ์ด๋๋ฉด ํ์ ๋จ๊ณ์ ์ ํ์ง๋ฅผ ์ขํ ์ ์์
10๋ ์ด ์ง๋๋ ์ ๋ก๋ ๊ตํ
์ด ์ทจ์ฝ์ ์ด ์ง๊ธ๋ ์ฝ์ ๊ฐ์น๊ฐ ์๋ ๊ฑด, ๋๊ฐ์ ๊ตฌ์กฐ๊ฐ ์์ฆ ์ฝ๋์๋ ๊ณ์ ๋์ค๊ธฐ ๋๋ฌธ์. ๋ฐฑ์ ์์ด์ ํธ, ๋ชจ๋ํฐ๋ง ๋ฐ๋ชฌ, ๋ก๊ทธ ์์ง๊ธฐ, ์ปจํ ์ด๋ ๋ฐํ์ ํ — root๋ก ๋๋ฉด์ ์ฌ์ฉ์ ์์ญ์ ๊ฒฝ๋ก๋ฅผ ๋ง์ง๋ ๋ฌผ๊ฑด์ ์ฌ์ ํ ๋ง์. ์ ๊ฒ ์ง๋ฌธ์ ์ธ ๊ฐ๋ฉด ์ถฉ๋ถํจ.
- ์ด ํน๊ถ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฃจ๋ ๊ฒฝ๋ก ์ค ๋ฎ์ ๊ถํ ์ฌ์ฉ์๊ฐ ๋ง๋ค๊ฑฐ๋ ๋ฐ๊ฟ ์ ์๋ ๊ฒ์ด ์๋๊ฐ
- ๊ฒฝ๋ก๋ฅผ ๊ฒ์ฌํ ๋ค ์ค์ ๋ก ์ฌ๋ ์ฌ์ด์ ๋ฐ๋ ์ ์๋ ํ์ด ์๋๊ฐ (๋๋ ํฐ๋ฆฌ ํธ๋ค ๊ธฐ์ค์ *at ๊ณ์ด ํธ์ถ์ ์ฐ๋๊ฐ)
- ์ฐ์ถ๋ฌผ์ ์์ ๊ถ๊ณผ ํผ๋ฏธ์ ์ ๋๊ฐ ์ต์ข ๊ฒฐ์ ํ๋๊ฐ
์ฌ์ค ์ทจ์ฝ์ ํ๋ํ๋๋ฅผ ์ธ์ฐ๋ ๊ฒ๋ณด๋ค ์ด ์ง๋ฌธ ์ธ ๊ฐ๋ฅผ ์์ ์ตํ๋ ๊ฒ ํจ์ฌ ์ค๋ ๊ฐ๋๋ค. ์ค๋ ์ฌ๋ฌ๋ถ ์๋ฒ์์ sysctl fs.protected_symlinks ํ ์ค๋ง ์ณ๋ณด์๋ฉด ์ข๊ฒ ์ด์. ๊ฐ์ด 0์ผ๋ก ๋์ค๋ฉด ๊ทธ๊ฑฐ ํ๋ ๋ฐ๊พธ๋ ๋ฐ 1๋ถ๋ ์ ๊ฑธ๋ฆฌ๊ฑฐ๋ ์. ํน์ ์ด์ ์ค์ธ ํ๊ฒฝ์์ ์ด๋ฐ ํน๊ถ ํฌํผ ์ ๊ฒํ๋ค๊ฐ ์ฌ๋ฏธ์๋ ๊ฑธ ๋ฐ๊ฒฌํ์
จ๋ค๋ฉด ๋๊ธ๋ก ๊ณต์ ํด ์ฃผ์ธ์. ๊ฐ์ด ๋ณด๋ฉด์ ๋ฐฐ์๋ณด์์!
# ๋๊ธ