kernel.org์ ์ ์ต๊ณ ์์คํ ๊ด๋ฆฌ์์ด์ Ubuntu ๋ณด์ ํ์ ๋ฆฌ๋์ด์ ํ์ฌ Google์์ Android ๋ฐ ChromeOS ๋ณด์ ์์ ์ ํ๊ณ ์๋ Kees Cook์ ์์คํ ํธ์ถ์ ์ฒ๋ฆฌํ ๋ ์ปค๋ ์คํ์ ์คํ์ ์ ๋ฌด์์๋ก ์ง์ ํ๋ ํจ์น ์ธํธ๋ฅผ ๊ฒ์ํ์ต๋๋ค. ํจ์น๋ ์คํ ๋ฐฐ์น๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ปค๋ ๋ณด์์ ํฅ์์์ผ ์คํ์ ๋ํ ๊ณต๊ฒฉ์ ํจ์ฌ ๋ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ ๋ ์ฑ๊ณตํ๊ฒ ๋ง๋ญ๋๋ค. ์ด๊ธฐ ๊ตฌํ์์๋ ARM64 ๋ฐ x86/x86_64 ํ๋ก์ธ์๋ฅผ ์ง์ํฉ๋๋ค.
ํจ์น์ ์๋ ์์ด๋์ด๋ PaX RANDKSTACK ํ๋ก์ ํธ์ ์ํฉ๋๋ค. 2019๋ ์ Intel์ ์์ง๋์ด์ธ Elena Reshetova๋ ๊ธฐ๋ณธ Linux ์ปค๋์ ํฌํจํ๊ธฐ์ ์ ํฉํ ์ด ์์ด๋์ด๋ฅผ ๊ตฌํํ๋ ค๊ณ ์๋ํ์ต๋๋ค. ๋์ค์ ์ปค๋์ ๋ฉ์ธ ๋ฒ์ ์ ์ ํฉํ ๊ตฌํ์ ์ ์ํ Kees Cook์ด ์ฃผ๋๊ถ์ ์ก์์ต๋๋ค. ํจ์น๋ 5.13 ๋ฆด๋ฆฌ์ค์ ์ผ๋ถ๋ก ํฌํจ๋ ์์ ์ ๋๋ค. ์ด ๋ชจ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋ฉ๋๋ค. ์ด๋ฅผ ํ์ฑํํ๊ธฐ ์ํด ์ปค๋ ๋ช ๋ น์ค ๋งค๊ฐ๋ณ์ โrandomize_kstack_offset=on/offโ์ CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT ์ค์ ์ด ์ ์๋ฉ๋๋ค. ๋ชจ๋ ํ์ฑํ์ ๋ฐ๋ฅธ ์ค๋ฒํค๋๋ ์ฝ 1%์ ์ฑ๋ฅ ์์ค๋ก ์ถ์ ๋ฉ๋๋ค.
์ ์๋ ๋ณดํธ์ ํต์ฌ์ ๊ฐ ์์คํ
ํธ์ถ์ ๋ํด ์์์ ์คํ ์คํ์
์ ์ ํํ๋ ๊ฒ์
๋๋ค. ์ด๋ ์ฃผ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ํ์๋ ๋ค์ ์์คํ
ํธ์ถ์ด ์คํ์ ๊ธฐ๋ณธ ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์คํ ๋ ์ด์์์ ๊ฒฐ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. PaX RANDKSTACK ๊ตฌํ๊ณผ ๋ฌ๋ฆฌ ์ปค๋์ ํฌํจ๋๋๋ก ์ ์๋ ํจ์น์์๋ ์ด๊ธฐ ๋จ๊ณ(cpu_current_top_of_stack)๊ฐ ์๋ pt_regs ๊ตฌ์กฐ๋ฅผ ์ค์ ํ ํ์ ๋ฌด์์ํ๊ฐ ์ํ๋๋ฏ๋ก ptrace ๊ธฐ๋ฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฌด์์ ์คํ์
์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์ฅ๊ธฐ ์คํ ์์คํ
ํธ์ถ ์ค.
์ถ์ฒ : opennet.ru