First Fit
Last updated
Last updated
AWS ํดํน์ ๋ฐฐ์ฐ๊ณ ์ค์ตํ์ธ์:HackTricks Training AWS Red Team Expert (ARTE) GCP ํดํน์ ๋ฐฐ์ฐ๊ณ ์ค์ตํ์ธ์: HackTricks Training GCP Red Team Expert (GRTE)
ํ๋ก๊ทธ๋จ์์ glibc๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ ๋, ๋ค๋ฅธ "bins"๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฒญํฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ ๋ ฌ๋์ง ์์ bins์ fastbins์ ๋ ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค์ ๋ํ ๊ฐ์ํ๋ ์ค๋ช ์ด ์์ต๋๋ค.
๋น ๋ฅธ ์ฒญํฌ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฒญํฌ๋ฅผ ํด์ ํ๋ฉด ์ ๋ ฌ๋์ง ์์ bin์ ๋ค์ด๊ฐ๋๋ค. ์ด bin์ ์๋ก ํด์ ๋ ์ฒญํฌ๊ฐ ์์ชฝ(๋จธ๋ฆฌ)์ ์ถ๊ฐ๋๋ ๋ฆฌ์คํธ์ฒ๋ผ ์๋ํฉ๋๋ค. ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ์ฒญํฌ๋ฅผ ์์ฒญํ๋ฉด ํ ๋น๊ธฐ๋ ๋ค์ชฝ(๊ผฌ๋ฆฌ)์ ์ ๋ ฌ๋์ง ์์ bin์ ํ์ธํ์ฌ ์ถฉ๋ถํ ํฐ ์ฒญํฌ๋ฅผ ์ฐพ์ต๋๋ค. ์ ๋ ฌ๋์ง ์์ bin์์ ์ฒญํฌ๊ฐ ์์ฒญํ ๊ฒ๋ณด๋ค ํฌ๋ฉด ๋ถํ ๋์ด ์๋ถ๋ถ์ด ๋ฐํ๋๊ณ ๋๋จธ์ง ๋ถ๋ถ์ bin์ ์ ์ง๋ฉ๋๋ค.
์์:
300๋ฐ์ดํธ(a
)๋ฅผ ํ ๋นํ๊ณ , 250๋ฐ์ดํธ(b
)๋ฅผ ํ ๋นํ ๋ค์ a
๋ฅผ ํด์ ํ๊ณ ๋ค์ 250๋ฐ์ดํธ(c
)๋ฅผ ์์ฒญํฉ๋๋ค.
a
๋ฅผ ํด์ ํ๋ฉด ์ ๋ ฌ๋์ง ์์ bin์ ๋ค์ด๊ฐ๋๋ค.
๊ทธ๋ฐ ๋ค์ 250๋ฐ์ดํธ๋ฅผ ๋ค์ ์์ฒญํ๋ฉด ํ ๋น๊ธฐ๋ ๊ผฌ๋ฆฌ์์ a
๋ฅผ ์ฐพ์ ๋ถํ ํ์ฌ ์์ฒญ์ ๋ง๋ ๋ถ๋ถ์ ๋ฐํํ๊ณ ๋๋จธ์ง๋ฅผ bin์ ์ ์งํฉ๋๋ค.
c
๋ ์ด์ a
๋ฅผ ๊ฐ๋ฆฌํค๊ณ a
๋ก ์ฑ์์ง๋๋ค.
Fastbins๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์ฒญํฌ์ ์ฌ์ฉ๋ฉ๋๋ค. Unsorted bins์ ๋ฌ๋ฆฌ, fastbins๋ ์๋ก์ด ์ฒญํฌ๋ฅผ ํค๋์ ์ถ๊ฐํ์ฌ ํ์ ์ ์ถ(LIFO) ๋์์ ๋ง๋ญ๋๋ค. ๋ง์ฝ ์์ ์ฒญํฌ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญํ๋ฉด, ํ ๋น๊ธฐ๋ fastbin์ ํค๋์์ ๊ฐ์ ธ์ฌ ๊ฒ์ ๋๋ค.
์์:
20๋ฐ์ดํธ์ฉ ๋ค ๊ฐ์ ์ฒญํฌ(a
, b
, c
, d
)๋ฅผ ํ ๋นํฉ๋๋ค.
์ด๋ค ์์๋ก ํด์ ํ๋๋ผ๋, ํด์ ๋ ์ฒญํฌ๋ fastbin์ ํค๋์ ์ถ๊ฐ๋ฉ๋๋ค.
๊ทธ ํ 20๋ฐ์ดํธ ์ฒญํฌ๋ฅผ ์์ฒญํ๋ฉด, ํ ๋น๊ธฐ๋ fastbin์ ํค๋์์ ๊ฐ์ฅ ์ต๊ทผ์ ํด์ ๋ ์ฒญํฌ๋ฅผ ๋ฐํํ ๊ฒ์ ๋๋ค.
ARM64. Use after free: ์ฌ์ฉ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ํด์ ํ๊ณ , ํด์ ๋ ์ฒญํฌ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ํด๋น ์์น์ ์ฐ๊ธฐ๋ฅผ ํ์ฉํจ์ผ๋ก์จ ์ด์ ๊ฒ์์ user->password์ ์์น๋ฅผ ๋ฎ์ด์. ์ฌ์ฉ์๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ๋น๋ฐ๋ฒํธ ํ์ธ์ ์ฐํํจ
ํ๋ก๊ทธ๋จ์ ๋ ธํธ๋ฅผ ์์ฑํ ์ ์๊ฒ ํจ. ๋ ธํธ๋ malloc(8)์ ๋ ธํธ ์ ๋ณด(ํธ์ถ๋ ์ ์๋ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ)์ ๋ค๋ฅธ malloc(<size>)์ ๋ ธํธ ๋ด์ฉ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง.
๊ณต๊ฒฉ์ ๋ ธํธ ์ ๋ณด ํฌ๊ธฐ๋ณด๋ค ํฐ malloc ๋ด์ฉ์ ๊ฐ์ง 2๊ฐ์ ๋ ธํธ (note0 ๋ฐ note1)๋ฅผ ์์ฑํ ๋ค์, ์ด๋ค์ ํด์ ํ์ฌ ๋น ๋ฅธ bin (๋๋ tcache)์ ๋ค์ด๊ฐ๊ฒ ํจ.
๊ทธ๋ฐ ๋ค์, ๋ด์ฉ ํฌ๊ธฐ๊ฐ 8์ธ ๋ค๋ฅธ ๋ ธํธ (note2)๋ฅผ ์์ฑํจ. ๋ด์ฉ์ ์ฌ์ฌ์ฉ๋ ์ฒญํฌ์ธ note1์ ์๊ฒ ๋๋ฉฐ, ์ฌ๊ธฐ์ ํจ์ ํฌ์ธํฐ๋ฅผ win ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์์ ํ ๋ค์, note1์ Use-After-Freeํ์ฌ ์ ํจ์ ํฌ์ธํฐ๋ฅผ ํธ์ถํจ.
์ผ๋ถ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ์ํ๋ ๊ฐ์ ์ด ๋ค์ ํด์ ํ๊ณ ๋ค์ ํ ๋นํจ. ์ด์ ๋ฐ์ดํฐ๊ฐ ์ฌ์ ํ ๋จ์ ์์ผ๋ฏ๋ก, ์๋ก์ด ์์๋ ๊ตฌ์กฐ์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋์ด ๊ฐ์ ์ค์ ํ๊ฑฐ๋ ํ๋๊ทธ๋ฅผ ์ป์ ์ ์์.
์ด ๊ฒฝ์ฐ ํน์ ์ฒญํฌ ๋ด์ 4๋ฅผ ์จ์ผ ํ๋ฉฐ, ์ด๋ ์ฒ์ ํ ๋น๋ ์ฒญํฌ ์ค ์ฒซ ๋ฒ์งธ ๊ฒ์ (๋ชจ๋ ๊ฐ์ ํด์ ํ ํ์๋). ๊ฐ ์๋ก ํ ๋น๋ ์ฒญํฌ์๋ ๋ฐฐ์ด ์ธ๋ฑ์ค ๋ฒํธ๊ฐ ์ ์ฅ๋จ. ๊ทธ๋ฐ ๋ค์, 4๊ฐ์ ์ฒญํฌ๋ฅผ ํ ๋นํจ (+ ์ด๊ธฐ ํ ๋น๋ ๊ฒ), ๋ง์ง๋ง ์ฒญํฌ์๋ ๋ด๋ถ์ 4๊ฐ ๋ค์ด ์์, ์ด๋ค์ ํด์ ํ๊ณ ์ฒ์ ๊ฒ์ ๋ค์ ํ ๋นํ๋๋ก ๊ฐ์ ํ๋ฉด, 4๊ฐ ๋ค์ด ์๋ ๋ง์ง๋ง ์ฒญํฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋จ.