ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋”์šฑ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด OpenBSD๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Theo de Raadt๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋”์šฑ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด OpenBSD ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ผ๋ จ์˜ ํŒจ์น˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ˜์˜ํ•  ๋•Œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘). ์ˆ˜์ • ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์„ค์ •๋œ ๊ถŒํ•œ(์˜ˆ: ์“ฐ๊ธฐ ๋ฐ ์‹คํ–‰ ๊ธˆ์ง€)์€ mmap(), mprotect() ๋ฐ munmap() ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํ›„์† ํ˜ธ์ถœ์„ ํ†ตํ•ด ๋‚˜์ค‘์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. EPERM ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฏธ๋Ÿฌ๋ง๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๊ฐ€๋ณ€ BSS ์„น์…˜(.openbsd.mutable, ๊ฐ€๋ณ€ ๋ธ”๋ก ์‹œ์ž‘ ๊ธฐํ˜ธ)์ด ์ œ์•ˆ๋˜์—ˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ํ”Œ๋ž˜๊ทธ PF_MUTABLE ๋ฐ UVM_ET_IMMUTABLE์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "openbsd.mutable" ์„น์…˜์„ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ๊ฒฝ๊ณ„์— ์ •๋ ฌ๋œ BSS์˜ ๋ณ„๋„ ์˜์—ญ์— ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ง์ปค์— ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ๊ธฐ๋Šฅ ํ˜ธ์ถœ์„ ํ†ตํ•ด "openbsd.mutable"๋กœ ํ‘œ์‹œ๋œ ์„น์…˜์„ ์ œ์™ธํ•˜๊ณ  ๋ฏธ๋Ÿฌ๋ง๋œ ๋ชจ๋“  ์˜์—ญ์„ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ์œผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ OpenBSD 7.3 ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถœ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€