GitHub๋Š” ์ฝ”๋“œ์˜ ์ทจ์•ฝ์ ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๊ณ„ ํ•™์Šต ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

GitHub๋Š” ์ฝ”๋“œ์˜ ์ผ๋ฐ˜์ ์ธ ์œ ํ˜•์˜ ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค์— ์‹คํ—˜์ ์ธ ๊ธฐ๊ณ„ ํ•™์Šต ์‹œ์Šคํ…œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ํ˜„์žฌ JavaScript ๋ฐ TypeScript ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จธ์‹ ๋Ÿฌ๋‹ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ๋” ์ด์ƒ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ํ™•์ธ์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ  ์ž˜ ์•Œ๋ ค์ง„ ํ”„๋ ˆ์ž„์›Œํฌ์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ๋ถ„์„ํ•  ๋•Œ ์‹๋ณ„๋œ ๋ฌธ์ œ์˜ ๋ฒ”์œ„๊ฐ€ ํฌ๊ฒŒ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ์—์„œ ํ™•์ธ๋œ ๋ฌธ์ œ ์ค‘์—๋Š” XSS(๊ต์ฐจ ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…), ํŒŒ์ผ ๊ฒฝ๋กœ ์™œ๊ณก(์˜ˆ: "/.." ํ‘œ์‹œ๋ฅผ ํ†ตํ•ด), SQL ๋ฐ NoSQL ์ฟผ๋ฆฌ ๋Œ€์ฒด๋กœ ์ด์–ด์ง€๋Š” ์˜ค๋ฅ˜๊ฐ€ ์–ธ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์Šค์บ” ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ๊ฐ "git push" ์ž‘์—…์„ ์Šค์บ”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ํ’€ ์š”์ฒญ์— ์ง์ ‘ ์ฒจ๋ถ€๋ฉ๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ์ทจ์•ฝํ•œ ์ฝ”๋“œ์˜ ์ผ๋ฐ˜์ ์ธ ์˜ˆ๊ฐ€ ํฌํ•จ๋œ ํ…œํ”Œ๋ฆฟ์„ ๋ถ„์„ํ•˜๋Š” CodeQL ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์‚ฌ๊ฐ€ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค(CodeQL์„ ์‚ฌ์šฉํ•˜๋ฉด ์ทจ์•ฝํ•œ ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ์„ ์ƒ์„ฑํ•˜์—ฌ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ์—์„œ ์œ ์‚ฌํ•œ ์ทจ์•ฝ์„ฑ์˜ ์กด์žฌ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๋จธ์‹ ๋Ÿฌ๋‹์„ ํ™œ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์—”์ง„์€ ํŠน์ • ์ทจ์•ฝ์ ์„ ์„ค๋ช…ํ•˜๋Š” ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐ ์–ฝ๋งค์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์— ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์˜ ๋น„์šฉ์€ CodeQL ๊ธฐ๋ฐ˜ ๊ฒ€์‚ฌ์— ๋น„ํ•ด ์˜คํƒ์ง€ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€