๋ ์ผ ๋ณดํ(Bochum)์ ์๋ Ruhr ๋ํ์ ์ฐ๊ตฌ์ ๊ทธ๋ฃน์ ํ๋กํ ์ฝ์ ์ทจ์ฝ์ (CVE-2023-48795)์ ์ ์ฉํ๋ SSH - Terrapin์ ๋ํ ์๋ก์ด MITM ๊ณต๊ฒฉ ๊ธฐ์ ์ ์ ์ํ์ต๋๋ค. MITM ๊ณต๊ฒฉ์ ๊ตฌ์ฑํ ์ ์๋ ๊ณต๊ฒฉ์๋ ์ฐ๊ฒฐ ํ์ ํ๋ก์ธ์ค ์ค์ ์ฐ๊ฒฐ ๋ณด์ ์์ค์ ๋ฎ์ถ๊ธฐ ์ํด ํ๋กํ ์ฝ ํ์ฅ์ ๊ตฌ์ฑํ์ฌ ๋ฉ์์ง ์ ์ก์ ์ฐจ๋จํ ์ ์์ต๋๋ค. ๊ณต๊ฒฉ ํดํท์ ํ๋กํ ํ์ ์ด GitHub์ ๊ฒ์๋์์ต๋๋ค.
์๋ฅผ ๋ค์ด OpenSSH์ ๋งฅ๋ฝ์์ ์ด ์ทจ์ฝ์ ์ ์ฌ์ฉํ๋ฉด ๋ ์์ ํ ์ธ์ฆ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋๋ก ์ฐ๊ฒฐ์ ๋กค๋ฐฑํ๊ณ ํค๋ณด๋ ํค ์ ๋ ฅ ๊ฐ์ ์ง์ฐ์ ๋ถ์ํ์ฌ ์ ๋ ฅ์ ๋ค์ ์์ฑํ๋ ๋ถ์ฑ๋ ๊ณต๊ฒฉ์ ๋ํ ๋ณดํธ๋ฅผ ๋นํ์ฑํํ ์ ์์ต๋๋ค. Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ AsyncSSH์์ ๋ด๋ถ ์ํ ๋จธ์ ๊ตฌํ์ ์ทจ์ฝ์ (CVE-2023-46446)๊ณผ ๊ฒฐํฉํ์ฌ Terrapin ๊ณต๊ฒฉ์ ํตํด SSH ์ธ์ ์ ์นจ์ ํ ์ ์์ต๋๋ค.
์ด ์ทจ์ฝ์ ์ ChaCha20-Poly1305 ๋๋ ETM(Encrypt-then-MAC) ๋ชจ๋์ ๊ฒฐํฉ๋ CBC ๋ชจ๋ ์ํธ๋ฅผ ์ง์ํ๋ ๋ชจ๋ SSH ๊ตฌํ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ์ฌํ ๊ธฐ๋ฅ์ด OpenSSH์์ 10๋ ๋๊ฒ ์ ๊ณต๋์์ต๋๋ค. ์ด ์ทจ์ฝ์ ์ ์ค๋ ์ถ์๋ OpenSSH 9.6๊ณผ PuTTY 0.80, libssh 0.10.6/0.9.8 ๋ฐ AsyncSSH 2.14.2์ ๋ํ ์ ๋ฐ์ดํธ์์ ํด๊ฒฐ๋์์ต๋๋ค. Dropbear SSH์์๋ ์์ ์ฌํญ์ด ์ด๋ฏธ ์ฝ๋์ ์ถ๊ฐ๋์์ง๋ง ์ ๋ฆด๋ฆฌ์ค๋ ์์ง ์์ฑ๋์ง ์์์ต๋๋ค.
์ด ์ทจ์ฝ์ ์ ์ฐ๊ฒฐ ํธ๋ํฝ์ ์ ์ดํ๋ โโ๊ณต๊ฒฉ์(์: ์ ์์ ์ธ ๋ฌด์ ์ง์ ์ ์์ ์)๊ฐ ์ฐ๊ฒฐ ํ์ ํ๋ก์ธ์ค ์ค์ ํจํท ์ํ์ค ๋ฒํธ๋ฅผ ์กฐ์ ํ๊ณ ์์ ๊ฐ์์ SSH ์๋น์ค ๋ฉ์์ง๋ฅผ ์๋์ผ๋ก ์ญ์ ํ ์ ์๋ค๋ ์ฌ์ค๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์์ ์ ์ก๋ฉ๋๋ค. ๋ฌด์๋ณด๋ค๋ ๊ณต๊ฒฉ์๋ ์ฌ์ฉ๋ ํ๋กํ ์ฝ ํ์ฅ์ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ SSH_MSG_EXT_INFO ๋ฉ์์ง๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค. ๊ณต๊ฒฉ์๋ ์ํ์ค ๋ฒํธ ์ฐจ์ด๋ก ์ธํ ํจํท ์์ค์ ์๋๋ฐฉ์ด ๊ฐ์งํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์๊ฒฉ ํจํท๊ณผ ๋์ผํ ์ํ์ค ๋ฒํธ๋ฅผ ๊ฐ์ง ๋๋ฏธ ํจํท ์ ์ก์ ์์ํ์ฌ ์ํ์ค ๋ฒํธ๋ฅผ ์ด๋ํฉ๋๋ค. ๋๋ฏธ ํจํท์๋ ์ฒ๋ฆฌ ์ค์ ๋ฌด์๋๋ SSH_MSG_IGNORE ํ๋๊ทธ๊ฐ ์๋ ๋ฉ์์ง๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ฌด๊ฒฐ์ฑ ์๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์์ ๊ฐ์ง๋๋ฏ๋ก ์คํธ๋ฆผ ์ํธ ๋ฐ CTR์ ์ฌ์ฉํ์ฌ ๊ณต๊ฒฉ์ ์ํํ ์ ์์ต๋๋ค. ์ค์ ๋ก๋ ChaCha20-Poly1305 ์ํธ๋ง์ด ๊ณต๊ฒฉ์ ์ทจ์ฝํฉ๋๋ค([์ด๋ฉ์ผ ๋ณดํธ]), ์ํ๋ ๋ฉ์์ง ์ํ์ค ๋ฒํธ์ Encrypt-Then-MAC ๋ชจ๋์ ์กฐํฉ(*)์ผ๋ก๋ง ์ถ์ ๋ฉ๋๋ค.[์ด๋ฉ์ผ ๋ณดํธ]) ๋ฐ CBC ์ํธ.
OpenSSH 9.6 ๋ฐ ๊ธฐํ ๊ตฌํ์์๋ ๊ณต๊ฒฉ์ ์ฐจ๋จํ๊ธฐ ์ํด "์๊ฒฉํ KEX" ํ๋กํ ์ฝ์ ํ์ฅ์ด ๊ตฌํ๋๋ฉฐ, ์๋ฒ ๋ฐ ํด๋ผ์ด์ธํธ ์ธก์์ ์ง์์ด ์๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐ ํ์ ํ๋ก์ธ์ค ์ค์ ์์ ๋ ๋น์ ์์ ์ด๊ฑฐ๋ ๋ถํ์ํ ๋ฉ์์ง(์: SSH_MSG_IGNORE ๋๋ SSH2_MSG_DEBUG ํ๋๊ทธ ์ฌ์ฉ)๋ฅผ ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ณ ๊ฐ ํค ๊ตํ์ด ์๋ฃ๋ ํ MAC(๋ฉ์์ง ์ธ์ฆ ์ฝ๋) ์นด์ดํฐ๋ฅผ ์ฌ์ค์ ํฉ๋๋ค.
์ถ์ฒ : opennet.ru