์ปค๋์ ์์คํ ํธ์ถ์ด ์ถ๊ฐ๋จ์ ๋ฐ๋ผ ์๋ก์ด ๊ณต๊ฒฉ ํ๋ฉด์ ๊ฐ์๊ธฐ ์ก์ธ์คํ ์ ์๋ ๋ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ถฉ๋ถํ ๋ ผ์๊ฐ ์ด๋ฃจ์ด์ง์ง ์์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๊ธฐ์ ํ์ค ์๋ ์๋ง์ CVE์ ์์ค์ธ perf_event_open()
์
๋๋ค. perf๋ ํ๋ฅญํ์ง๋ง ๋ด(์:) ์น ์๋ฒ๋ (๊ธฐ๋ณธ์ ์ผ๋ก) ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
์ค๋ seccomp๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋๋ฆฌ์คํธ์ ์ฌ๋ฆด ์ ์์ต๋๋ค. ํ์ดํธ๋ฆฌ์คํธ๋ ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
์ ์ฉํ ์ ์๋ ํ ๊ฐ์ง๋ ํน์ ์ปค๋ ๋ฒ์ (์: 3.10)๋ณด๋ค ์๋ก์ด ์์คํ ํธ์ถ์ ๋ํ ํํฐ์ ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ๊ฐ๊ฐ์ ์๋ก์ด ์์คํ ํธ์ถ์ด ์ถ๊ฐ๋๊ธฐ ์ ์ ์๋ฅผ ๋ค์ด ์ปจํ ์ด๋์์ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ธ๋์ด์ผ ํฉ๋๋ค. ์ปค๋์ ์ ๊ทธ๋ ์ด๋ํด๋ ์ปจํ ์ด๋๊ฐ ๊ฐ์๊ธฐ ์๋ก์ด ๊ณต๊ฒฉ ํ๋ฉด์ ๋ ธ์ถ๋์ง๋ ์์ต๋๋ค.
@pcmoore ์์ ํ ๋ก ์์ ๊ทธ๋ ์ด๊ฒ์ด arch-x86-syscalls.c
์ ๊ฐ์ ๊ตฌ์กฐ์ฒด์ ๋ ๋ค๋ฅธ ์ฃผ์์ด ๋ ์ ์๋ค๊ณ ์ง์ ํ์ต๋๋ค.
+1
์ด๋ ๋ธ๋๋ฆฌ์คํธ๋ฅผ ๋ณด์ ๋ฌธ์ ์ํ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
@nmav ๋ฅผ ๋ถ๋ช ํ ํ๊ธฐ ์ํด ์ด RFE๋ ์์คํ ํธ์ถ์ด Linux ์ปค๋์ ์ฒ์ ๋์ ๋ ์๊ธฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๋ถ ์์คํ ํธ์ถ ํ ์ด๋ธ์ ์ถ๊ฐํ๊ธฐ ์ํ ๊ฒ์ด์ง, ํ์ฌ ์คํ ์ค์ธ ์ปค๋์ด ์ฃผ์ด์ง ์์คํ ํธ์ถ์ ์ง์ํ๋์ง ํ์ธํ๊ธฐ ์ํ ๋ ผ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํ ๊ฒ์ด ์๋๋๋ค. ๊ทธ๋ฌ๋ ์์คํ ํธ์ถ์ ์ฐจ๋จํ๋ ค๋ ๊ฒฝ์ฐ libseccomp๊ฐ ํน์ ์์น/ABI ๋ฐ ์ปค๋ ๋ฒ์ ์์ ์ง์๋๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด libseccomp๋ฅผ ์ฌ์ฉํ์ฌ ์ฐจ๋จํ ์ ์์ต๋๋ค.
์ด RFE๋ ๊ฑฐ์ 5๋ ์ด ์ง๋ฌ๊ณ @cgwalters ์์ ๋จ์ผ ํ ๋ก ์ธ์๋ ๊ทธ๋ฌํ ๊ธฐ๋ฅ์ ๋ํ ๋ค๋ฅธ ๊ด์ฌ์ ๋ณด๊ฑฐ๋ ๋ค์ ์ ์ด ์์ต๋๋ค. ๋ค๋ฅธ ๋ง์ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๊ฐ ์๊ณ ๋๋ถ๋ถ์ ์ฐ์ ์์๊ฐ ๋ ๋๊ธฐ ๋๋ฌธ์ ์ธ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ธ์ง, ๋๋ ๊ทธ๋ฌํ ์์ ์ด ์ ์ฉํ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ธ์ง๋ ๋ช ํํ์ง ์์ต๋๋ค.
@cgwalters ๋ฐ @drakenclimber 2020๋ ์ด ๋ฌธ์ ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? WONTFIX๋ก ์ด ์์ ์ ์ข ๋ฃํ๊ณ ์ถ์ง๋ง ํด๋น ๋จ๊ณ๋ฅผ ์ํํ๊ธฐ ์ ์ ๋ช ๊ฐ์ง ์๊ฒฌ๊ณผ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ์ถ์ต๋๋ค.
@cgwalters ๋ฐ @drakenclimber 2020๋ ์ด ๋ฌธ์ ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? WONTFIX๋ก ์ด ์์ ์ ์ข ๋ฃํ๊ณ ์ถ์ง๋ง ํด๋น ๋จ๊ณ๋ฅผ ์ํํ๊ธฐ ์ ์ ๋ช ๊ฐ์ง ์๊ฒฌ๊ณผ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ์ถ์ต๋๋ค.
์์งํ ์ด๊ฑด ์ ๋ง ๋ฉ์ง ์์ด๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ด ๋ด๋ถ ๊ณ ๊ฐ ์ค ๋ช ๋ช ์ด ์ด ์ ํํ ์ด์ ๋๋ฌธ์ ํ์ฉ ๋ชฉ๋ก์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋ค์ด ๊ฑฐ๋ถ ๋ชฉ๋ก์ ์ฌ์ฉํ๊ณ ์๋ก์ด ์์คํ ํธ์ถ์ด ์ปค๋์ ์ถ๊ฐ๋๋ค๋ฉด ๊ทธ ์์คํ ํธ์ถ์ ๋ ๋ค๋ฅธ ๊ณต๊ฒฉ ์๋จ์ด ๋ ๊ฒ์ ๋๋ค.
์กฐ๊ธ๋ง ๋ ์ด์ด๋์. Oracle ๋ด๋ถ์ ๋ฌผ์ด๋ณด๊ณ ์ด ๊ธฐ๋ฅ์ ๊ด์ฌ์ด ์๋ ๊ณ ๊ฐ์ด ์๋์ง ํ์ธํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ @cgwalters (๋๋ ๊ทธ ๋ฌธ์ ์ ๋ํ ๋ค๋ฅธ ์ฌ๋)๋ ์๊ฐ๊ณผ ๊ด์ฌ์ด ์๋ค๋ฉด ๊ทธ๊ฒ์ ์์ ํ๋ ๊ฒ์ ์ ์ ์ผ๋ก ํ์ํฉ๋๋ค. :).
์ข์์, ๊ด์ฌ์ด ์๋ ํ, ์ ๋ ์ด๊ฒ์ ์ด์ด๋๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ทธ๋๋ ์ ์ฉํ ๊ฒ ๊ฐ์์!
๋ฌธ์ #286์ ์ด ์์ ์ ์ถ์งํ๋ ๋ฐ ๋์์ด ๋๋ ๊ตฌ์ฒด์ ์ธ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค... ๊ฑฐ์ 5๋ ์ด ์ง๋ฌ์ง๋ง ;)
์ด๋ฅผ ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ syscall์ด ์ฒ์ ๋์ ๋ ์๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ ํ๋๋ฅผ syscalls.csv ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ ~469๊ฐ์ ์์คํ ํธ์ถ์ด ์ ์๋์ด ์์ผ๋ฏ๋ก(!) ์ข์ ์์ ์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ "์ ์๋์ง ์์" ๊ฐ์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์์คํ ํธ์ถ์ ๋ํด ์ด ์์ ์ ์๊ฐํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ ๋จ์ํ ์๋ฒฝ์ ์์ฑ๋๋ ์์คํ ํธ์ถ๋ก ์ทจ๊ธํฉ๋๋ค. ๋ฌผ๋ก syscalls.csv ํ ์ด๋ธ์ ๋ํ ๋ชจ๋ ์๋ก์ด ์ถ๊ฐ ์ฌํญ์ ์ปค๋ ๋ฒ์ ๊ณผ ํจ๊ป ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค.
๋ ๋น ๋ฅธ ์๊ฐ:
#syscall (v5.8.0-rc5 2020-07-14),kver_min,x86,x86_64,...
accept,<version>,PNR,43,...
... ์ฌ๊ธฐ์ <version>
๋ "5_8", "UNDEF" ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ผ ์ ์์ต๋๋ค.
enum kernel_version {
KV_UNDEF = 0,
KV_1_0,
KV_1_1,
KV_1_3,
KV_2_0,
...
KV_5_8,
_KV_MAX,
};
์ปค๋ ๋ฒ์ ์ ์ถ์ ํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ๊ฐ์? ์๋ก์ด ์์คํ ํธ์ถ์ด ์๋ฅผ ๋ค์ด ๋ฒ์ ๋ฒํธ๊ฐ ๋ฎ์ ์์ ์ ์ธ ์ปค๋ ๋ถ๊ธฐ๋ก ๋ฐฑํฌํธ๋์ง ์๋๋ค๋ ๊ฒ์ด ๋ณด์ฅ๋ฉ๋๊น?
Red Hat์ ๋ชจ๋ ์ข ๋ฅ์ ๊ฒ์ ์ปค๋์ ๋ฐฑํฌํธํ ๊ฒ์ด๋ฏ๋ก ๊ทธ๋ ์ง ์์ต๋๋ค.
RedHat์ด ์์คํ
ํธ์ถ์ ์ด์ ์ปค๋ ๋ฒ์ ์ผ๋ก ๋ฐฑํฌํธํ๋ฉด libseccomp ๋ฒ์ ๋ ์ผ์นํ๋๋ก ํจ์นํ ์ ์์ต๋๋ค. ๊ณต์ ํ๊ธฐ๋ ํ์ง๋ง ํน์ ์ฌ์ฉ ์ฌ๋ก์์๋ ์ด๊ฒ์ด ๋ ์ค์ํ ์ ์์ง๋ง #286 ์์ ์ ๋ํ ์ ๊ทผ ๋ฐฉ์์ผ๋ก๋ ์๋นํ ์คํ ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ฅธ ๋ฌธ์ ๋ ๋ ๋์ ์ ๊ทผ ๋ฐฉ์์ด ์๋์ง ํ์ ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. syscall์ ๋น์ฐ์์ ์ธ ์์๋ก ์ถ๊ฐ๋ ์ ์์ต๋๋ค(์: close_range
openat2
๊ฐ ์ถ๊ฐ๋จ -- ์ด ์์ ๋ ์น์ ํ์ง๋ง ๋ด ์๋ชป).
RedHat์ด ์์คํ ํธ์ถ์ ์ด์ ์ปค๋ ๋ฒ์ ์ผ๋ก ๋ฐฑํฌํธํ๋ฉด libseccomp ๋ฒ์ ๋ ์ผ์นํ๋๋ก ํจ์นํ ์ ์์ต๋๋ค.
๋ค, ๋ง์ต๋๋ค. ์ ์คํธ๋ฆผ libseccomp ํ๋ก์ ํธ๋ ๋ค์ํ ์ํฐํ๋ผ์ด์ฆ Linux ๋ฐฐํฌํ์ ์ ์ดํ ์ ์์ผ๋ฉฐ ํด๋น ๋ฐฐํฌํ์ด ์ ์คํธ๋ฆผ ํ๋ก์ ํธ(Linux ์ปค๋ ๋๋ libseccomp)์์ ๋ฒ์ด๋๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ์์ฒด์ ์ผ๋ก ์ง์๋ฉ๋๋ค. ์ต์ ์ ๋คํด ๋์๋๋ฆฌ๊ฒ ์ง๋ง ์์ฒด ์ง์ ๋ฐ ์์ง๋์ด๋ง ์ง์์ด ์๋ ์ด๋ฌํ ์ํฐํ๋ผ์ด์ฆ ๋ฐฐํฌ๋ฅผ ์ํด ์ ์คํธ๋ฆผ ํ๋ก์ ํธ๋ฅผ ํฌ์ํ ์๋ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก syscalls(2)
๋งจํ์ด์ง์๋ ์ปค๋์ ๋ค์ํ ์์คํ
ํธ์ถ์ด ๋์
๋ ์๊ธฐ์ ๊ดํ ๋ช ๊ฐ์ง ๊ธฐ๋ก ์ ๋ณด๊ฐ ์์ต๋๋ค.
๊ฐ syscall์ ๋ํ ๋ฒ์ ๋ฒํธ๋ฅผ ์์๋ด๊ธฐ ์ํด syscall spelunking์ ์ํํ ์ ์์ต๋๋ค. ์ ์ผํ ์ง๋ฌธ์ ํน์ syscall์ด ๋ค๋ฅธ ๋ฆด๋ฆฌ์ค์ ๋ค๋ฅธ ์ํคํ ์ฒ์ ์ถ๊ฐ๋์๋ค๊ณ ํ์ ํ๊ธฐ ๋๋ฌธ์ ์ํคํ ์ฒ๋ณ๋ก ๋ฒ์ ๋ฒํธ๋ฅผ ๊ฐ์ ธ์ผ ํ๋์ง ์ฌ๋ถ์ ๋๋ค.
... ์ ์ผํ ์ง๋ฌธ์ ํน์ ์์คํ ํธ์ถ์ด ๋ค๋ฅธ ๋ฆด๋ฆฌ์ค์ ๋ค๋ฅธ ์ํคํ ์ฒ์ ์ถ๊ฐ๋์๋ค๊ณ ํ์ ํ๊ธฐ ๋๋ฌธ์ ์ํคํ ์ฒ๋ณ๋ก ๋ฒ์ ๋ฒํธ๋ฅผ ์ง์ ํด์ผ ํ๋์ง ์ฌ๋ถ์ ๋๋ค.
๊ทธ๊ฒ๋ค์ ๋ด๊ฐ ๋ณผ ์ ์๋ ํ ๊ฐ์ฅ ํ์คํ ๊ทธ๋ฌ๊ณ ์ง๊ธ๋ ๊ทธ๋ ์ต๋๋ค. ์ฝ๊ฐ ์ฑ๊ฐ์๊ฒ ๋ ๊ฒ์ด๊ณ CSV๋ฅผ ํ์คํ ํญ๋ฐ์ํฌ ๊ฒ์ด์ง๋ง, ๊ฐ ์์น/ABI์ ๋ํ syscall์ ์ฒซ ๋ฒ์งธ ๋ชจ์ต์ ์ถ์ ํ๋ ๊ฒ์ด ์๋ง๋ ์ฌ๋ฐ๋ฅธ ์ผ์ ๋๋ค.
์ด @cyphar ์ ๋ํด ๋์์ ์ฃผ์๋ฉด ๋๋จํ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฌธ์ #286์ ์ด ์์ ์ ์ถ์งํ๋ ๋ฐ ๋์์ด ๋๋ ๊ตฌ์ฒด์ ์ธ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค... ๊ฑฐ์ 5๋ ์ด ์ง๋ฌ์ง๋ง ;)
์ด๋ฅผ ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ syscall์ด ์ฒ์ ๋์ ๋ ์๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ ํ๋๋ฅผ syscalls.csv ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ ~469๊ฐ์ ์์คํ ํธ์ถ์ด ์ ์๋์ด ์์ผ๋ฏ๋ก(!) ์ข์ ์์ ์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ "์ ์๋์ง ์์" ๊ฐ์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์์คํ ํธ์ถ์ ๋ํด ์ด ์์ ์ ์๊ฐํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ ๋จ์ํ ์๋ฒฝ์ ์์ฑ๋๋ ์์คํ ํธ์ถ๋ก ์ทจ๊ธํฉ๋๋ค. ๋ฌผ๋ก syscalls.csv ํ ์ด๋ธ์ ๋ํ ๋ชจ๋ ์๋ก์ด ์ถ๊ฐ ์ฌํญ์ ์ปค๋ ๋ฒ์ ๊ณผ ํจ๊ป ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค.
๋ ๋น ๋ฅธ ์๊ฐ:
... ์ฌ๊ธฐ์
<version>
๋ "5_8", "UNDEF" ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ผ ์ ์์ต๋๋ค.