## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CAOWEIQUAN322-NOTENOUGH
# ํํ๋ง ํ
์ด๋ธ ํดํน ๋๊ตฌ
์ด ๋๊ตฌ๋ ์ทจ์ฝํ libwebp ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: libwebp <= `1.3.1`)์ ๋ํด OOB(Out Of Band) ์ฐ๊ธฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํ ์ ์๋ ๊น๋ค๋ก์ด ํ์ค ํํ๋ง ํ์คํ ๊ทธ๋จ์ ๊ณ์ฐํฉ๋๋ค. ์ด ์ทจ์ฝ์ฑ์ `CVE-2023-4863` ๋๋ `CVE-2023-41064`๋ก ์๋ ค์ ธ ์์ต๋๋ค. ์ฌ์ ํ ๋น๋ ํํ๋ง ํ
์ด๋ธ์ ์ต๋ **132๊ฐ ํญ๋ชฉ** ๊น์ง ์ค๋ฒํ๋กํ ์ ์์ต๋๋ค.
๊ทธ ์ด์ ๋ libwebp๊ฐ ๊ฐ webp ์ด๋ฏธ์ง์ ํฌํจ๋ ํํ๋ง ํ์คํ ๊ทธ๋จ์ด ์ ๊ตฌ์ฑ๋์ด ์๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฆ, ๋์ฝ๋ฉ ํธ๋ฆฌ๋ **์์ ํ ํธ๋ฆฌ** ์ฌ์ผ ํฉ๋๋ค. ์ด ๊ฐ์ ํ์ libwebp ๊ทธ๋ฃน์ enough ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ๋์ฝ๋ฉ ํํ๋ง ํ
์ด๋ธ(ํ์ค ํํ๋ง ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ๋์ฝ๋ฉํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๊ตฌ์กฐ)์ ๊ตฌ์ถํ๋ ๋ฐ ํ์ํ ์ต๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ถ์ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ํด์ปค๋ **๋ถ์์ ํ** ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ์ฌ ์ด ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ด๊ณผํ๊ณ ์ฌ์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ค๋ฒํ๋กํ ์ ์์ต๋๋ค.
์ด ํดํน ๋๊ตฌ๋ ๋ถ์์ ํ ํธ๋ฆฌ ์ง์์ ์ํด enough๋ฅผ ์กฐ์ ํ์ฌ ๋ง๋ค์ด์ก์ต๋๋ค.
์๋ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ปดํ์ผํ์ธ์:
root@kitploit:~
gcc -o NotEnough ./main.c
40๊ฐ ์ฌ๋ณผ, 8๋นํธ ๋ฃจํธ ํ
์ด๋ธ, ์ต๋ ๊น์ด 15์ธ ํํ๋ง ํ
์ด๋ธ์ ๊ฒฝ์ฐ ์ต๋ ํ
์ด๋ธ ํญ๋ชฉ ์๋ `410`์
๋๋ค. ๊ทธ๋ฌ๋ ๋ถ์์ ํ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ฉด ํ
์ด๋ธ ํญ๋ชฉ ์๊ฐ `542`๊ฐ ๋ ์ ์์ต๋๋ค. ์๋ ๋ช
๋ น์ด๋ฅผ ์๋ํด๋ณด์ธ์:
root@kitploit:~
./NotEnough 40 8 15
์ด๋ฌํ ํธ๋ฆฌ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:

๊ฐ๊ฒฐํจ์ ์ํด ์์ด ์๋ ๊ฐ์ง๋ ์ ๊ฑฐํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ craft ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ **dwebp** ๋๊ตฌ(๋ฒ์ <= `1.3.1`)๋ฅผ ์ค๋ฒํ๋กํ ์ ์๋ ํจ๊ณผ์ ์ธ webp ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๊ทธ์ ๋ฐ๋ผ ํํ๋ง ์ฝ๋ ํ์คํ ๊ทธ๋จ **code_lengths_counts[4]**๋ฅผ {0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 5, 9, 17, 1, 1, 3}์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋๊ตฌ๋ฅผ ๋ค์ ๋น๋ํ์ธ์:
root@kitploit:~
vim craft.c # ๊ทธ์ ๋ฐ๋ผ ํํ๋ง ์ฝ๋ ํ์คํ ๊ทธ๋จ ๋ณ๊ฒฝ (์ฝ 495๋ฒ์งธ ์ค)
gcc -o craft craft.c
./craft -o bad_542.webp
`CVE-2023-4863`์ ๋ํ ๋ ๋์ ์ดํด๋ฅผ ์ํด @benhawkes์ ๋ธ๋ก๊ทธ๋ฅผ ํ์ธํ์ธ์.