[iOS] d: warning: -no_pie ignored for arm64

โ˜๐Ÿป ๋ฌธ์ œ์ƒํ™ฉ

aslr๋ฅผ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ์ค‘์— 32bit ios ์—์„œ์ฒ˜๋Ÿผ fno-pie๋ฅผ ์ ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ฌ๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

ld: warning: -no_pie ignored for arm64

์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

์œ„์˜ ์—๋Ÿฌ๋Š” ๋‹น์—ฐํ•˜๊ฒŒ๋„ 64bit ์—์„œ๋Š” aslr์ด ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— pie๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ(clang) ์ž์ฒด์˜ ์˜ค๋ฅ˜์˜€๋‹ค.

๊ฒฐ๋ก 

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ios 64bit ์—์„œ aslr๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์„๊นŒ ?
32bit์˜ ๊ฒฝ์šฐ์—๋Š” kernel์— ๋Œ€ํ•œ read, write๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ์— aslr์„ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ aslr ํ•ด์ œ๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค.
(bic r0,r1,0x80000000 -> movs r0,0x0 movs r0,0x0 )
ํ•˜์ง€๋งŒ 64bit๋กœ ๋„˜์–ด์˜ค๊ฒŒ ๋˜๋ฉด์„œ ios๋Š” ํƒˆ์˜ฅ์„ ๋ง‰๊ธฐ ์œ„ํ•ด
KPP, KTRR ์ด๋ผ๋Š” ์ปค๋„ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ƒˆ๋กœ ๋„์ž…ํ•œ๋‹ค.
(KPP์™€ KTRR์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ๋‹ค์Œ์— ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.)

๊ทธ๋ ‡๊ธฐ์— ์ปค๋„์„ ํŒจ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” aslr๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์—†๋‹ค.

๋Œ€์‹ ์— ๋‚˜์˜จ ๋ฐฉ๋ฒ•์ด p_flag๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

xnu์˜ kern_exec.c์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค.

/*
	 * Disable ASLR during image activation.  This occurs either if the
	 * _POSIX_SPAWN_DISABLE_ASLR attribute was found above or if
	 * P_DISABLE_ASLR was inherited from the parent process.
	 */
	if (p->p_flag & P_DISABLE_ASLR) {
		imgp->ip_flags |= IMGPF_DISABLE_ASLR;
	}

xnu ์†Œ์Šค์ฝ”๋“œ

์ฆ‰, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ p_flag์˜ ๊ฐ’ ์ค‘ P_DISABLE_ASLR ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” aslr๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ๋ชจ๋‘ launchd๋ผ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋‹ค.

์ด๋ฅผ ์ด์šฉํ•ด์„œ launchd์˜ p_flag์— ์ ‘๊ทผํ•ด์„œ P_DISABLE_ASLR ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

๋ฉฐ์น ๋™์•ˆ ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ์‹คํ–‰์‹œํ‚ค๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ์žˆ์ง€๋งŒ,
์• ํ”Œ์˜ ์ปค๋„ ๋ณด์•ˆ ์ •์ฑ…์— ์˜ํ•ด
์„ฑ๊ณตํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.

Categories:

Updated:

Leave a comment