JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฌ ์๋๋ฅผ ๋์ด๊ณ CDN ์๋ฒ์์ ์์ ์ฝ๋ ์คํ์ ํ์ฉํ๋๋ก ์ค๊ณ๋ Cloudflare์ cdnjs ์ฝํ ์ธ ์ ๋ฌ ๋คํธ์ํฌ์์ ์ฌ๊ฐํ ์ทจ์ฝ์ ์ด ํ์ธ๋์์ต๋๋ค. ์ธํฐ๋ท์ ์ ์ฒด ์ฌ์ดํธ ์ค ์ฝ 12.7%๊ฐ ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ธํ๋ผ๊ฐ ์์๋๋ฉด ์ด๋ฌํ ์ฌ์ดํธ์์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ต์ฒดํ ์ ์๋ค๋ ์ฌ์ค๋ก ์ธํด ๋ฌธ์ ์ ์ํ์ด ๋์ฑ ๊ฐ์ค๋ฉ๋๋ค.
cdnjs ์๋น์ค๋ Git ๋๋ NPM ์ ์ฅ์์์ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ ํ ๋ชจ๋ ์ฌ์ดํธ์์ Cloudflare ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ๋ฅผ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ์ฌ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ก๋ ์๋๋ฅผ ๋์ผ ์ ์๋๋ก ํ์ฉํฉ๋๋ค. GitHub์ ๊ฒ์๋ cdnjs ๊ตฌ์ฑ ์์์ ์ฝ๋๋ฅผ ์ฐ๊ตฌํ ๋ tgz ์์นด์ด๋ธ์์ NPM ํจํค์ง์ ์์ถ์ ํ๊ธฐ ์ํด Go ์ธ์ด์ ํ์ค ์์นด์ด๋ธ/tar ๋ชจ๋์ด ์ฌ์ฉ๋๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด๋ ๊ฒฝ๋ก๋ฅผ ์ ๊ทํํ์ง ์๊ณ ํ์ผ ๋ชฉ๋ก์ ์๋ ๊ทธ๋๋ก ์์ฑํฉ๋๋ค. . ์คํฌ๋ฆฝํธ๊ฐ ์ฃผ์ด์ง ๋ชฉ๋ก์ ๊ธฐ๋ฐ์ผ๋ก ์ฝํ ์ธ ์ ์์ถ์ ํ ๋ "../../../../../../../tmp/test"์ ๊ฐ์ ํ์ผ ์์นด์ด๋ธ์ ์กด์ฌํ๋ฉด ์ก์ธ์ค ๊ถํ์ด ํ์ฉํ๋ ํ ์์คํ ์ ์์ ํ์ผ์ ๋ฎ์ด์ฐ๊ฒ ๋ฉ๋๋ค.
๊ณต๊ฒฉ์๊ฐ ์์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ cdnjs์ ์ถ๊ฐํ๊ณ NPM ์ ์ฅ์ ๊ฒฝ๋ก์ "../" ๋ฌธ์๊ฐ ํฌํจ๋ ํ์ผ์ด ํฌํจ๋ ํน๋ณํ ์ค๊ณ๋ ์์นด์ด๋ธ๋ฅผ ์ ๋ก๋ํ๋๋ก ์ ์ฒญํ ์ ์๋ค๋ ์ ์์ด ์์์ต๋๋ค. cdnjs ์๋ฒ์์๋ "์๋ ์ ๋ฐ์ดํธ" ์์ ์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์ํ๋๋ฉฐ, ์ด ๋์ ํธ๋ค๋ฌ๋ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฒ์ ์ ๋ค์ด๋ก๋ํ๊ณ ์ฝํ ์ธ ์ ์์ถ์ ํ๋๋ค. ๊ณต๊ฒฉ์๋ ๊ฒฝ๋ก๊ฐ "../"์ธ ํ์ผ์ ์ฌ์ฉํ์ฌ ์๋น์ค ์คํฌ๋ฆฝํธ๋ก ํ์ผ์ ๋ฎ์ด์ฐ๊ณ ์์ถ ํ๊ธฐ๊ฐ ์ํ๋ ์๋ฒ์์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
Git์์ ์ ๋ฐ์ดํธ๋ฅผ ๋ค์ด๋ก๋ํ๋ ๊ฒฝ์ฐ, ์ ๋ฐ์ดํธ๋ฅผ ๋ค์ด๋ก๋ํ๋ ํธ๋ค๋ฌ๊ฐ Git์์ ํ์ผ์ ๋ณต์ฌํ ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ณ ๋ คํ์ง ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด Git์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ถ๊ฐํ์ฌ ์๋ฒ์์ ๋ชจ๋ ํ์ผ ์ฝ๊ธฐ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
HackerOne์์ ํ์ผ ์ฝ๊ธฐ์ ๊ดํ ๊ฐ์ค์ ํ ์คํธํ์ฌ ์์ ๋ฐ๊ธฐ ์ํด cdnjs ํดํน ์์ฐ์ผ๋ก ์คํ์ ์์ํ๊ธฐ๋ก ๊ฒฐ์ ๋์์ต๋๋ค. /proc/self/maps ํ์ผ์ ๊ฐ๋ฆฌํค๋ ๊ธฐํธ ๋งํฌ test.js๊ฐ CDN์ ํตํด ์ ๊ณต๋๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Git ์ ์ฅ์์ ์ถ๊ฐ๋์์ต๋๋ค. ์ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํ ํ ์ ๋ฐ์ดํธ ํธ๋ค๋ฌ๊ฐ ์ด ์ ์ฅ์๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ง์ ๋ ํ์ผ์ cdnjs์ ๊ฒ์ํ์ต๋๋ค(test.js๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ก ์์ฑ๋์์ผ๋ฉฐ ์ด ํ์ผ์ ์์ฒญํ๋ฉด /proc/self/maps์ ๋ด์ฉ์ด ๋ฐํ๋จ). ).
/proc/self/environ ํ์ผ์ ๋ํ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋์ฒดํ์ฌ ์ฐ๊ตฌ ์์ฑ์๋ ์ฃผ์ด์ง ๋ฐ์ดํฐ์ ํ๊ฒฝ ๋ณ์ GITHUB_REPO_API_KEY ๋ฐ WORKERS_KV_API_TOKEN์ ๊ฐ์ด ํฌํจ๋์ด ์์์ ํ์ธํ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋ณ์๋ GitHub์ robocdnjs ์ ์ฅ์์ ๋ํ ์ฐ๊ธฐ ์ก์ธ์ค๋ฅผ ์ํ API ํค๋ฅผ ์ ์ฅํ์ต๋๋ค. ๋ ๋ฒ์งธ ๋ณ์๋ ํ ํฐ์ cdnjs์ KV ์ ์ฅ์์ ์ ์ฅํ์ต๋๋ค. ๊ณต๊ฒฉ์๋ ๋ฐ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ cdnjs๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ธํ๋ผ๋ฅผ ์์ ํ ์์์ํฌ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru