๋ฆฌ๋ ์ค ์ปค๋์์ ๋ ๊ฐ์ง ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค. ์ด ์ทจ์ฝ์ ๋ค์ ๋ฉฐ์น ์ ๊ณต๊ฐ๋ Copy Fail ์ทจ์ฝ์ ๊ณผ ์ ์ฌํ์ง๋ง, ๊ฐ๊ฐ xfrm-ESP์ RxRPC๋ผ๋ ๋ค๋ฅธ ํ์ ์์คํ ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ด ์ผ๋ จ์ ์ทจ์ฝ์ ์ Dirty Frag(Copy Fail 2๋ผ๊ณ ๋ ํจ)๋ผ๋ ์ฝ๋๋ช ์ผ๋ก ๋ช ๋ช ๋์์ต๋๋ค. ์ด ์ทจ์ฝ์ ์ ์ด์ฉํ๋ฉด ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ ํ์ด์ง ์บ์์ ํ๋ก์ธ์ค ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์จ ๋ฃจํธ ๊ถํ์ ํ๋ํ ์ ์์ต๋๋ค. ํ์ฌ ๋ชจ๋ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์์ ์๋ํ๋ ์ต์คํ๋ก์์ด ์กด์ฌํฉ๋๋ค. ์ด ์ทจ์ฝ์ ์ ํจ์น๊ฐ ๋ฐฐํฌ๋๊ธฐ ์ ์ ๊ณต๊ฐ๋์์ง๋ง, ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
Dirty Frag๋ ๋ ๊ฐ์ง ์ทจ์ฝ์ ์ ๋ค๋ฃน๋๋ค. ์ฒซ ๋ฒ์งธ๋ ESP(Encapsulating Security Payload) ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ IPsec ์ํธํ ์์ ์ ๊ฐ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ xfrm-ESP ๋ชจ๋์ ์ทจ์ฝ์ ์ด๊ณ , ๋ ๋ฒ์งธ๋ UDP๋ฅผ ํตํด ์คํ๋๋ AF_RXRPC ์์ผ ์ ํ๊ตฐ๊ณผ ๋์ผํ ์ด๋ฆ์ RPC ํ๋กํ ์ฝ์ ๊ตฌํํ๋ RxRPC ๋๋ผ์ด๋ฒ์ ์ทจ์ฝ์ ์ ๋๋ค. ๊ฐ๊ฐ์ ์ทจ์ฝ์ ์ ๋ฃจํธ ๊ถํ ํ๋์ ํ์ฉํฉ๋๋ค. xfrm-ESP ์ทจ์ฝ์ ์ 2017๋ 1์๋ถํฐ, RxRPC ์ทจ์ฝ์ ์ 2023๋ 6์๋ถํฐ ๋ฆฌ๋ ์ค ์ปค๋์ ์กด์ฌํด ์์ต๋๋ค. ๋ ๋ฌธ์ ๋ชจ๋ ํ์ด์ง ์บ์์ ์ง์ ์ฐ๊ธฐ๋ฅผ ํ์ฉํ๋ ์ต์ ํ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
xfrm-ESP ์ทจ์ฝ์ ์ ์ ์ฉํ๋ ค๋ฉด ์ฌ์ฉ์์๊ฒ ๋ค์์คํ์ด์ค ์์ฑ ๊ถํ์ด ์์ด์ผ ํ๊ณ , RxRPC ์ทจ์ฝ์ ์ ์ ์ฉํ๋ ค๋ฉด rxrpc.ko ์ปค๋ ๋ชจ๋์ด ๋ก๋๋์ด ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ถํฌ์์๋ AppArmor ๊ท์น์ ๋ฐ๋ผ ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ ์ ์์ง๋ง, rxrpc.ko ๋ชจ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก๋๋ฉ๋๋ค. ์ผ๋ถ ๋ฐฐํฌํ์ rxrpc.ko ๋ชจ๋์ด ์์ง๋ง ๋ค์์คํ์ด์ค ์์ฑ์ ์ฐจ๋จํ์ง๋ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ์ฐ๊ตฌ์์ ๋ ๊ฐ์ง ์ทจ์ฝ์ ์ ๋ชจ๋ ์ด์ฉํ์ฌ ์์คํ ์ ๊ณต๊ฒฉํ ์ ์๋ ๊ฒฐํฉ ์ต์คํ๋ก์์ ๊ฐ๋ฐํ์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ชจ๋ ์ฃผ์ ๋ฐฐํฌํ์์ ํด๋น ์ทจ์ฝ์ ์ ์ ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค. ํด๋น ์ทจ์ฝ์ ์ Ubuntu 24.04.4(์ปค๋ 6.17.0-23), RHEL 10.1(์ปค๋ 6.12.0-124.49.1), openSUSE Tumbleweed(์ปค๋ 7.0.2-1), CentOS Stream 10(์ปค๋ 6.12.0-224), AlmaLinux 10(์ปค๋ 6.12.0-124.52.3) ๋ฐ Fedora 44(์ปค๋ 6.19.14-300)์์ ์๋ํ๋ ๊ฒ์ผ๋ก ํ์ธ๋์์ต๋๋ค.
Copy Fail ์ทจ์ฝ์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, xfrm-ESP ๋ฐ RxRPC์ ๋ฌธ์ ๋ splice() ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ฆฌ ๋ฐ์ดํฐ ๋ณตํธํ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ์ด ํจ์๋ ํ์ด์ง ์บ์์ ์์์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๋ฌํ์ฌ ๋ณต์ฌ ์์ด ํ์ผ ๋์คํฌ๋ฆฝํฐ์ ํ์ดํ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ์ฐ๊ธฐ ์คํ์ ๊ณ์ฐ ์ ํ์ด์ง ์บ์์ ์์์ ๋ํ ์ง์ ์ฐธ์กฐ ์ฌ์ฉ์ ๊ณ ๋ คํ ์ ์ ํ ๊ฒ์ฌ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์, ํน์ํ๊ฒ ์กฐ์๋ ์์ฒญ์ ํตํด ํน์ ์คํ์ ์์ 4๋ฐ์ดํธ๋ฅผ ๋ฎ์ด์ฐ๊ณ ํ์ด์ง ์บ์์ ์๋ ๋ชจ๋ ํ์ผ์ ๋ด์ฉ์ ์์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ ํ์ผ ์ฝ๊ธฐ ์์ ์ ๋จผ์ ํ์ด์ง ์บ์์์ ๋ด์ฉ์ ๊ฐ์ ธ์ต๋๋ค. ํ์ด์ง ์บ์์ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ๊ฒฝ์ฐ, ํ์ผ ์ฝ๊ธฐ ์์ ์ ๋๋ผ์ด๋ธ์ ์ ์ฅ๋ ์ค์ ์ ๋ณด๊ฐ ์๋ ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด ์ทจ์ฝ์ ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ suid ๋ฃจํธ ํ๋๊ทธ๊ฐ ์๋ ์คํ ํ์ผ์ ํ์ด์ง ์บ์๋ฅผ ์์ ํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฃจํธ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ์คํ ํ์ผ /usr/bin/su๋ฅผ ์ฝ์ด ํ์ด์ง ์บ์์ ์ ์ฅํ ๋ค์, ํ์ด์ง ์บ์์ ์ ์ฅ๋ ์ด ํ์ผ์ ๋ด์ฉ์ ์์ ์ ์ฝ๋๋ฅผ ์ฝ์ ํ ์ ์์ต๋๋ค. ์ดํ "su" ์ ํธ๋ฆฌํฐ๋ฅผ ์คํํ๋ฉด ๋๋ผ์ด๋ธ์ ์๋ ์๋ ์คํ ํ์ผ์ด ์๋ ํ์ด์ง ์บ์์ ์ ์ฅ๋ ์์ ๋ ๋ณต์ฌ๋ณธ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ฉ๋๋ค.
์ทจ์ฝ์ ๊ณต๊ฐ ๋ฐ ํจ์น ๋์ ๋ฐฐํฌ๋ 5์ 12์ผ๋ก ์์ ๋์ด ์์์ง๋ง, ์ ๋ณด ์ ์ถ๋ก ์ธํด ํจ์น ๋ฐฐํฌ ์ ์ ์ทจ์ฝ์ ์ ๋ณด๊ฐ ๋จผ์ ๊ณต๊ฐ๋์์ต๋๋ค. 4์ ๋ง, rxrpc, ipsec, xfrm ๊ด๋ จ ํจ์น๊ฐ netdev ๊ณต๊ฐ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ๊ฒ์๋์์ง๋ง, ํด๋น ํจ์น๊ฐ ์ทจ์ฝ์ ๊ณผ ๊ด๋ จ์ด ์๋ค๋ ์ธ๊ธ์ ์์์ต๋๋ค. 5์ 5์ผ, IPsec ์๋ธ์์คํ ๊ด๋ฆฌ์๋ xfrm-esp ๋ชจ๋์ ์์ ์ฌํญ์ ์ ์ํ๋ netdev Git ์ ์ฅ์ ๋ณ๊ฒฝ ์ฌํญ์ ์น์ธํ์ต๋๋ค. ํด๋น ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ค๋ช ์ algif_aead ๋ชจ๋์ Copy Fail ์ทจ์ฝ์ ์ ์ ๋ฐํ ๋ฌธ์ ์ ๋ํ ์ค๋ช ๊ณผ ๊ฑฐ์ ๋์ผํ์ต๋๋ค. ํ ๋ณด์ ์ฐ๊ตฌ์์ด ์ด ์์ ์ฌํญ์ ๊ด์ฌ์ ๊ฐ๊ณ ์๋ํ๋ ์ต์คํ๋ก์์ ๋ง๋ค์ด ๊ณต๊ฐํ๋๋ฐ, ๊ทธ๋ 5์ 12์ผ๊น์ง ํด๋น ๋ฌธ์ ์ ๋ํ ์ ๋ณด ๊ณต๊ฐ๊ฐ ๊ธ์ง๋์ด ์๋ค๋ ์ฌ์ค์ ์์ง ๋ชปํ์ต๋๋ค.
๋ฆฌ๋
์ค ์ปค๋ ๋ฐ ๋ฐฐํฌํ์ ์ปค๋ ํจํค์ง์ ๋ํ ์์ ์
๋ฐ์ดํธ๋ ์์ง ๊ฒ์๋์ง ์์์ง๋ง, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํจ์น(xfrm-esp ๋ฐ rxrpc)๋ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. CVE ์๋ณ์๊ฐ ํ ๋น๋์ง ์์ ๋ฐฐํฌํ์ ํจํค์ง ์
๋ฐ์ดํธ๋ฅผ ์ถ์ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์์ ํด๊ฒฐ์ฑ
์ผ๋ก esp4, esp6 ๋ฐ rxrpc ์ปค๋ ๋ชจ๋์ ๋ก๋๋ฅผ ์ฐจ๋จํ ์ ์์ต๋๋ค. ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ธ์: sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
์ถ์ฒ : opennet.ru
