๊ตฌ๊ธ ๋ณด์ ์ฐ๊ตฌ์๋ค์ด ๋ฆฌ๋ ์ค ์ปค๋์์ ๊ถํ ์์น์ ํ์ฉํ๋ ์ทจ์ฝ์ (CVE-2025-38236)์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด ์ทจ์ฝ์ ์ ๊ตฌ๊ธ ํฌ๋กฌ์์ ์ฌ์ฉ๋๋ ์๋๋ฐ์ค ๊ฒฉ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ์ฐํํ์ฌ ๊ฒฉ๋ฆฌ๋ ํฌ๋กฌ ๋ ๋๋ง ํ๋ก์ธ์ค(์: ํฌ๋กฌ์ ๋ค๋ฅธ ์ทจ์ฝ์ ์ ์ ์ฉํ๋ ๊ฒฝ์ฐ)์์ ์ฝ๋๋ฅผ ์คํํ ๋ ์ปค๋ ์์ค์ ์ฝ๋ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ๋ฆฌ๋ ์ค ์ปค๋ 6.9๋ถํฐ ๋ฐ์ํ์ผ๋ฉฐ, ๋ฆฌ๋ ์ค ์ปค๋ ์ ๋ฐ์ดํธ 6.1.143, 6.6.96, 6.12.36, 6.15.5์์ ์์ ๋์์ต๋๋ค. ์ด ์ต์คํ๋ก์์ ํ๋กํ ํ์ ์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
์ด ์ทจ์ฝ์ ์ AF_UNIX ์์ผ์ ์ค์ ํ ์ ์๋ MSG_OOB ํ๋๊ทธ์ ๊ตฌํ ์ค๋ฅ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. MSG_OOB("๋์ญ์ธ") ํ๋๊ทธ๋ ์ ์ก๋๋ ๋ฐ์ดํฐ์ ์ถ๊ฐ ๋ฐ์ดํธ๋ฅผ ์ฒจ๋ถํ ์ ์๋๋ก ํ์ฉํ๋ฉฐ, ์์ ์๋ ๋๋จธ์ง ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ธฐ ์ ์ ์ด ๋ฐ์ดํธ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ์ด ํ๋๊ทธ๋ Oracle์ ์์ฒญ์ผ๋ก Linux 5.15 ์ปค๋์ ์ถ๊ฐ๋์์ผ๋ฉฐ, ๋๋ฆฌ ์ฌ์ฉ๋์ง ์์ ์๋ ์ ์ง์ ์ค๋จ์ด ์ ์๋์์ต๋๋ค.
Chrome์ ์๋๋ฐ์ค ๊ตฌํ์ UNIX ์์ผ ์์
๊ณผ send()/recv() ์์คํ
ํธ์ถ์ ํ์ฉํ์ต๋๋ค. ์ด ๊ฒฝ์ฐ MSG_OOB ํ๋๊ทธ๋ ๋ค๋ฅธ ์ต์
๊ณผ ํจ๊ป ํ์ฉ๋๋ฉฐ ๋ณ๋๋ก ํํฐ๋ง๋์ง ์์์ต๋๋ค. MSG_OOB ๊ตฌํ์ ๋ฒ๊ทธ๋ก ์ธํด ํน์ ์์คํ
ํธ์ถ ์ํ์ค๋ฅผ ์คํํ ํ ํด์ ํ ์ฌ์ฉ(use-after-free) ์กฐ๊ฑด์ด ๋ฐ์ํ ์ ์์์ต๋๋ค. char dummy; int socks[2]; socketpair(AF_UNIX, SOCK_STREAM, 0, socks); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, 0); recv(socks[0], &dummy, 1, MSG_OOB);
์ถ์ฒ : opennet.ru
