CVE-2019-1068: SQL Server ๋ด๋ถ ํจ์ ์ฒ๋ฆฌ๊ฐ ๋ฌด๋์ง๋ฉด ์๋น์ค ๊ณ์ ๊น์ง ๊ฐ๋ค
2019๋ 7์ ํจ์น ํ์์ผ์ ์ค์ ๋ก ์ ์ฉ๋๊ณ ์๋ ์๋์ฐ ์ ๋ก๋ฐ์ด ๋ ๊ฑด ๋๋ฌธ์ ์๋๋ฌ์ ๋ค. ๊ทธ ์๋ ์์์ ์กฐ์ฉํ ๋ชฉ๋ก ํ ์ค์ ์ฐจ์งํ๊ณ ์ง๋๊ฐ ๊ฒ์ด CVE-2019-1068, Microsoft SQL Server์ ์๊ฒฉ ์ฝ๋ ์คํ ์ทจ์ฝ์ ์. ์ ๋ก๋ฐ์ด๊ฐ ์๋์๊ณ ๊ณต๊ฐ ์ต์คํ๋ก์๋ ๋์ง ์์์ผ๋ ๋๋ถ๋ถ์ ์กฐ์ง์ด "๋ค์ ์ ๊ธฐ ์ ๊ฒ ๋"๋ก ๋ฏธ๋ค๊ณ , ๊ทธ๋ ๊ฒ ๋ฏธ๋ค์ง DB ์๋ฒ๊ฐ ๋ช ๋ ๋ค ๋ด๋ถ ์นจํฌ ๋จ๊ณ์์ ๋ฐ๋ชฉ์ ์ก๋ ๊ฒฝ์ฐ๋ฅผ ์ฌ์ฌ์ฐฎ๊ฒ ๋ณด๊ฒ ๋จ.
- SQL Server๊ฐ ๋ด๋ถ ํจ์ ์ฒ๋ฆฌ๋ฅผ ์๋ชปํ๋ ์ง์ ์์ ๋ฐ์ํ๋ ์๊ฒฉ ์ฝ๋ ์คํ ๊ฒฐํจ์ผ๋ก, ์กฐ์๋ ์ฟผ๋ฆฌ ํ๋๊ฐ SQL Server ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง ์๋น์ค ๊ณ์ ๊ถํ์ ์ฝ๋ ์คํ์ผ๋ก ์ด์ด์ง
- "์ธ์ฆ๋ ์ฌ์ฉ์๋ง ๊ฐ๋ฅ"์ด๋ผ๋ ์กฐ๊ฑด์ ์์ฌ์ ๊ทผ๊ฑฐ๊ฐ ๋ชป ๋จ. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ SQL ์ธ์ ์ ์ด ๊ทธ ์ธ์ฆ์ ๋์ ์ ๊ณตํด ์ฃผ๊ธฐ ๋๋ฌธ์
- ๋ฐฉ์ด์ ํต์ฌ์ ํจ์น + ์๋น์ค ๊ณ์ ์ต์๊ถํ +
sqlservr.exe์ ์์ ํ๋ก์ธ์ค ๊ฐ์. ์ด ์ ์ด ๊ฐ์ถฐ์ง๋ฉด ๋ฏธํจ์น ์ํ์์๋ ํผํด ๋ฐ๊ฒฝ์ด ํฌ๊ฒ ์ค์ด๋ฆ
๊ฒฐํจ์ ์ฑ๊ฒฉ: ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ์ฝ๋๊ฐ ๋์ด๊ฐ๋ค
๊ณต๊ฐ๋ ์ค๋ช ์ ์งง์. SQL Server๊ฐ ๋ด๋ถ ํจ์(internal function) ์ฒ๋ฆฌ ๊ณผ์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ค๋ฃจ์ง ๋ชปํ ๋ ๋ฐ์ํ๋ฉฐ, ๊ณต๊ฒฉ์๊ฐ ์ํฅ๋ฐ๋ ์ธ์คํด์ค์ ํน์ํ๊ฒ ์กฐ์๋ ์ฟผ๋ฆฌ๋ฅผ ์ ์ถํ๋ฉด ์ฝ๋ ์คํ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ. ์งง์ ๋ฌธ์ฅ์ด์ง๋ง ๋ฐฉ์ด์ ์ ์ฅ์์ ๋ฏ์ด๋ณผ ์ง์ ์ด ์ธ ๊ฐ ์์.
- ์ง์ ์ ์ด '์ฟผ๋ฆฌ'์ — ๋ณ๋ ํ๋กํ ์ฝ ์ทจ์ฝ์ ์ด๋ ํ์ผ ์ ๋ก๋๊ฐ ํ์ ์์. DB๊ฐ ํ์์ ์ ์์ ์ผ๋ก ๋ฐ์๋ค์ด๋ ์ ๋ ฅ ๊ฒฝ๋ก ๊ทธ๋๋ก ๋ค์ด์ด. ์ฆ ๋คํธ์ํฌ ๊ณ์ธต์ ์๊ทธ๋์ฒ ํ์ง๋ก ๊ฑธ๋ฌ๋ด๊ธฐ๊ฐ ๋๋จํ ์ด๋ ค์.
- ์คํ ์ปจํ
์คํธ๊ฐ ์๋น์ค ๊ณ์ ์ — SQL ๋ก๊ทธ์ธ ๊ถํ์ด ์๋๋ผ
sqlservr.exe๋ฅผ ๊ตฌ๋ํ๋ OS ๊ณ์ ๊ถํ์ผ๋ก ์ฝ๋๊ฐ ๋์๊ฐ. ์ฌ๊ธฐ์ ์กฐ์ง ๊ฐ ํผํด ๊ฒฉ์ฐจ๊ฐ ๊ทน๋จ์ ์ผ๋ก ๋ฒ์ด์ง. - ์ธ์ฆ์ด ์ ํ ์กฐ๊ฑด์ — ์ต๋ช ๊ณต๊ฒฉ์ ๋ถ๊ฐ. ๋ค๋ง ์ด ์กฐ๊ฑด์ด ์ค๋ฌด์์ ์ผ๋ง๋ ํ๊ฑฐ์ด์ง๋ ์๋์์ ๋ฐ๋ก ๋ค๋ฃธ.
์ํฅ ๋ฒ์๋ 2014๋ถํฐ 2017๊น์ง์ ์ง์ ๋ฒ์ ๋์ ๊ฑธ์ณ ์์๊ณ , ์๋น์ค ํฉ๊ณผ ๋์ ์
๋ฐ์ดํธ ๋ผ์ธ๋ณ๋ก ๊ฐ๊ฐ ์์ ๋ณธ์ด ๋ฐฐํฌ๋จ. ์๊ธฐ ์ธ์คํด์ค๊ฐ ํด๋นํ๋์ง๋ SELECT @@VERSION์ผ๋ก ๋น๋ ๋ฒํธ๋ฅผ ๋ฝ์ ํด๋น ๋ผ์ธ์ ์์ ๋น๋์ ๋น๊ตํ๋ ๊ฒ ๊ฐ์ฅ ํ์คํจ.
"์ธ์ฆ๋ ๊ณ์ ์ด ์์ด์ผ ํ์์์"๋ผ๋ ๋ง์ ํจ์
์ด CVE๋ฅผ ๋ณด๊ณ ๋ฐ์ผ๋ฉด ์ด์ ์ํ์ ์ด๋ ๊ฒ ๋ฐ์ํจ. ๋ด๋ถ๋ง์ด๊ณ , ๋ก๊ทธ์ธ ๊ณ์ ๋ ์ฑ ์๋น์ค ๊ณ์ ํ๋๋ฟ์ด๊ณ , ๊ทธ ๊ณ์ ๋น๋ฐ๋ฒํธ๋ ์์ ํ๋ค๋ ๋ ผ๋ฆฌ. ๊ณผ์ฐ ๊ทธ๋ด๊น?
- SQL ์ธ์ ์ ์ด ๊ณง ์ธ์ฆ ์ฐํ์. ์ทจ์ฝํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฏธ ์ธ์ฆ๋ ์ธ์ ์ผ๋ก ์์ ์ฟผ๋ฆฌ๋ฅผ ์ค์ด ๋ณด๋ด์ฃผ๋ ๋๋ฆฌ์ธ ์ญํ ์ ํจ. ๊ณต๊ฒฉ์๋ DB ์๊ฒฉ์ฆ๋ช ์ ๋ชฐ๋ผ๋ ๋จ. ์ด ๊ตฌ์กฐ์์ CVE-2019-1068์ "SQLi๋ก ๋ฐ์ดํฐ ์ ์ถ"์ "SQLi๋ก ์๋ฒ ์ฅ์ "์ผ๋ก ์น๊ฒฉ์ํด.
- ์ ๊ถํ ๊ณ์ ์ด๋ฉด ์ถฉ๋ถํจ.
public์์ค์ ์ฝ๊ธฐ ์ ์ฉ ๋ก๊ทธ์ธ๋ ์ฟผ๋ฆฌ๋ ๋์ง ์ ์์. ๊ถํ ๋ถ๋ฆฌ๋ฅผ ์ํด ๋จ๋ค๋ ์ฌ์ค์ด ์ด ๊ฒฐํจ ์์์๋ ๋ฐฉ์ด๊ฐ ๋์ง ์์. - ๋ด๋ถ๋ง ์ ์ ๋ ์ํํจ. ์ด๊ธฐ ์นจํฌ์ ์ฑ๊ณตํ ๊ณต๊ฒฉ์๊ฐ ํก์ ์ด๋ ์ค์ ๋ง๋๋ DB ์๋ฒ๋ ๋๊ฐ ๋๋ฉ์ธ ์์ฐ์ ์ค์ฌ์. ์๋น์ค ๊ณ์ ์ด ๋๋ฉ์ธ ๊ณ์ ์ด๋ฉด ์ฌ๊ธฐ์ ๊ถํ ์์น ์ฌ์ฌ์ด ์์๋จ.
ํ์ง: ๋ก๊ทธ๋ฅผ ์ด๋์ ๋ด์ผ ํ๋๊ฐ
ํ์ด๋ก๋ ์์ฒด๋ฅผ ์ก๋ ๊ฑด ํ์ค์ ์ด์ง ์์. ๋์ ์ต์คํ๋ก์์ด ๋จ๊ธฐ๋ ๋ถ์ ํจ๊ณผ๋ฅผ ๋ ธ๋ฆฌ๋ ๊ฒ ํจ์ฌ ์ฑ๊ณต๋ฅ ์ด ๋์. ๊ฐ์ธ์ ์ผ๋ก๋ ์๋ ์์๋๋ก ๊น์๋๊ธธ ์ถ์ฒํจ.
- ํ๋ก์ธ์ค ๊ณ๋ณด ๊ฐ์(๊ฐ์ฅ ๊ฐ์ฑ๋น ์ข์). Sysmon ์ด๋ฒคํธ ID 1์์ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ
sqlservr.exe์ธcmd.exe,powershell.exe,wmic.exe,rundll32.exe๋ฅผ ํ์ง ๊ท์น์ผ๋ก ๊ฑธ์ด๋ ๊ฒ. ์ ์ ์ด์ ํ๊ฒฝ์์ ์ด ์กฐํฉ์ ๊ฑฐ์ ๋ฐ์ํ์ง ์์ผ๋ฏ๋ก ์คํ์ด ์ ๊ณ ์ ํธ๊ฐ ์ ๋ช ํจ. - SQL Server ERRORLOG์ ์์ธ ํ์ . ๋ฉ๋ชจ๋ฆฌ ์์ํ ๊ฒฐํจ์ ์ฑ๊ณต๋ณด๋ค ์คํจ๊ฐ ๋ง์. ์ก์ธ์ค ์๋ฐ(0xC0000005), ์คํ ๋คํ ์์ฑ,
SqlDumpExceptionHandler๊ธฐ๋ก, ์๊ธฐ์น ์์ ์์ง ์ฌ์์์ด ์งง์ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ๋ณต๋๋ค๋ฉด ๋๊ตฐ๊ฐ ์คํ์ ์ ๋ง์ถ๊ณ ์๋ ์ค์ผ ๊ฐ๋ฅ์ฑ์ ์์ฌํด์ผ ํจ. - ๊ตฌ์ฑ ๋ณ๊ฒฝ ๊ฐ์ฌ.
sp_configure๋ฅผ ํตํxp_cmdshell, CLR, Ole Automation Procedures ํ์ฑํ๋ ๊ณต๊ฒฉ์๊ฐ ๋ฐํ์ ๊ตณํ๋ ์ ํ์ ์ธ ๋ค์ ์์์. SQL Server Audit์ด๋ ํ์ฅ ์ด๋ฒคํธ(Extended Events)๋ก ๋ฐ๋์ ๋จ๊ธธ ๊ฒ. - ์ธ์
๋ฉํ๋ฐ์ดํฐ์ ์ด์ง๊ฐ.
sys.dm_exec_sessions์program_name,host_name, ์ ์ IP๋ฅผ ํ์ ๊ฐ๊ณผ ๋์กฐํด ๋ณด๋ฉดsqlcmd๋ ๊ด๋ฆฌ ๋๊ตฌ ๋ฌธ์์ด์ด ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๊ฐ ์๋ ๊ณณ์์ ํ์ด๋์ค๋ ์๊ฐ์ด ๋ณด์. - ์์๋ฐ์ด๋ ํธ๋ํฝ. DB ์๋ฒ๋ ์๋ ๋ฐ์ผ๋ก ๋๊ฐ ์ผ์ด ๊ฑฐ์ ์๋ ์ฅ๋น์. DB์์ ์ธํฐ๋ท์ผ๋ก ํฅํ๋ ์ ๊ท ์ฐ๊ฒฐ์ ๊ทธ ์์ฒด๋ก ์กฐ์ฌ ๋์์ด ๋์ด์ผ ํจ.
์ํ: ํจ์น ์ด์ ์ ํผํด ๋ฐ๊ฒฝ๋ถํฐ ์ค์ด๊ธฐ
ํจ์น๊ฐ 1์์์ธ ๊ฑด ๋น์ฐํ์ง๋ง, 24์๊ฐ ๋ฌด์ค๋จ DB๋ ์ฌ๊ธฐ๋ ์ผ์ ์ ์ก๋ ๋ฐ๋ง ๋ช ์ฃผ๊ฐ ๊ฑธ๋ฆฌ๊ธฐ๋ ํจ. ๊ทธ ๊ธฐ๊ฐ์ ๋ฒํฐ๋ ๋ฐฉ๋ฒ์ด ํ์ํจ.
- ์๋น์ค ๊ณ์ ์ LocalSystem์์ ๋ด๋ฆด ๊ฒ. ์ด ํ๋๊ฐ ์ฌ๊ณ ์ ๋ฑ๊ธ์ ๋ฐ๊ฟ. ์ ์ฉ ์ ๊ถํ ๋๋ฉ์ธ ๊ณ์ ์ด๋ gMSA๋ก ์ ํํ๊ณ , ํ์ํ ๋ก์ปฌ ์ ์ฑ ๊ถํ๋ง ์ต์๋ก ๋ถ์ฌํจ. ์๋น์ค ๊ณ์ ์ด ๋ก์ปฌ ๊ด๋ฆฌ์๊ฐ ์๋๋ฉด RCE๊ฐ ์ฑ๊ณตํด๋ ๊ณต๊ฒฉ์๋ DB ํ๋ก์ธ์ค ๊ถํ์ด๋ผ๋ ์ข์ ์์ ์์ ๋จ๊ฒ ๋จ.
- ์ ํ๋ฆฌ์ผ์ด์
DB ๊ณ์ ์์
sysadmin·db_owner๋ฅผ ํ์ํ ๊ฒ. ์ทจ์ฝ์ ์์ฒด๋ฅผ ๋ง์ง๋ ๋ชปํด๋ ์ดํ ํ์ฅ ์ ์ฅ ํ๋ก์์ ํ์ฑํ ๊ฐ์ ํ์ ๋์์ ์ฐจ๋จํจ. - SQL ์ธ์ ์ ์ ๊ฒ์ ๋ณํํ ๊ฒ. ์์ ๋งํ๋ฏ ์ด CVE์ ์ ํ ์กฐ๊ฑด์ ์ค์ง์ ์ผ๋ก ๊ณต๊ธํ๋ ํต๋ก์. ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ๊ณผ ์ ์ฅ ํ๋ก์์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ฝ๋ ๋ ๋ฒจ์์ ๋ค์ ํ์ธํ๋ ๊ฒ ๊ฒฐ๊ตญ ๊ฐ์ฅ ๊ทผ๋ณธ์ ์ธ ๋์์.
- ๋ ธ์ถ๋ฉด ์ ๋ฆฌ. 1433/TCP์ 1434/UDP๊ฐ ์ธํฐ๋ท์ด๋ ์ฌ์ฉ์ ๋์ญ์์ ์ง์ ๋ฟ๋ ๊ตฌ์กฐ๋ผ๋ฉด ๋ฐฉํ๋ฒฝ๊ณผ ์ธ๊ทธ๋จผํธ๋ถํฐ ์๋ด์ผ ํจ. DB๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์๋ง ์ ๊ทผ ๊ฐ๋ฅํด์ผ ํจ.
- ์ง์ ์ข ๋ฃ ๋ฒ์ ์ ๋ฆฌ. ์์ ๋ณธ์ด ๋์ค์ง ์๋ ๊ตฌ๋ฒ์ ์ด ๋จ์ ์๋ค๋ฉด ๊ทธ๊ฑด ์ํ๊ฐ ์๋๋ผ ์ด์ ๊ณํ์ ์์ญ์.
๋ง๋ฌด๋ฆฌํ๋ฉฐ
CVE-2019-1068์ ์ง๊ธ ๋ค์ ๊บผ๋ด ๋ณด๋ ์ด์ ๋ ์ด ๊ฒฐํจ์ด ํน๋ณํ ํ๋ คํด์๊ฐ ์๋. ์คํ๋ ค ํ๋ฒํ CVE ํ๋๊ฐ ์กฐ์ง์ ๊ตฌ์กฐ์ ์ฝ์ ์ ๊ทธ๋๋ก ์ฆํญ์ํค๋ ๋ฐฉ์์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์. ์๋น์ค ๊ณ์ ์ ํธํ๋ค๊ณ LocalSystem์ผ๋ก ๋ ์ ํ, ์ฑ ๊ณ์ ์ ๋๋ํ๊ฒ ์ค ๊ถํ, ๋ฏธ๋ค๋ SQLi ์ ๊ฒ — ์ด๋ฐ ๊ฒ๋ค์ด ํ์์ ์๋ฌด ์ผ๋ ์ผ์ผํค์ง ์๋ค๊ฐ ์ทจ์ฝ์ ํ๋๋ฅผ ๋ง๋๋ฉด ํ๊บผ๋ฒ์ ์ฒญ๊ตฌ์๋ก ๋์์ด.
์ค๋ ๋น์ฅ ํ์ค ์ ์๋ ๊ฑด ๋ ๊ฐ์ง์์. ํ๋๋ SELECT @@VERSION์ผ๋ก ๋น๋ ํ์ธํ๊ธฐ, ๋ค๋ฅธ ํ๋๋ SQL Server ์๋น์ค๊ฐ ์ด๋ค ๊ณ์ ์ผ๋ก ๋๊ณ ์๋์ง ์๋น์ค ์์ฑ ์ฐฝ ์ด์ด๋ณด๊ธฐ. ๋ ๋ค 5๋ถ์ด๋ฉด ๋๋๋๋ฐ, ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ค์์ ํ ์ผ์ด ์์ ํ ๋ฌ๋ผ์ง ๊ฒ๋๋ค. ํ์ธํด ๋ณด์๊ณ ์์ ๋ฐ์ ๊ณ์ ์ด ๋์๋ค๋ฉด ๋๊ธ๋ก ๊ณต์ ํด ์ฃผ์ธ์. ๋น์ทํ ์ํฉ ์ ๋ฆฌํด ๋ณธ ๊ฒฝํ์ด ์์ผ๋ ๊ฐ์ด ๋ฐฉ๋ฒ ์ฐพ์๋ณด์์!
# ๋๊ธ