๋น๋ ์๋ฒ๊ฐ ํต์งธ๋ก ๋์ด๊ฐ๋ ๊ฒฝ๋ก — TeamCity ์ญ์ง๋ ฌํ ๊ฒฐํจ(CVE-2026-63077) ๋ฐฉ์ด ์ฒดํฌ๋ฆฌ์คํธ
CI ์๋ฒ๋ ์กฐ์ง์์ ๊ฐ์ฅ ๊ถํ์ด ์ผ ๊ธฐ๊ณ ์ค ํ๋์. ์์ค์ฝ๋ ์ ์ฒด๋ฅผ ์ฝ์ ์ ์๊ณ , ๋ฐฐํฌ ํค์ ํด๋ผ์ฐ๋ ์๊ฒฉ์ฆ๋ช ์ ๋ค๊ณ ์์ผ๋ฉฐ, ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์๋ช ๊น์ง ํจ. ๊ทธ๋ฐ ์๋ฒ์ ์ ๋ขฐํ ์ ์๋ ๋ฐ์ดํฐ์ ์ญ์ง๋ ฌํ(Deserialization of Untrusted Data) ๊ฒฐํจ์ด ๋ถ์๋ค๋ ์์์, ๋จ์ํ "์ทจ์ฝ์ ํ๋ ๋"๋ก ๋๊ธธ ๋งํ ์ฑ์ง์ด ์๋. JetBrains TeamCity์ ํ ๋น๋ CVE-2026-63077์ด ๋ฑ ๊ทธ ์ข ๋ฅ์.
- TeamCity์์ ์ ๋ขฐํ ์ ์๋ ์ ๋ ฅ์ด ์ญ์ง๋ ฌํ ๊ฒฝ๋ก๋ก ํ๋ฌ๋๋ ๊ฒฐํจ(CVE-2026-63077). CI ์๋ฒ ํน์ฑ์ ์ฑ๊ณต ์ ํ๊ธ์ด ์กฐ์ง ์ ์ฒด ๊ณต๊ธ๋ง์ผ๋ก ๋ฒ์ง.
- ๋์ 1์์๋ ๋ฒค๋๊ฐ ๋ฐฐํฌํ ์์ ๋ฒ์ ์ผ๋ก์ ์ ๊ทธ๋ ์ด๋. ์ฆ์ ๋ชป ํ๋ฉด ์๋ฒ ๋ ธ์ถ๋ฉด(๊ด๋ฆฌ ํฌํธ·์ธํฐ๋ท ์ง์ ๊ณต๊ฐ)๋ถํฐ ์๋ผ๋ด์ผ ํจ.
- ํ์ง๋ ์๋ฐ ์ง๋ ฌํ ๋งค์ง๋ฐ์ดํธ, ์์ธ ์คํํธ๋ ์ด์ค, ๋น๋ ์์ด์ ํธ์ ๋น์ ์ ์์ ํ๋ก์ธ์ค ์ด ์ธ ์ถ์ผ๋ก ์ก๋ ๊ฒ ํ์ค์ ์.
์ญ์ง๋ ฌํ๊ฐ ์ ๊ทธ๋ ๊ฒ ์น๋ช ์ ์ธ๊ฐ
์ง๋ ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ๋ฉ์ด๋ฆฌ๋ก ๋๋ฌ ๋ด๋ ์ผ์ด๊ณ , ์ญ์ง๋ ฌํ๋ ๊ทธ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ค์ ๊ฐ์ฒด๋ก ๋์ด๋ฆฌ๋ ์ผ์. ๋ฌธ์ ๋ ๋์ด๋ฆฌ๋ ๊ณผ์ ์์ ๊ฐ์ฒด์ ์์ฑ์๋ readObject ๊ฐ์ ํ
์ด ์๋์ผ๋ก ์คํ๋๋ค๋ ์ ์. ๊ณต๊ฒฉ์๊ฐ ๊ทธ ๋ฐ์ดํธ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ง์๋๋ก ๋ง๋ค ์ ์์ผ๋ฉด, "์ด๋ค ํด๋์ค๋ฅผ ์ด๋ค ์์๋ก ๋์ด๋ฆด์ง"๋ฅผ ๊ณต๊ฒฉ์๊ฐ ์ ํ๋ ์
์ด ๋จ. ์ฌ๊ธฐ์ ํด๋์คํจ์ค์ ์ด๋ฏธ ์กด์ฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฌ์ฌ์ฒ๋ผ ์ฎ์ผ๋ฉด(์ด๊ฑธ ๊ฐ์ ฏ ์ฒด์ธ์ด๋ผ ๋ถ๋ฆ) ๊ฒฐ๊ตญ ์์ ์ฝ๋๊ฐ ๋์๊ฐ. ๊ฐ๋
์ ์ด๊ฒ ์ ๋ถ๊ณ , ๊ตฌ์ฒด์ ์ธ ํ์ด๋ก๋ ์ ์์ ๋ฐฉ์ด์๊ฐ ์ ํ์๊ฐ ์์.
ํต์ฌ์ ์ธ์ฆ ์ด์ ์ด๋ ์ดํ๋์. TeamCity๋ ๋น๋ ์์ด์ ํธ, ์๋น์ค ๋ฉ์์ง, ํ๋ฌ๊ทธ์ธ, REST API ๋ฑ ์๋ฒ๋ก ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ํต๋ก๊ฐ ์ ๋ํ ๋ง์ ์ ํ์. ์ด ํต๋ก ์ค ํ๋๋ผ๋ ์ธ์ฆ ์์ด ํน์ ๋ฎ์ ๊ถํ์ผ๋ก ์ญ์ง๋ ฌํ ์ง์ ์ ๋ฟ์ ์ ์์ผ๋ฉด, ๊ณต๊ฒฉ์๋ CI ์๋ฒ์ ์คํ ๊ถํ์ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ. ๊ทธ ๋ค์์ ๋ปํจ. ๋น๋ ์คํฌ๋ฆฝํธ ๋ณ์กฐ, ์ํฐํฉํธ ์๋ช ํค ํ์ทจ, ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ํตํ ํ๋ก๋์ ์ง์ .
1๋จ๊ณ — ๋ด ํ๊ฒฝ์ ๋ฌด์์ด ๋ ์๋์ง ๋จผ์ ํ์
- TeamCity ์๋ฒ ๋ฒ์ ๊ณผ ๋น๋ ๋๋ฒ๋ฅผ ๊ด๋ฆฌ ์ฝ์์ ์๋ฒ ์ ๋ณด ํ๋ฉด์์ ํ์ธ. ์์ฒด ํธ์คํ ์ธ์ง ํด๋ผ์ฐ๋์ธ์ง๋ ๊ฐ์ด ๊ธฐ๋ก.
- ์๋ฒ๊ฐ ์ธํฐ๋ท์ ์ง์ ๋ ธ์ถ๋ผ ์๋์ง ํ์ธ. ์ฌ๋ด ์ ์ฉ์ด๋ผ ๋ฏฟ๊ณ ์๋ค๊ฐ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ VPN ์์ธ ๊ท์น ๋๋ฌธ์ ์ด๋ ค ์๋ ๊ฒฝ์ฐ๊ฐ ์ ๋ง ํํจ.
- ๋น๋ ์์ด์ ํธ๊ฐ ์๋ฒ์ ๋ถ๋ ๊ฒฝ๋ก(ํฌํธ, ์ธ์ฆ ๋ฐฉ์)์, ์ธ๋ถ ํ๋ ฅ์ฌ·ํ๋ฆฌ๋์ ๊ณ์ ์ด ๋จ์ ์๋์ง ์ ๊ฒ.
- ์ค์น๋ ์๋ํํฐ ํ๋ฌ๊ทธ์ธ ๋ชฉ๋ก ํ๋ณด. ํ๋ฌ๊ทธ์ธ์ด ์์ฒด์ ์ผ๋ก ์ง๋ ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ๊ฐ ์์ด ํจ์น ํ์๋ ๋ณ๋ ํ์ธ์ด ํ์ํจ.
2๋จ๊ณ — ํจ์น๊ฐ ์ต์ฐ์ , ๊ทธ ๋ค์์ด ๋ ธ์ถ๋ฉด ์ถ์
์ญ์ง๋ ฌํ ๊ฒฐํจ์ WAF ์๊ทธ๋์ฒ๋ ์ ๋ ฅ ํํฐ๋ก ์์ ํ ๋ง๊ธฐ๊ฐ ์ด๋ ค์ด ๋ถ๋ฅ์. ์ธ์ฝ๋ฉ์ ๋ฐ๊พธ๊ฑฐ๋ ๊ฐ์ ฏ์ ๊ฐ์๋ผ์ฐ๋ฉด ์ฐํ ๊ฒฝ๋ก๊ฐ ๊ณ์ ๋์ค๊ธฐ ๋๋ฌธ์. ๊ทธ๋์ ๋ฒค๋ ์์ ๋ณธ ์ ์ฉ์ด ์ฌ์ค์ ์ ์ผํ ๊ทผ๋ณธ ๋์ฑ ์. ๋ค๋ง CI ์๋ฒ๋ "์ง๊ธ ๋น์ฅ ์ฌ์์"์ด ์ด๋ ค์ด ์กฐ์ง์ด ๋ง์ผ๋, ํจ์น ์ฐฝ์ ์ก๋ ๋์ ๋ฒํธ ์กฐ์น๋ฅผ ๊ฐ์ด ๊น์๋ฌ์ผ ํจ.
- ์๋ฒ ์น ์ธํฐํ์ด์ค์ ์์ด์ ํธ ํต์ ํฌํธ๋ฅผ ์ธํฐ๋ท์์ ๋ถ๋ฆฌ. ์ต์ํ ์์ค IP ํ์ดํธ๋ฆฌ์คํธ๋ VPN ๋ค๋ก ์ด๋.
- ๊ด๋ฆฌ์ ๊ถํ ๊ณ์ ์ ์ ์ ๊ฒ. ์ฐ์ง ์๋ ๊ณ์ , ํด์ฌ์ ๊ณ์ , ๊ณต์ฉ ๊ณ์ ์ ๋ฆฌํ๊ณ ๊ด๋ฆฌ์์๊ฒ๋ 2๋จ๊ณ ์ธ์ฆ ๊ฐ์ .
- ๊ฒ์คํธ ๋ก๊ทธ์ธ, ์ต๋ช ์ด๋ ์ค์ ์ด ์ผ์ ธ ์์ผ๋ฉด ๋. ํ๋ก์ ํธ ๋จ์๋ก ์ด๋ ค ์๋ ๊ฒฝ์ฐ๋ ํ์ธ.
- CI ์๋ฒ๊ฐ ๋ค๊ณ ์๋ ์๊ฒฉ์ฆ๋ช (ํด๋ผ์ฐ๋ ํค, ๋ ์ง์คํธ๋ฆฌ ํ ํฐ, ์๋ช ํค)์ ์ ํจ๊ธฐ๊ฐ์ ์งง๊ฒ ์ค์ด๊ณ , ๊ฐ๋ฅํ๋ฉด ๋จ๊ธฐ ํ ํฐ์ผ๋ก ์ ํ.
- ๋น๋ ์์ด์ ํธ๋ฅผ ์๋ฒ์ ๊ฐ์ ํธ์คํธ์์ ๋๋ฆฌ๊ณ ์๋ค๋ฉด ๋ถ๋ฆฌ. ์์ด์ ํธ๋ ์ธ์ ๋ ์นจํด๋ ์ ์๋ ์คํ ํ๊ฒฝ์ผ๋ก ์ทจ๊ธํด์ผ ํจ.
3๋จ๊ณ — ํ์ง: ์ด๋๋ฅผ ๋ด์ผ ๊ฑธ๋ฆฌ๋
์ญ์ง๋ ฌํ ๊ณต๊ฒฉ์ ๋คํธ์ํฌ์์๋ ๋ก๊ทธ์์๋ ๋๋ฆ์ ํ์ ์ ๋จ๊น. ์๋ฒฝํ์ง ์์ง๋ง ์ธ ์ถ์ผ๋ก ๋๋ ๋ณด๋ฉด ์ค์ ์์ ์ธ ๋งํจ.
- ํ์ด๋ก๋ ํํ: ์๋ฐ ์ง๋ ฌํ ์คํธ๋ฆผ์
0xAC 0xED 0x00 0x05๋ก ์์ํจ. Base64๋ก ๊ฐ์ธ๋ฉดrO0AB๋ก ์์ํ๋ ๋ฌธ์์ด์ด ๋จ. HTTP ์์ฒญ ๋ณธ๋ฌธ, ์ฟ ํค, ํค๋, ํ๋ผ๋ฏธํฐ์์ ์ด ํจํด์ด CI ์๋ฒ๋ก ํฅํ๋์ง ํ๋ก์·IDS์์ ๋ฃฐ์ ๊ฑธ์ด๋ ๊ฒ. ์ ์ ํธ๋ํฝ์์๋ ๋์ฌ ์ ์์ผ๋ ์ฐจ๋จ๋ณด๋ค ์๋ฆผ ๋จผ์ . - ์์ธ ๋ก๊ทธ: ์คํจํ ์ญ์ง๋ ฌํ ์๋๋ ๋๊ฐ
ClassNotFoundException,InvalidClassException,StreamCorruptedException๊ฐ์ ์์ธ๋ฅผ ๋จ๊น. TeamCity ๋ก๊ทธ ๋๋ ํฐ๋ฆฌ์ ์๋ฒ ๋ก๊ทธ์์ ์ด๋ฐ ์์ธ๊ฐ ์งง์ ์๊ฐ์ ๋ฐ๋ณต๋๋ฉด ํ์ ์๋๋ก ๋ณด๊ณ ์๋ณธ ์์ฒญ์ ์ถ์ ํ ๊ฒ. ๊ณต๊ฒฉ์๋ ๋ณดํต ํ ๋ฒ์ ์ฑ๊ณตํ์ง ์๊ณ ์ฌ๋ฌ ๊ฐ์ ฏ์ ์ํํจ. - ํ๋ก์ธ์ค ๊ณ๋ณด: ๊ฐ์ฅ ํ์คํ ์ ํธ์. TeamCity ์๋ฒ JVM ํ๋ก์ธ์ค๊ฐ ์
ธ์ด๋ ์คํฌ๋ฆฝํธ ํด์๊ธฐ๋ฅผ ์์์ผ๋ก ๋์ฐ๋ ์๊ฐ์ ์ ์ ์ด์ ์ค์ ๋๋ฌพ. EDR์์ ์๋ฒ ํ๋ก์ธ์ค์ ์์์ผ๋ก
cmd.exe,powershell.exe,/bin/sh,curl,wget์ด ์์ฑ๋๋ ์ด๋ฒคํธ๋ฅผ ์ฐ์ ์์ ๋์ ํ์ง๋ก ์ฌ๋ ค๋ ๊ฒ. ๋น๋ ์์ด์ ํธ ์ชฝ์ ์๋ ๊ทธ๋ฐ ํ๋ก์ธ์ค๊ฐ ๋ง์ผ๋ ์๋ฒ์ ์์ด์ ํธ์ ๊ธฐ์ค์ ์ ๋ฐ๋์ ๋ถ๋ฆฌํด์ ์ก์์ผ ํจ.
์ฌ๊ธฐ์ ํ๋ ๋ ๋ถ์ด์๋ฉด ์์๋ฐ์ด๋์. CI ์๋ฒ๊ฐ ํ์ ํต์ ํ์ง ์๋ ์ธ๋ถ IP๋ก ๋๊ฐ๋ ์ปค๋ฅ์ , ํนํ ์ ์ฒด๋ถ๋ช ์ ํธ์คํธ๋ก ํฅํ๋ HTTP ์์ฒญ์ด๋ ๋ฏ์ ํฌํธ์ ์ฐ๊ฒฐ์ ๊ทธ ์์ฒด๋ก ์กฐ์ฌ ๋์์. ์๋ฒ๊ฐ ๋๊ฐ๋ ๋ชฉ์ ์ง๋ฅผ ํ์ฉ ๋ชฉ๋ก์ผ๋ก ๊ด๋ฆฌํ๋ ์กฐ์ง์ด๋ผ๋ฉด ์ด ๋จ๊ณ์์ ๋๋ถ๋ถ ๊ฑธ๋ฆผ.
4๋จ๊ณ — ์ด๋ฏธ ๋นํ๋ค๊ณ ๊ฐ์ ํ๊ณ ํ์ธํ ๊ฒ๋ค
ํจ์น๋ ๋ฏธ๋๋ฅผ ๋ง๋ ์กฐ์น์ผ ๋ฟ, ์ด๋ฏธ ๋ค์ด์จ ํ์ ์ ์ง์์ฃผ์ง ์์. ๋ ธ์ถ ๊ธฐ๊ฐ์ด ๊ธธ์๋ค๋ฉด ์ฌํ ์ ๊ฒ์ ๊ฐ์ด ๋๋ ค์ผ ํจ.
- ๋น๋ ์ค์ ๊ณผ ๋น๋ ์คํ ์ ๋ณ๊ฒฝ ์ด๋ ฅ ํ์ธ. TeamCity๋ ์ค์ ๋ณ๊ฒฝ์ ๊ฐ์ฌ ๋ก๊ทธ๋ก ๋จ๊ธฐ๋, ์๋ฌด๋ ์๋์ง ์์์ด์ผ ํ ์์ ์ ์์ ๊ธฐ๋ก์ ์ฐพ์๋ณผ ๊ฒ.
- ์๋ก ์์ฑ๋ ๊ด๋ฆฌ์ ๊ณ์ , ์๋ก ๋ฐ๊ธ๋ ์ก์ธ์ค ํ ํฐ, ์ ๊ท ๋ฑ๋ก๋ ๋น๋ ์์ด์ ํธ.
- ํ๋ฌ๊ทธ์ธ ๋๋ ํฐ๋ฆฌ์ ์๋ฒ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ์ ๋ฏ์ ํ์ผ์ด ์ถ๊ฐ๋๋์ง ํ์์คํฌํ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด์ ํ์ธ.
- ์ต๊ทผ ์ฐ์ถ๋ฌผ์ ํด์๊ฐ ์์ค ๊ธฐ์ค์ผ๋ก ์ฌ๋น๋ํ์ ๋์ ์ผ์นํ๋์ง ๋์กฐ. ๊ณต๊ธ๋ง ์นจํด๋ ์ฌ๊ธฐ์ ๊ฐ๋ฆผ.
- CI ์๋ฒ๊ฐ ์ฅ๊ณ ์๋ ๋ชจ๋ ๋น๋ฐ๊ฐ์ ์นจํด๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ํ์ . ์ด๊ฑด ํ์ ์ด ์์ ๋ ํนํ ํ์ํ ์กฐ์น์.
๋ง๋ฌด๋ฆฌํ๋ฉฐ
๊ฐ์ธ์ ์ผ๋ก๋ CI ์๋ฒ๋ฅผ "๋ด๋ถ ์์คํ "์ด ์๋๋ผ ํ๋ก๋์ ์์ฐ์ผ๋ก ๋ถ๋ฅํ๋ ๊ฒ๋ถํฐ ์์ํ๊ธธ ์ถ์ฒํจ. ์ธํฐ๋ท ๋ ธ์ถ ์ฌ๋ถ๋ฅผ ๋ถ๊ธฐ๋ง๋ค ํ์ธํ๊ณ , ํจ์น ์๋ฆผ์ ์ ํ๋ณ๋ก ๊ตฌ๋ ํด๋๊ณ , ๋น๋ ์๋ฒ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค ํ์ง ๋ฃฐ์ ๋ฏธ๋ฆฌ ๊น์๋๋ฉด ์ด๋ฐ CVE๊ฐ ๋์ฌ ๋๋ง๋ค ํ๋ฅ๋์ง ์๊ฒ ๋จ. ์ญ์ง๋ ฌํ ๊ฒฐํจ์ ์์ผ๋ก๋ ๊ณ์ ๋์ฌ ๊ฒ์ด๊ณ , ๋งค๋ฒ ์๋ก ์ค๋นํ๋ ๊ฒ๋ณด๋ค ํ ๋ฒ ๋ง๋ค์ด๋ ๋์ ํ์ ์ฌํ์ฉํ๋ ์ชฝ์ด ํจ์ฌ ๋ ์ง์น๋ ๋ฐฉ๋ฒ์ธ๊ฒ ๊ฐ์.
ํน์ TeamCity๋ฅผ ์ด์ ์ค์ด๋ผ๋ฉด ์ค๋ ์๋ฒ ์ ๋ณด ํ๋ฉด ํ ๋ฒ ์ด์ด๋ณด๊ณ , ๊ฒฐ๊ณผ๊ฐ ์ด๋ ๋์ง ๋๊ธ๋ก ๋๋ ์ฃผ๋ฉด ์ข๊ฒ ์. ๊ฐ์ด ์ ๊ฒํด๋ณด์์!