๊ธ ์ฐ๋ ๋๊ตฌ์ ๊ด๋ฆฌ์ ๋ฌธ์ด ์ด๋ ค ์์๋ค — Joomla JCE ์ ๊ทผ ์ ์ด ๊ฒฐํจ CVE-2026-48907
์ด์ ์ค์ธ Joomla ์ฌ์ดํธ์์ ๊ฐ์ฅ ์์ด ๋ง์ด ๊ฐ๋ ํ๋ฉด์ด ์ด๋๋๊ณ ๋ฌผ์ผ๋ฉด, ๊ธ์ ์ฐ๊ณ ์ด๋ฏธ์ง๋ฅผ ๋ผ์ ๋ฃ๋ ์๋ํฐ๋ผ๊ณ ๋ตํ๋ ์ฌ๋์ด ๋ง์. ๊ทธ๋งํผ ๋งค์ผ ์ผ๋ ๋๊ตฌ์ด๊ณ , ๊ทธ๋์ ์์ฌํ์ง ์๊ฒ ๋๋ ๋๊ตฌ์ด๊ธฐ๋ ํจ. ์ด๋ฒ์ ๋ณด๊ณ ๋ CVE-2026-48907์ ๋ฐ๋ก ๊ทธ ์๋ฆฌ, Widget Factory๊ฐ ๋ง๋ JCE(Joomla Content Editor)์ ์ ๊ทผ ์ ์ด๊ฐ ์ ๋๋ก ์๋ํ์ง ์์๋ค๋ ์ด์ผ๊ธฐ์.
- JCE ์ปดํฌ๋ํธ์ ์ผ๋ถ ๊ธฐ๋ฅ์ด ๊ถํ ๊ฒ์ฆ์ ์ถฉ๋ถํ ํ์ง ์์, ๋ณธ๋ ํ์ฉ๋์ง ์์ ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋ ๋ถ์ ์ ํ ์ ๊ทผ ์ ์ด(Improper Access Control) ๋ฌธ์ ์.
- ํต์ฌ ์ํ์ ํ์ผ·๋ฏธ๋์ด ๊ด๋ฆฌ๋ ์ค์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ฎ์ ๊ถํ ๊ณ์ ์ด ์์ ๋ ์ ์๋ค๋ ์ — ์๋ฃ ์ ์ถ·์น์ ธ ์ ๋ก๋·์ฝํ ์ธ ๋ณ์กฐ๋ก ์ด์ด์ง ์ ์์.
- ๋ฐฉ์ด์ ์ถ๋ฐ์ ์ ๋จ์ํจ: ํ์ฅ ์ฆ์ ์ ๋ฐ์ดํธ, ์ ๊ทผ ๋ก๊ทธ์์ ๋น์ ์ ํธ์ถ ํ์ง, ๊ทธ๋ฆฌ๊ณ '์๋ํฐ=์ ๋ขฐ' ๊ฐ์ ์์ฒด๋ฅผ ์ ๊ฒํ๋ ๊ฒ.
๋ฌด์์ด ๋ฌธ์ ์ธ๊ฐ — '๊ถํ ํ์ธ์ ๊น๋นกํ' ๊ธฐ๋ฅ๋ค
์ ๊ทผ ์ ์ด ์ทจ์ฝ์ ์ ํ๋ คํ ๋ฉ๋ชจ๋ฆฌ ์ต์คํ๋ก์ ๊ฐ์ ๊ฒ ์๋. ์คํ๋ ค ๋ ํํ๊ณ ๋ ์กฐ์ฉํจ. ์ ์์ ์ธ ์์ฒญ์ฒ๋ผ ๋ณด์ด๋ HTTP ํธ์ถ ํ๋๊ฐ, ์๋ฒ ์ชฝ์์ "์ด ์ฌ์ฉ์๊ฐ ์ด ์์ ์ ํด๋ ๋๋๊ฐ?"๋ฅผ ๋ฌป๋ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๋ ๊ฒ์ด ์ ๋ถ์. JCE์ฒ๋ผ ํ์ผ ์ ๋ก๋·๋ฏธ๋์ด ๋ธ๋ผ์ฐ์ ·๋๋ ํฐ๋ฆฌ ํ์ ๊ฐ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ ํ์ฅ์์ ์ด ๊ฒ์ฆ์ด ๋น ์ง๋ฉด, ์ํฅ์ ๋จ์ํ ์ ๋ณด ๋ ธ์ถ์์ ๋ฉ์ถ์ง ์์.
- ์์ง์ ๊ถํ ์์น: ๋ฎ์ ๊ถํ(๋๋ ์ธ์ฆ์ด ์ฝํ) ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์๊ธ ์์ ์ ์ ๊ทผ.
- ๊ฐ์ฒด ๋จ์ ์ ๊ทผ ์ฐํ(IDORํ): ์๋ณ์๋ง ๋ฐ๊ฟ ๋ค๋ฅธ ์ฌ์ฉ์์ ์๋ฃ๋ ํ์ผ์ ์ ๊ทผ.
- ํ์ผ ๊ธฐ๋ฅ ์ ์ฉ: ๋ฏธ๋์ด ๊ด๋ฆฌ ๊ฒฝ๋ก๊ฐ ์ด๋ฆฌ๋ฉด ์ ์ฑ ํ์ผ ์ ๋ก๋๋ก ์ด์ด์ง ์ฌ์ง๊ฐ ์๊ธฐ๊ณ , ์ต์ ์ ๊ฒฝ์ฐ ์๊ฒฉ ์ฝ๋ ์คํ์ ๋ฐํ์ด ๋จ.
๊ตฌ์ฒด์ ์ธ ์ํฅ ๋ฒ์์ ์ ์๋ ์ฌ์ฉ ์ค์ธ JCE ๋ฒ์ ๊ณผ ์ฌ์ดํธ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก, ๋จ์ ํ๊ธฐ๋ณด๋ค "๋ด ํ๊ฒฝ์์ ์ด๋๊น์ง ๋ ธ์ถ๋๋๊ฐ"๋ฅผ ์ง์ ํ์ธํ๋ ํธ์ด ์์ ํจ.
์ด๋ป๊ฒ ํ์งํ๋๊ฐ — ๋ก๊ทธ๊ฐ ๋จผ์ ๋งํด์ค๋ค
์ด๋ฐ ๋ฅ์ ๊ณต๊ฒฉ์ ํ๋ฒํ ์์ฒญ๊ณผ ๋ฎ์์, ์๊ทธ๋์ฒ๋ณด๋ค '๋งฅ๋ฝ'์ผ๋ก ์ก์์ผ ํจ. ๊ฐ์ธ์ ์ผ๋ก๋ ์๋ ์์๋ก ๋ณด๋ ๊ฑธ ์ถ์ฒํจ.
- ์ปดํฌ๋ํธ ์ง์ ์ ๋ชจ๋ํฐ๋ง: ์น ๋ก๊ทธ์์ index.php?option=com_jce ๊ณ์ด ์์ฒญ, ํนํ ํ์ผ·๋ฏธ๋์ด ๊ด๋ จ ํ์คํฌ ํ๋ผ๋ฏธํฐ๊ฐ ์ธ์ฆ๋์ง ์์ ์ธ์ ์ด๋ ์ ๊ถํ ๊ณ์ ์์ ํธ์ถ๋๋์ง ์ถ์ .
- ์ ๋ก๋ ๋๋ ํฐ๋ฆฌ ๊ฐ์: ๋ฏธ๋์ด ํด๋์ .php, .phtml ๋ฑ ์คํ ๊ฐ๋ฅํ ํ์ฅ์๊ฐ ์๋ก ์๊ธฐ๋์ง ํ์ผ ๋ฌด๊ฒฐ์ฑ ๋ชจ๋ํฐ๋ง(FIM)์ผ๋ก ์๋ฆผ ์ค์ . ์ ์ ์ด์์์ ์ด๋ฐ ํ์ผ์ด ๊ฐ์๊ธฐ ๋ ์ด์ ๋ ๊ฑฐ์ ์์.
- ๋น์ ์ ํ์ ํจํด: ์งง์ ์๊ฐ์ ์๋ณ์๋ง ๋ฐ๊ฟ๊ฐ๋ฉฐ ๋ฐ๋ณต ํธ์ถํ๋ ํ๋ฆ, ํ์ ๊ธ์ ์ฐ์ง ์๋ ๊ณ์ ์ ์๋ํฐ API ์ ๊ทผ ๋ฑ์ ์ด์ ์งํ๋ก ๋ด.
- WAF ๊ฐ์์ฑ: ์ฐจ๋จ๊น์ง๋ ๋ชป ํ๋๋ผ๋, ํด๋น ๊ฒฝ๋ก์ ์์ฒญ์ ๋ณ๋๋ก ํ๊น ํด๋๋ฉด ์ฌํ ๋ถ์์ด ํจ์ฌ ์์ํด์ง.
์ด๋ป๊ฒ ๋ง๋๊ฐ — ์์๊ฐ ๊ณง ์ฐ์ ์์
์ํ๋ ๊ฑฐ์ฐฝํ ํ์ ์์. ๋ค๋ง ์์๊ฐ ์ค์ํจ.
- ์ ๋ฐ์ดํธ ์ต์ฐ์ : Widget Factory๊ฐ ๋ฐฐํฌํ ์ต์ JCE๋ก ์ฌ๋ฆฌ๋ ๊ฒ์ด ๊ทผ๋ณธ ํด๊ฒฐ์ฑ . ํ์ฅ ์ ๋ฐ์ดํธ๋ ์ฝ์ด ์ ๋ฐ์ดํธ๋งํผ ์์ฃผ ์ํ๋๋ฐ, ์ฌ์ค ๊ณต๊ฒฉ ํ๋ฉด์ ์๋น์๊ฐ ์ฌ๊ธฐ ์์.
- ์ต์ ๊ถํ ์ฌ์ ๊ฒ: ์๋ํฐ ๊ธฐ๋ฅ๊ณผ ๋ฏธ๋์ด ๊ด๋ฆฌ ๊ถํ์ด ์ ๋ง ํ์ํ ๊ทธ๋ฃน์๋ง ๋ถ์ฌ๋ผ ์๋์ง ACL์ ๋ค์ ๋ด. 'ํธํ๋๊น'๋ก ์ด์ด๋ ๊ถํ์ด ๊ฐ์ฅ ์ํํจ.
- ์ ๋ก๋ ๊ฒฝ๋ก ์ฐจ๋จ: ๋ฏธ๋์ด ๋๋ ํฐ๋ฆฌ์์ PHP ์คํ์ ์๋ฒ ์ค์ ์ผ๋ก ๋ง์๋๋ฉด, ์ค๋ น ํ์ผ์ด ์ฌ๋ผ๊ฐ๋ ์คํ์ผ๋ก ์ด์ด์ง์ง ์์.
- ๊ฐ์ ํจ์น: ์ฆ์ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ ค์ด ์ด์ ํ๊ฒฝ์ด๋ผ๋ฉด WAF๋ก ์ทจ์ฝ ๊ฒฝ๋ก ์ ๊ทผ์ ์์ ์ ํํด ์๊ฐ์ ๋ฒ๋ ๊ฒ๋ ํ์ค์ ์ธ ์ ํ์.
๋ง๋ฌด๋ฆฌ — ์๋ํฐ๋ ๊ณต๊ฒฉ ํ๋ฉด์ด๋ค
์ด๋ฒ ๊ฑด์ด ์ฃผ๋ ๊ตํ์ ์์ธ๋ก ๋จ์ํจ. ์ฐ๋ฆฌ๊ฐ '๋ด๋ถ ๋๊ตฌ'๋ผ๊ณ ๋ฏฟ๊ณ ์ ๋ขฐ๋ฅผ ํํ๊ฒ ์ฃผ๋ ์ปดํฌ๋ํธ์ผ์๋ก, ๊ถํ ๊ฒ์ฆ์ ๋นํ์ด ์น๋ช ์ ์ด ๋๋ค๋ ๊ฒ์. ๋งค์ผ ์ผ๋ ์๋ํฐ, ์์ฃผ ์ฐ๋ ํ๋ฌ๊ทธ์ธ๋ถํฐ ๊ถํ ๋ชฉ๋ก์ ํ ๋ฒ ํ์ด๋ณด๋ ๊ฒ — ๊ฑฐ๊ธฐ์๋ถํฐ ์์ํ๋ฉด ์ถฉ๋ถํจ. ์ฌ๋ฌ๋ถ ์ฌ์ดํธ์ ํ์ฅ ๋ชฉ๋ก, ์ค๋ ๊ฐ์ด ํ ๋ฒ ์ ๊ฒํด๋ณด์์. ์ด์ํ๋ฉด์ ๋ฐ๊ฒฌํ ํ์ง ํ์ด ์๋ค๋ฉด ๋๊ธ๋ก ๋๋ ์ฃผ๋ฉด ์ข๊ฒ ์.