1. W^X ๋ฉ๋ชจ๋ฆฌ ๊ถํ ๋ชจ๋ธ (ํ์ค)
CONFIG_STRICT_KERNEL_RWX: ACTIVE
๋ฆฌ๋
์ค ์ปค๋์
โข .text (์ฝ๋): $R-X$ (์ฝ๊ธฐ/์คํ ๊ฐ๋ฅ, ์์ ๋ถ๊ฐ)
โข .rodata (์์): $R--$ (์ฝ๊ธฐ ์ ์ฉ, ์คํ ๋ถ๊ฐ)
โข .data/์คํ/ํ: $RW-$ (์ฝ๊ธฐ/์ฐ๊ธฐ ๊ฐ๋ฅ, ์คํ ๋ถ๊ฐ)
mark_readonly() ์ด๊ธฐํ ๋ฃจํด์ ํตํด ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ฅผ Write XOR Execute ($W \oplus X$) ์์น์ ๋ฐ๋ผ ๋ถ๋ฆฌํฉ๋๋ค.โข .text (์ฝ๋): $R-X$ (์ฝ๊ธฐ/์คํ ๊ฐ๋ฅ, ์์ ๋ถ๊ฐ)
โข .rodata (์์): $R--$ (์ฝ๊ธฐ ์ ์ฉ, ์คํ ๋ถ๊ฐ)
โข .data/์คํ/ํ: $RW-$ (์ฝ๊ธฐ/์ฐ๊ธฐ ๊ฐ๋ฅ, ์คํ ๋ถ๊ฐ)
ํ๋์จ์ด ํต์ ๋ฉ์ปค๋์ฆ:
โข x86_64: CPU ๋ ์ง์คํฐ
โข ARM64: ํ์ด์ง ํ ์ด๋ธ AP ์์ฑ ๋ฐ
CR0.WP = 1 ํ์ฑํ๋ก ์ปค๋ ๋ชจ๋(Ring 0)์์๋ RO ํ์ด์ง ์ฐ๊ธฐ ๊ธ์ง.โข ARM64: ํ์ด์ง ํ ์ด๋ธ AP ์์ฑ ๋ฐ
PXN/UXN ๋นํธ๋ก ๋น์คํ ๋ฐ ์ฐ๊ธฐ ํต์ .