์๋ช ์ ๋ง๋๋ฐ ์ฌ์ฉ์๋ ์๋ฌด๋ — ownCloud WebDAV ์๋ช ๊ฒ์ฆ์ด ๋์น ์กฐ๊ฑด
2023๋ 11์ ๋ง, ํ์ผ ๊ณต์ ์๋ฒ๋ฅผ ์ด์ํ๋ ๊ด๋ฆฌ์๋ค์ด ํ ์ฃผ ์ฌ์ด์ ownCloud ๊ถ๊ณ ๋ฌธ ์ธ ๊ฑด์ ์ฐ๋ฌ์ ๋ฐ์์ผ ํ์. ๊ทธ์ค ํ๋๊ฐ ์ค๋ ๋ณผ CVE-2023-49105์ธ๋ฐ, ๊ฐ์ ์๊ธฐ ํจ์ฌ ์ ๋ช ํด์ง graphapi ์ ๋ณด๋ ธ์ถ(CVE-2023-49103)์ ๊ฐ๋ ค ์๋์ ์ผ๋ก ์กฐ์ฉํ ์ง๋๊ฐ ๊ฐ์ด ์์. ๊ทธ๋ฐ๋ฐ ๋ฐฉ์ด์ ์ ์ฅ์์ ๋ณด๋ฉด ์ด์ชฝ์ด ๋ ๊ณ ์ฝํจ. ์ค์ ํ์ผ ํ๋ ์ฝํ๋ ๊ฒ ์๋๋ผ, ๋จ์ ๊ณ์ ํ์ผ์ ์ฝ๊ณ ์ฐ๊ณ ์ง์ธ ์ ์๋ ๋ฌธ์ ์๊ธฐ ๋๋ฌธ์.
- ownCloud core์ WebDAV ์ ๊ทผ ๊ฒฝ๋ก์์, ์๋ช ๋ URL ๊ฒ์ฆ ๋ก์ง์ด "๋๊ฐ ์์ฒญํ๋๊ฐ"๋ฅผ ์ถฉ๋ถํ ๋ฌถ์ด๋์ง ๋ชปํด ์ธ์ฆ ์์ด ํ์ธ ํ์ผ์ ์ ๊ทผ ๊ฐ๋ฅํ๋ ๋ฌธ์ ์.
- ๊ณต๊ฒฉ์ ํน๋ณํ ๋๊ตฌ๊ฐ ํ์ ์์ — ํ๋ฒํ WebDAV ์์ฒญ ํํ๋ผ IDS ์๊ทธ๋์ฒ๋ณด๋ค ์น ์ ๊ทผ ๋ก๊ทธ์ ํจํด์ผ๋ก ์ก๋ ๊ฒ ํ์ค์ ์.
- ๋์์ core ์ ๋ฐ์ดํธ๊ฐ ์ ๋ต์ด๊ณ , ๊ทธ ์ ๊น์ง๋ ์๋ช URL ๊ธฐ๋ฅ ์ฐจ๋จ๊ณผ ๋ก๊ทธ ์๊ธ ์ ๊ฒ์ ๋ณํํด์ผ ํจ.
1. ๋ฌด์จ ์ผ์ด ์์๋
ownCloud๋ ์ค์นํ ํ์ผ ๋๊ธฐํ·๊ณต์ ํ๋ซํผ์. ์น UI ๋ค์์ ์ค์ ํ์ผ ์ ์ถ๋ ฅ์ ๋ด๋นํ๋ ๊ฑด ๋๋ถ๋ถ WebDAV ์๋ํฌ์ธํธ๊ณ , ๋ฐ์คํฌํฑ ํด๋ผ์ด์ธํธ๋ ๋ชจ๋ฐ์ผ ์ฑ๋ ๊ฒฐ๊ตญ ์ด ๊ฒฝ๋ก๋ก ๋ถ์. ๋ฌธ์ ๋ ์ด WebDAV ๊ฒฝ๋ก์ ๋ถ์ด ์๋ pre-signed URL ์ฒ๋ฆฌ ๋ก์ง์ด์์.
pre-signed URL์ ์๋ ์ข์ ์์ด๋์ด์. "์ด ์ฌ์ฉ์๊ฐ, ์ด ํ์ผ์, ์ด ์๊ฐ๊น์ง, ์ด ๋ฉ์๋๋ก" ์ ๊ทผํด๋ ๋๋ค๋ ๊ฑธ ์๋ฒ๊ฐ ์๋ช ํด๋๋ฉด, ๋งค๋ฒ ์ธ์ ์ ํ์ธํ์ง ์๊ณ ๋ ์ ๊ทผ ํ์ฉ ์ฌ๋ถ๋ฅผ ํ์ ํ ์ ์์. ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง๊ฐ ํํ ์ฐ๋ ๋ฐฉ์์ด๊ธฐ๋ ํจ. ๊ทธ๋ฐ๋ฐ ์๋ช ๊ฒ์ฆ์ด๋ผ๋ ๊ฒ "์๋ช ์ด ์ ํจํ๊ฐ"์ "์ด ์๋ช ์ด ์ง๊ธ ์ด ์์ฒญ์ ํด๋นํ๋๊ฐ"๋ ์์ ํ ๋ค๋ฅธ ์ง๋ฌธ์ด๊ณ , ํ์๋ฅผ ๋น ๋จ๋ฆฌ๋ฉด ์๋ช ์ ํตํ์ฆ์ด ์๋๋ผ ๋ง๋ฅํค๊ฐ ๋์ด๋ฒ๋ฆผ.
2. ์ทจ์ฝ์ ์ ์ฑ๊ฒฉ — ๊ฐ๋ ์์ค์ผ๋ก๋ง
์ด ์ฌ์์ ํต์ฌ์ ์์ฒญ์ ๋ด๊ธด ์ฌ์ฉ์ ์๋ณ์์, ์๋ช ์ ๋ง๋ค ๋ ์ฌ์ฉ๋ ๋น๋ฐ๊ฐ·๋์ ์ ๋ณด๊ฐ ์๋ก ๋จ๋จํ ๊ฒฐํฉ๋ผ ์์ง ์์๋ค๋ ์ ์. ๊ทธ๋์ ๋ค์ ์กฐ๊ฑด์ด ๊ฒน์น๋ฉด ์ธ์ฆ๋์ง ์์ ์์ฒญ์ด ํต๊ณผํ ์ฌ์ง๊ฐ ์๊น.
- ์๋ช ๊ฒ์ฆ์ ์ฐ์ด๋ ๋น๋ฐ๊ฐ์ด ์์ธก ๊ฐ๋ฅํ๊ฑฐ๋, ์ฌ์ฉ์๋ณ๋ก ๋ถ๋ฆฌ๋์ง ์์ ์ํ์ผ ๊ฒ
- URL์ ๋ค์ด๊ฐ ์ฌ์ฉ์ ์ง์ ๋ถ๋ถ์ ์๋ฒ๊ฐ ๊ทธ๋๋ก ์ ๋ขฐํ ๊ฒ
- ์๋ช ๋์ ๋ฌธ์์ด์ ์์ฒญ ์ฃผ์ฒด·์ ํจ๊ธฐ๊ฐ ๊ฐ์ ๊ฒฐ์ ์ ์์๊ฐ ๋น ์ ธ ์์ ๊ฒ
์ธ ๊ฐ์ง๊ฐ ๋ง์๋จ์ด์ง๋ฉด ๊ณต๊ฒฉ์๋ ์์ ์๊ฒ ์ ๋นํ๊ฒ ๋ฐ๊ธ๋ ํํ์ ์ ๊ทผ ์ ๋ณด๋ฅผ ๊ธฐ์ค ์ผ์, ๋์๋ง ๋ฐ๊ฟ์น๊ธฐํ ์์ฒญ์ ๋ง๋ค์ด ๋ณผ ์ ์์. ์ฌ๊ธฐ์ ๋ ๊ตฌ์ฒด์ ์ธ ์์ฒญ ๊ตฌ์ฑ์ด๋ ์๋ช ์์ฑ ์ ์ฐจ๋ฅผ ์ ์ ์๊ฐ์ ์์. ๋ฐฉ์ด์๊ฐ ์์์ผ ํ ๊ฑด "๋ฌด์์ ๋ง๋ค๋ฉด ๋ซ๋ฆฌ๋๊ฐ"๊ฐ ์๋๋ผ "๋ซ๋ ธ๋ค๋ฉด ๋ก๊ทธ์ ๋ฌด์์ด ๋จ๋๊ฐ"์ด๊ธฐ ๋๋ฌธ์.
์ํฅ ๋ฒ์๋ ์ง๊ณ ๊ฐ ํ์๊ฐ ์์. ์ด ๋ฌธ์ ๋ ์๋ช URL ๊ธฐ๋ฅ์ ์ค์ ๋ก ํ์ฑํํด ์ฐ๋ ํ๊ฒฝ์์ ์๋ฏธ๊ฐ ์์. ์ฆ "์ฐ๋ฆฌ๋ ownCloud ์ฐ๋๋ฐ?" ํ๊ณ ๋ฌด์์ ํจ๋ํ ์ผ์ ์๋๊ณ , ์ค์ ์ ๋จผ์ ํ์ธํ๋ ๊ฒ ์์์. ๋ค๋ง ํ์ธ ์ ๊น์ง๋ ๋ ธ์ถ๋๋ค๊ณ ๊ฐ์ ํ๊ณ ์์ง์ด๋ ํธ์ด ์์ ํจ.
3. ํ์ง — ๋ฌด์์ ์ด๋์ ๋ณผ ๊ฒ์ธ๊ฐ
์ด ์ ํ์ ์ต์คํ๋ก์ ํธ๋ํฝ์ด ์ ์ ํธ๋ํฝ๊ณผ ๊ฒ๋ชจ์ต์ด ๊ฑฐ์ ๊ฐ์. ๊ทธ๋์ ํ์ด๋ก๋ ์๊ทธ๋์ฒ๋ณด๋ค ๋งฅ๋ฝ ์ด์์ ๋ด์ผ ํจ. ์ค๋ฌด์์ ๋จผ์ ์ด์ด๋ณผ ๊ฒ๋ค์.
- ์น์๋ฒ ์ก์ธ์ค ๋ก๊ทธ:
/remote.php/dav/๊ณ์ด ๊ฒฝ๋ก์ ๋ํด, ์ธ์ ์ฟ ํค ์์ด ์ฟผ๋ฆฌ์คํธ๋ง์ ์๋ช ํ๋ผ๋ฏธํฐ๋ง ๋ฌ๊ณ ๋ค์ด์จ ์์ฒญ. ์ ์ ํด๋ผ์ด์ธํธ๋ ๋๊ฐ ์ธ์ฆ ํค๋๋ ์ฟ ํค๋ฅผ ๋๋ฐํจ. - User-Agent ์ด์: ownCloud ๋ฐ์คํฌํฑ/๋ชจ๋ฐ์ผ ํด๋ผ์ด์ธํธ UA๊ฐ ์๋ ์คํฌ๋ฆฝํธ์ฑ UA(curl, python-requests ๋ฑ)๊ฐ DAV ๊ฒฝ๋ก์ ๋ฐ๋ณต ์ ๊ทผํ ํ์ .
- ๊ณ์ -IP ์กฐํฉ: ํน์ ์ฌ์ฉ์ ๊ฒฝ๋ก์ ๋ํ ์ ๊ทผ์ด ๊ทธ ์ฌ์ฉ์๊ฐ ํ์ ์ฐ์ง ์๋ IP·ASN·๊ตญ๊ฐ์์ ๋ฐ์ํ๋์ง. ํ์ผ ๊ณต์ ์๋ฒ๋ ์ฌ์ฉ์๋ณ ์ ์ ์ง์ ์ด ์์ธ๋ก ์์ ์ ์ด๋ผ ์ด ์ ํธ๊ฐ ์ ๋จนํ.
- ๋ฉ์๋ ๋ถํฌ: ์งง์ ์๊ฐ์ PROPFIND๊ฐ ๋ชฐ๋ฆฐ ๋ค GET์ด ์ด์ด์ง๋ ํ๋ฆ. ๋ชฉ๋ก์ ํ๊ณ ์ํ๋ ํ์ผ์ ๊ณจ๋ผ ๋ฐ์๊ฐ ์ ํ์ ํํ์.
- ownCloud ์์ฒด ๋ก๊ทธ์ ํ์ผ ํ๋ ๊ธฐ๋ก: ์ญ์ ·์ด๋ ์ด๋ฒคํธ๊ฐ ํด๋น ์ฌ์ฉ์์ ์น ๋ก๊ทธ์ธ ๊ธฐ๋ก ์์ด ๋ฐ์ํ๋ค๋ฉด ๊ทธ ์์ฒด๊ฐ ๊ฐํ ์ ํธ์.
๊ฐ์ธ์ ์ผ๋ก๋ ๋ฆฌ๋ฒ์ค ํ๋ก์(nginx, Apache) ๋จ์ ๋ก๊ทธ๋ฅผ SIEM์ผ๋ก ๋๊ฒจ "์ธ์ฆ ํ์ ์๋ DAV ์์ฒญ ์ค 200/207 ์๋ต์ ๋ฐ์ ๊ฒ"๋ง ๋ฐ๋ก ๋ฝ์๋ณด๋ ์ฟผ๋ฆฌ๋ฅผ ํ๋ ๋ง๋ค์ด๋๊ธธ ์ถ์ฒํจ. ์ด ์ทจ์ฝ์ ๋ฟ ์๋๋ผ ์ดํ์ ๋์ฌ ์ ์ฌํ ์ธ์ฆ ์ฐํ์๋ ๊ณ์ ์ฌ์ฌ์ฉํ ์ ์๋ ์์ฐ์ด ๋จ.
4. ์ํ — ์์๋๋ก
ํจ์น๊ฐ ํญ์ ์ฒซ ๋ฒ์งธ์ง๋ง, ํ์ค์์ ํ์ผ ์๋ฒ๋ ๋ฐ๋ก ๋ชป ๋ด๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ ๋จ๊ณ๋ก ์ ๋ฆฌํจ.
- ์ ๋ฐ์ดํธ: ownCloud๊ฐ ์ ๊ณตํ๋ core ๋ณด์ ๋ฆด๋ฆฌ์ค๋ก ์ฌ๋ฆผ. ์ ๋์จ์ด ์๋๋ผ core ์ชฝ ์์ ์ด๋ผ ์ฑ ๋นํ์ฑํ๋ง์ผ๋ก ๋๋์ง ์์.
- ๊ธฐ๋ฅ ์ฐจ๋จ: ์ฆ์ ํจ์น๊ฐ ์ด๋ ต๋ค๋ฉด ์๋ช URL ๊ด๋ จ ๊ธฐ๋ฅ์ ์ค์ ์์ ๋. ๊ธฐ๋ฅ์ ์ค์ ๋ก ์ฐ๊ณ ์๋์ง๋ถํฐ ํ์ธํ๊ณ , ์ ์ฐ๊ณ ์์๋ค๋ฉด ๊ทธ๋๋ก ๊บผ๋ ์ฑ ์ ์งํ๋ ๊ฒ ๋ซ์.
- ์๋จ ์ฐจ๋จ: ํ๋ก์๋ WAF์์ ์ธ์ฆ ์ปจํ ์คํธ ์์ด ์๋ช ํ๋ผ๋ฏธํฐ๋ง ๋ฌ๊ณ ๋ค์ด์ค๋ DAV ์์ฒญ์ ์์๋ก ๊ฑฐ์ . ์ ์ ํด๋ผ์ด์ธํธ ๋์์ ๊นจ์ง ์๋์ง ์คํ ์ด์ง์์ ๋จผ์ ํ์ธํด์ผ ํจ.
- ๋ ธ์ถ๋ฉด ์ถ์: ๊ด๋ฆฌ ์ฝ์๊ณผ DAV ์๋ํฌ์ธํธ๋ฅผ ์ธํฐ๋ท ์ ๋ฉด์ ์ด์ด๋ ํ์๊ฐ ์๋์ง ์ฌ๊ฒํ . VPN ๋ค๋ก ๋ฃ๊ฑฐ๋ IP ํ์ฉ๋ชฉ๋ก์ ๊ฑฐ๋ ๊ฒ๋ง์ผ๋ก๋ ์๋น ๋ถ๋ถ์ด ์ ๋ฆฌ๋จ.
- ์ฌํ ์ ๊ฒ: ํจ์นํ๋ค๊ณ ๋์ด ์๋. ์ทจ์ฝํ๋ ๊ธฐ๊ฐ์ ๋ก๊ทธ๋ฅผ ์๊ธํด ์ ํ์ง ํญ๋ชฉ์ผ๋ก ํ๊ณ , ์ด์ ์ ๊ทผ์ด ์์๋ค๋ฉด ํด๋น ์ฌ์ฉ์ ์๊ฒฉ์ฆ๋ช ์ด๊ธฐํ์ ๊ณต์ ๋งํฌ ํ์๊น์ง ์ด์ด๊ฐ์ผ ํจ.
5. ์ด ์ฌ๊ฑด์์ ๋จ๋ ๊ตํ
์๋ช ๊ธฐ๋ฐ ์ธ๊ฐ๋ ํธํ์ง๋ง ์กฐ๊ฑด์ด ๊น๋ค๋ก์ด ์ค๊ณ์. ์๋ช ๋์ ๋ฌธ์์ด์ ์ฃผ์ฒด·๋์·ํ์·๋ง๋ฃ๊ฐ ์ ๋ถ ๋ค์ด๊ฐ์ผ ํ๊ณ , ๋น๋ฐ๊ฐ์ ์ถฉ๋ถํ ์์ธก ๋ถ๊ฐ๋ฅํด์ผ ํ๋ฉฐ, ๊ฒ์ฆํ ๋ ์ด๋ ํ๋๋ผ๋ ์๋ตํ๋ฉด ๊ทธ ์ฆ์ ๋ฌด๋์ง. ์ด๊ฑด ownCloud๋ง์ ์ด์ผ๊ธฐ๊ฐ ์๋๊ณ , ์ฌ๋ด์์ ์ง์ ๋ง๋ ๋ค์ด๋ก๋ ๋งํฌ๋ ๋ฆฌํฌํธ ๊ณต์ ๊ธฐ๋ฅ์๋ ๋๊ฐ์ด ์ ์ฉ๋๋ ์ฒดํฌ๋ฆฌ์คํธ์. ์์ฒด ๊ฐ๋ฐํ ์๋ช URL์ด ์๋ค๋ฉด ์ด๋ฒ ๊ธฐํ์ ํ ๋ฒ ์ด์ด๋ณด๋ ๊ฑธ ๊ถํจ.
๊ทธ๋ฆฌ๊ณ ํ๋ ๋. ๊ฐ์ ์๊ธฐ ownCloud์์ ๋์จ ๋ค๋ฅธ ์ทจ์ฝ์ ์ด ํจ์ฌ ํฌ๊ฒ ๋ณด๋๋๋ฉด์, ๊ด๋ฆฌ์๋ค์ด ๊ทธ์ชฝ๋ง ์ฒ๋ฆฌํ๊ณ ๋์ด๊ฐ ์ฌ๋ก๊ฐ ์ ์ง ์์์. ๊ถ๊ณ ๋ฌธ์ด ์ฌ๋ฌ ๊ฑด ๋์ฌ ๋๋ ๋ด์ค์ ๋ง์ด ๋์จ ๊ฒ ํ๋๊ฐ ์๋๋ผ ๋ชฉ๋ก ์ ์ฒด๋ฅผ ์ฒดํฌ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด ํ๋์ฉ ์ง์๊ฐ๋ ์ต๊ด์ด ํ์ํจ. ์ด๋ฐ ๊ฒ ์์ฌ์ ๋์ค์ ํฐ ์ฐจ์ด๋ฅผ ๋ง๋๋ ๊ฒ ๊ฐ๋ค.
ํน์ ownCloud๋ฅผ ์ด์ ์ค์ด๋ผ๋ฉด ์ค๋ ๋ก๊ทธ ํ ๋ฒ ์ด์ด๋ณด์๊ธธ. ์์ ์ ์ ์ฟผ๋ฆฌ ๋ง๋๋ ๊ณผ์ ์์ ๋งํ๋ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์, ๊ฐ์ด ํ์ด๋ณด์์!
# ๋๊ธ