๋ณต์กํ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ ๋ณด์์ ์ธ๊ณ๋ฅผ ํํํ์ธ์. ์์ ํ๊ณ ์ ๋ขฐํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ํด ํจํค์ง ์ทจ์ฝ์ ์ ํจ๊ณผ์ ์ผ๋ก ์๋ณ, ์ํ, ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ ์ํ๊ณ: ํจํค์ง ์ทจ์ฝ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ข ํฉ ๊ฐ์ด๋
ํ๊ธฐ์ฐจ๊ณ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ํ๊ฒฝ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ๋ ํ๋ ์น์ ์๋น ๋ถ๋ถ์ ๊ตฌ๋ํฉ๋๋ค. ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ๋ถํฐ ๋ณต์กํ ๊ธฐ์ ์ฉ ์๋ฃจ์ ์ ์ด๋ฅด๊ธฐ๊น์ง, ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ ์๋ง์ ํ์ ์ ์ธ ๋์งํธ ๊ฒฝํ์ ์๋๋ ฅ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ญ๋์ฑ์ ๋ณต์ก์ฑ์ ์ผ๊ธฐํ๋ฉฐ, ํนํ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์๊ณผ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ์ธก๋ฉด์ธ ํจํค์ง ์ทจ์ฝ์ ๊ด๋ฆฌ์์ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
ํจํค์ง ์ทจ์ฝ์ ์ ๋ฒ์ ์ดํดํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๋ ๊ธฐ๋ฅ ์ ๊ณต, ๊ฐ๋ฐ ๊ฐ์ํ ๋ฐ ๊ฐ๋ฐ ์๊ฐ ๋จ์ถ์ ์ํด ์๋ํํฐ ํจํค์ง, ์ฆ ์ข ์์ฑ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. npm(Node Package Manager) ๋ฐ yarn๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์์ ์ํด ๊ด๋ฆฌ๋๋ ์ด๋ฌํ ํจํค์ง๋ค์ ์ข ์ข ์คํ ์์ค์ด๋ฉฐ ์ ์ธ๊ณ์ ๋ค์ํ ์ปค๋ฎค๋ํฐ์ ์ํด ์ ์ง ๊ด๋ฆฌ๋ฉ๋๋ค. ์ด๋ฌํ ๊ฐ๋ฐฉ์ ์ธ ํน์ฑ์ ํ์ ์ ์ด์งํ๋ ๋์์ ๋ณด์ ์ํ์ ์ด๋ํฉ๋๋ค. ์ด๋ฌํ ์ข ์์ฑ์ ์ทจ์ฝ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ํ์ ๋ ธ์ถ์ํฌ ์ ์์ต๋๋ค:
- ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS): ๊ณต๊ฒฉ์๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณด๋ ์น ํ์ด์ง์ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฃผ์ ํฉ๋๋ค.
- ์๊ฒฉ ์ฝ๋ ์คํ(RCE): ๊ณต๊ฒฉ์๊ฐ ์๋ฒ์์ ์์์ ์ฝ๋๋ฅผ ์คํํ์ฌ ์์คํ ์ ์ฅ์ ํ ์ ์์ต๋๋ค.
- ์๋น์ค ๊ฑฐ๋ถ(DoS): ๊ณต๊ฒฉ์๊ฐ ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ์ฃผ์ด ํฉ๋ฒ์ ์ธ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
- ์ ๋ณด ์ ์ถ: ๊ณต๊ฒฉ์๊ฐ ์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช ์ด๋ ๊ฐ์ธ ์ ๋ณด์ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ ๊ทผํฉ๋๋ค.
์ด ๋ฌธ์ ์ ๊ท๋ชจ๋ ์๋นํฉ๋๋ค. npm๊ณผ yarn์๋ ์๋ฐฑ๋ง ๊ฐ์ ํจํค์ง๊ฐ ์์ผ๋ฉฐ ๋งค์ผ ์๋ก์ด ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋ฉ๋๋ค. ๋ค์ํ ์ง๋ฆฌ์ ์์น์ ๋น์ฆ๋์ค ๋ถ๋ฌธ์ ๊ฑธ์ณ ๋ชจ๋ ๊ท๋ชจ์ ๊ฐ๋ฐ์์ ์กฐ์ง์๊ฒ ์ ๋ณด๋ฅผ ํ์ ํ๊ณ ์ ์ ์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ทจ์ฝ์ ๊ด๋ฆฌ์ ํต์ฌ ๊ฐ๋
ํจ๊ณผ์ ์ธ ์ทจ์ฝ์ ๊ด๋ฆฌ๋ ์ฌ๋ฌ ํต์ฌ ๊ฐ๋ ์ ํฌํจํ๋ ๋ค๊ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ํ์๋ก ํฉ๋๋ค:
1. ์ข ์์ฑ ๋ถ์
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ํ๋ก์ ํธ๊ฐ ์ฌ์ฉํ๋ ์ข
์์ฑ์ ์ดํดํ๋ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์๋ ๋ชจ๋ ์ง์ ๋ฐ ์ ์ด์ ์ข
์์ฑ(์ข
์์ฑ์ ์ข
์์ฑ)์ ์๋ณํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค. npm ๋ฐ yarn๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์๋ ์ด๋ฌํ ์ข
์์ฑ์ ๋์ดํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ข
์ข
ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ํ๋ก์ ํธ์ package.json
ํ์ผ์ ์ด๋ฌํ ์ข
์์ฑ์ ๊ด๋ฆฌํ๋ ์ค์ ์ ์ฅ์์
๋๋ค. ์ด ํ์ผ์ ๊ฒํ ํ๋ ๊ฒ์ ํ์์ ์
๋๋ค. ์ข
์์ฑ ๋ถ์์ ์ํ ๋๊ตฌ์ ๊ธฐ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- npm ๋๋ yarn ๋ช
๋ น์ด ์ฌ์ฉ:
npm list
๋๋yarn list
๋ ์์ธํ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค. - ์ข ์์ฑ ๊ทธ๋ํ ์๊ฐํ: `depcheck`์ ๊ฐ์ ๋๊ตฌ๋ ์ข ์์ฑ ํธ๋ฆฌ๋ฅผ ์๊ฐํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์ ๋ฌธ ๋ณด์ ๋๊ตฌ: Snyk, Sonatype Nexus Lifecycle, WhiteSource(ํ Mend)์ ๊ฐ์ ๋๊ตฌ๋ ํฌ๊ด์ ์ธ ์ข ์์ฑ ๋ถ์, ์ทจ์ฝ์ ์ค์บ ๋ฐ ํด๊ฒฐ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํฉ๋๋ค.
2. ์ทจ์ฝ์ ์ค์บ
์ทจ์ฝ์ ์ค์บ๋๋ NVD(National Vulnerability Database) ๋ฐ CVE(Common Vulnerabilities and Exposures) ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์๋ ค์ง ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ก์ ํธ์ ์ข ์์ฑ์ ์๋์ผ๋ก ๋ถ์ํฉ๋๋ค. ์ทจ์ฝํ ํจํค์ง๋ฅผ ์๋ณํ๊ณ ์ทจ์ฝ์ ์ ์ฌ๊ฐ๋ ๋ฐ ์ ์ฌ์ ํด๊ฒฐ ์ ๋ต์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ๋ฌ ์ค์บ ๋๊ตฌ๊ฐ ์กด์ฌํ๋ฉฐ, ์ง์์ ์ธ ๋ณด์ ๋ชจ๋ํฐ๋ง์ ์ํด ์ข ์ข CI/CD(์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ) ํ์ดํ๋ผ์ธ์ ํตํฉ๋ฉ๋๋ค:
- npm audit: npm ํ๋ก์ ํธ๋ฅผ ์ํ ๋ด์ฅ ์ทจ์ฝ์ ์ค์บ๋์
๋๋ค.
npm audit
์ ์คํํ์ฌ ์ทจ์ฝ์ ์ ํ์ธํ๊ณ ์ผ๋ถ ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ์์ ํ ์ ์์ต๋๋ค. - Snyk: ๋ค์ํ ํ๋ซํผ๊ณผ ํตํฉ๋๊ณ ์์ธํ ์ทจ์ฝ์ ๋ณด๊ณ ์, ์์ ๊ถ์ฅ ์ฌํญ ๋ฐ ์๋ ์์ (์ข ์ข ํ ๋ฆฌํ์คํธ๋ฅผ ํตํด)์ ์ ๊ณตํ๋ ์ธ๊ธฐ ์๋ ์์ฉ ๋๊ตฌ์ ๋๋ค.
- SonarQube: ์ทจ์ฝ์ ํ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ฝ๋ ํ์ง ๋ฐ ๋ณด์ ๋ถ์์ ์ํ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋ซํผ์ ๋๋ค.
- OWASP Dependency-Check: ํ๋ก์ ํธ ์ข ์์ฑ์ ์๋ณํ๊ณ ๊ณต๊ฐ์ ์ผ๋ก ์๋ ค์ง ์ทจ์ฝ์ ์ ํ์ธํ๋ ์คํ ์์ค ๋๊ตฌ์ ๋๋ค.
3. ์ฐ์ ์์ ์ง์ ๋ฐ ์ํ ํ๊ฐ
๋ชจ๋ ์ทจ์ฝ์ ์ด ๋์ผํ ์ํ์ ์ด๋ํ๋ ๊ฒ์ ์๋๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ทจ์ฝ์ ์ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ์ฌ๊ฐ๋: ์ทจ์ฝ์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ฐ๋(์: ์น๋ช ์ , ๋์, ์ค๊ฐ, ๋ฎ์)์ ๋ฐ๋ผ ๋ถ๋ฅ๋ฉ๋๋ค. CVSS(Common Vulnerability Scoring System)๋ ํ์คํ๋ ์ ์ ์์คํ ์ ์ ๊ณตํฉ๋๋ค.
- ์ ์ฉ ๊ฐ๋ฅ์ฑ: ์ทจ์ฝ์ ์ด ์ผ๋ง๋ ์ฝ๊ฒ ์ ์ฉ๋ ์ ์๋๊ฐ?
- ์ํฅ: ์ฑ๊ณต์ ์ธ ์ ์ฉ์ ์ ์ฌ์ ์ํฅ์ ๋ฌด์์ธ๊ฐ? (์: ๋ฐ์ดํฐ ์ ์ถ, ์์คํ ์์)
- ์ํฅ๋ฐ๋ ๊ตฌ์ฑ ์์: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ ๋ถ๋ถ์ด ์ํฅ์ ๋ฐ๋๊ฐ?
- ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ์ฌํญ: ํจ์น๋ ์ ๋ฐ์ดํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฐ?
์ํ ํ๊ฐ๋ ์ด๋ค ์ทจ์ฝ์ ์ ์ฆ๊ฐ์ ์ธ ์ฃผ์๊ฐ ํ์ํ์ง ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํต์ฌ ๊ตฌ์ฑ ์์์ ์ํฅ์ ๋ฏธ์น๋ ์น๋ช ์ ๋ฐ ๋์ ์ฌ๊ฐ๋์ ์ทจ์ฝ์ ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ ์์๊ฐ ๋์ต๋๋ค. ๋ฎ์ ์ฌ๊ฐ๋์ ์ทจ์ฝ์ ์ ๋์ค์ ํด๊ฒฐํ๊ฑฐ๋ ๋ค๋ฅธ ๋ณด์ ์กฐ์น๋ฅผ ํตํด ์ํํ ์ ์์ต๋๋ค.
4. ํด๊ฒฐ
ํด๊ฒฐ์ ์๋ณ๋ ์ทจ์ฝ์ ์ ์์ ํ๊ฑฐ๋ ์ํํ๋ ๊ณผ์ ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ํด๊ฒฐ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ข
์์ฑ ์
๋ฐ์ดํธ: ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ทจ์ฝํ ํจํค์ง๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ๋ ๊ฒ์
๋๋ค. ํจํค์ง ๊ด๋ฆฌ์๋ ์ด ๊ณผ์ ์ ๋จ์ํํ๋ฉฐ, ์ข
์ข
๋จ์ผ ๋ช
๋ น์ด(์:
npm update
๋๋yarn upgrade
)๋ก ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์๊ฒ ํด์ค๋๋ค. - ํจ์น ์ ์ฉ: ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒฝ์ฐ, ์ทจ์ฝํ ์ฝ๋๋ฅผ ํจ์นํ๋ ๊ฒ์ด ์ต์ ์ด ๋ ์ ์์ต๋๋ค. ์ด๋ ํจํค์ง ์ ์ง ๊ด๋ฆฌ์๊ฐ ์ ๊ณตํ๋ ๋ณด์ ํจ์น๋ฅผ ์ ์ฉํ๊ฑฐ๋ ์ฌ์ฉ์ ์ง์ ํจ์น๋ฅผ ๋ง๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
- ์ข
์์ฑ ๊ณ ์ : ์ข
์์ฑ์ ํน์ ๋ฒ์ ์ผ๋ก ๊ณ ์ ํ๋ฉด ์๊ธฐ์น ์์ ์
๋ฐ์ดํธ๋ก ์ธํ ์๋ก์ด ์ทจ์ฝ์ ๋์
์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ด๋
package.json
์ ์ ํํ ๋ฒ์ ๋ฒํธ๋ฅผ ์ง์ ํ์ฌ ๋ฌ์ฑ๋ฉ๋๋ค. - ์ทจ์ฝ์ ์ํ: ์ ๋ฐ์ดํธ๋ ํจ์น๊ฐ ์ฆ์ ๊ฐ๋ฅํ์ง ์์ ๊ฒฝ์ฐ, ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ, ์ถ๋ ฅ ์ธ์ฝ๋ฉ ๋ฐ ์ ๊ทผ ์ ์ด์ ๊ฐ์ ๋ค๋ฅธ ๋ณด์ ์กฐ์น๋ฅผ ํตํด ์ทจ์ฝ์ ์ ์ํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ฏธ์ฌ์ฉ ์ข ์์ฑ ์ ๊ฑฐ: ๊ณต๊ฒฉ ํ๋ฉด์ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉํ์ง ์๋ ์ข ์์ฑ์ ์ ๊ฑฐํ์ญ์์ค.
5. ๋ชจ๋ํฐ๋ง ๋ฐ ์ง์์ ์ธ ๊ฐ์
์ทจ์ฝ์ ๊ด๋ฆฌ๋ ์ง์์ ์ธ ๊ณผ์ ์ ๋๋ค. ์ข ์์ฑ์ ์ ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ์๊ธฐ์ ์ ํ๊ฒ ํจ์นํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค์ ๊ดํ์ ๋ณด์ ํ์ธ๋ฅผ ๊ฐ์ ํ ๊ฒ์ ๋๋ค:
- ์๋ ์ค์บ: CI/CD ํ์ดํ๋ผ์ธ์ ์ทจ์ฝ์ ์ค์บ์ ํตํฉํ์ฌ ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ ์๋์ผ๋ก ์ทจ์ฝ์ ์ ํ์ธํฉ๋๋ค.
- ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฐ์ฌ: ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฐ์ฌ๋ฅผ ์ค์ํ์ฌ ์๋ ์ค์บ์ผ๋ก ๋์น ์ ์๋ ์ทจ์ฝ์ ์ ์๋ณํ๊ณ ํด๊ฒฐํฉ๋๋ค.
- ์ ๋ณด ์ ์ง: ๋ณด์ ๊ฒฝ๊ณ ๋ฐ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ฅผ ๊ตฌ๋ ํ์ฌ ์๋ก์ด ์ทจ์ฝ์ ๋ฐ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ต๋๋ค. ์๋ฅผ ๋ค์ด npm ๋ณด์ ๊ถ๊ณ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๊ฐ ์์ต๋๋ค.
- ๋ณด์ ๊ต์ก: ๊ฐ๋ฐํ์ ๋ณด์ ๊ต์ก์ ์ ๊ณตํ์ฌ ๋ณด์ ์ํ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ธ์์ ๋์ ๋๋ค.
- ์์ ํ ์ํํธ์จ์ด ๊ณต๊ธ๋ง ์ ์ง: ๋ค์ด๋ก๋ํ ํจํค์ง์ ๋ฌด๊ฒฐ์ฑ ํ์ธ ๋ฐ ์๋ช ๋ ํจํค์ง ์ฌ์ฉ๊ณผ ๊ฐ์ ๊ณต๊ธ๋ง ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ตฌํํฉ๋๋ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
ํจํค์ง ์ทจ์ฝ์ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์์ ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์์ : npm์ผ๋ก ์ข ์์ฑ ์ ๋ฐ์ดํธํ๊ธฐ
1. npm audit
์คํ: ์ด ๋ช
๋ น์ด๋ ํ๋ก์ ํธ์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ์ค์บํฉ๋๋ค. ๋ฐ๊ฒฌ๋ ์ทจ์ฝ์ ์ ์ฌ๊ฐ๋ ๋ฐ ์ ์๋ ์์ ์ฌํญ์ ํฌํจํ ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
2. ๋ณด๊ณ ์ ๋ถ์: npm audit
๋ณด๊ณ ์๋ฅผ ์ ์คํ๊ฒ ๊ฒํ ํฉ๋๋ค. ์ทจ์ฝ์ ์ ์๋ณํ๊ณ ์ฌ๊ฐ๋ ๋ฐ ์ํฅ์ ๋ฐ๋ผ ์ฐ์ ์์๋ฅผ ์ ํฉ๋๋ค.
3. ์ทจ์ฝํ ํจํค์ง ์ ๋ฐ์ดํธ:
* ์๋ ์์ ๊ฐ๋ฅํ ๋ฌธ์ : npm audit fix
๋ ํจํค์ง๋ฅผ ์ต์ ํธํ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ์ฌ ์ทจ์ฝ์ ์ ์๋์ผ๋ก ์์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ด๋ ๋ง์ ์ผ๋ฐ์ ์ธ ์ทจ์ฝ์ ์ ๋ํ ๋น ๋ฅด๊ณ ์ฌ์ด ํด๊ฒฐ์ฑ
์
๋๋ค. ์ด๋ก ์ธํด ์ผ๋ถ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ์ ์์์ ์ธ์งํด์ผ ํฉ๋๋ค.
* ์๋์ผ๋ก ํจํค์ง ์
๋ฐ์ดํธ: ๋ ๋ณต์กํ ๊ฒฝ์ฐ, npm update [package-name]
์ ์ฌ์ฉํ์ฌ ์ทจ์ฝํ ํจํค์ง๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์๋ ์
๋ฐ์ดํธํฉ๋๋ค. ์ด ๋ช
๋ น์ด๋ ์ง์ ๋ ํจํค์ง๋ฅผ package.json
ํ์ผ์ ๋ฒ์ ์๊ตฌ ์ฌํญ๊ณผ ํธํ๋๋ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํฉ๋๋ค. ์ข
์์ฑ์ ์
๋ฐ์ดํธํ ํ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํ
์คํธํ ์ค๋น๋ฅผ ํด์ผ ํฉ๋๋ค.
* ๋ชจ๋ ์ข
์์ฑ ์
๋ฐ์ดํธ: npm update
๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ํจํค์ง๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ์ง๋ง, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ํ์ด ๋ ๋์ ์์
์
๋๋ค. ์ถฉ๋์ ํ์ธํ๊ณ ์์ฃผ ํ
์คํธํ๋ฉด์ ์ ์ง์ ์ผ๋ก ์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
4. ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ: ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ ํ, ์ ๋ฐ์ดํธ๊ฐ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๊ฑฐ๋ ๊ธฐ๋ฅ์ ์์์ํค์ง ์์๋์ง ํ์ธํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ ์ ํ ํ ์คํธํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ ๋ฐ ์ฌ์ฉ์ ์์ฉ ํ ์คํธ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
5. ๋ณ๊ฒฝ ์ฌํญ ์ปค๋ฐ: package.json
๋ฐ package-lock.json
ํ์ผ(๋๋ yarn.lock
)์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฒ์ ์ ์ด์ ์ปค๋ฐํฉ๋๋ค.
์์ : ์ข ์์ฑ ๊ณ ์
์ข ์์ฑ ๊ณ ์ ์ ์๊ธฐ์น ์์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐฉ์งํ๊ณ ๋ค๋ฅธ ํ๊ฒฝ ๊ฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ข ์์ฑ์ ๋ํ ์ ํํ ๋ฒ์ ๋ฒํธ๋ฅผ ์ง์ ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
๋ค์ ๋์ :
"express": "^4.17.0"
๋ค์์ ์ฌ์ฉ:
"express": "4.17.1"
์ด๋ ๊ฒ ํ๋ฉด express
ํจํค์ง๊ฐ ํญ์ 4.17.1 ๋ฒ์ ์ผ๋ก ์ ์ง๋์ด ์ทจ์ฝ์ ์ ๋์
ํ ์ ์๋ ์ต์ ๋ฒ์ ์ผ๋ก์ ์ฐ๋ฐ์ ์ธ ์
๋ฐ์ดํธ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. ๊ณ ์ ์ ํนํ ํ๋ก๋์
ํ๊ฒฝ์์ ์ฐ๋ฐ์ ์ธ ์
๋ฐ์ดํธ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ณ ์ ๋ ๋ฒ์ ์ ์ ๊ธฐ์ ์ผ๋ก ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ณด์ ์์ ์ฌํญ์ด ํ๋ก๋์
์ธ์คํด์ค์ ๋๋ฌํ์ง ๋ชปํ ๊ฒ์
๋๋ค.
์์ : ์๋ํ๋ ์ทจ์ฝ์ ๊ด๋ฆฌ๋ฅผ ์ํ Snyk ํ์ฉ
Snyk(๋๋ ์ ์ฌํ ์์ฉ ๋๊ตฌ)๋ ์ทจ์ฝ์ ๊ด๋ฆฌ์ ๋ํ ๊ฐ์ํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค:
1. ํ๋ก์ ํธ ์ฐ๊ฒฐ: ์์ค ์ฝ๋ ์ ์ฅ์(์: GitHub, GitLab, Bitbucket)์ ์ฐ๊ฒฐํ์ฌ Snyk๋ฅผ ํ๋ก์ ํธ์ ํตํฉํฉ๋๋ค.
2. ์๋ ์ค์บ: Snyk๋ ํ๋ก์ ํธ์ ์ทจ์ฝ์ ์ ์๋์ผ๋ก ์ค์บํ๊ณ ์ทจ์ฝํ ํจํค์ง๋ฅผ ์๋ณํฉ๋๋ค.
3. ์ทจ์ฝ์ ๋ณด๊ณ ์: Snyk๋ ์ทจ์ฝ์ , ์ฌ๊ฐ๋ ๋ฐ ์ ์ฌ์ ํด๊ฒฐ ์ ๋ต์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ ์์ธํ ์ทจ์ฝ์ ๋ณด๊ณ ์๋ฅผ ์์ฑํฉ๋๋ค. Snyk๋ ์ข ์ข ์ง์ ์ ์ธ ์ ๊ทธ๋ ์ด๋ ๊ฒฝ๋ก๋ฅผ ํฌํจํฉ๋๋ค.
4. ์๋ ์์ : Snyk๋ ๋ง์ ์ทจ์ฝ์ ์ ๋ํด ์๋ ์์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ฅผ ๋ณํฉํ์ฌ ์ทจ์ฝํ ํจํค์ง๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ด๋ ํด๊ฒฐ ๊ณผ์ ์ ์๋นํ ๊ฐ์ํํฉ๋๋ค.
5. ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง: Snyk๋ ํ๋ก์ ํธ๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ์๋ก์ด ์ทจ์ฝ์ ์ ๊ฐ์ํ๊ณ ์๋ก์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋ ๋๋ค.
๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ด๋ฌํ ๊ดํ์ ๊ตฌํํ๋ฉด ์กฐ์ง์ ๋ณด์ ํ์ธ๊ฐ ํฅ์๋ฉ๋๋ค:
- ์ ๊ธฐ์ ์ธ ์ข ์์ฑ ์ ๋ฐ์ดํธ: ์ข ์์ฑ์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ๋ณด์ ํจ์น๋ฅผ ์ ์ํ๊ฒ ํด๊ฒฐํ๊ธฐ ์ํ ์ ๊ธฐ์ ์ธ ์ผ์ ์ ์๋ฆฝํฉ๋๋ค. Dependabot(GitHub์ ์ผ๋ถ) ๋๋ Renovate์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ข ์์ฑ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ณด์ ๊ฐ์ฌ: ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ผ๋ถ๋ก ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฐ์ฌ๋ฅผ ํฌํจํฉ๋๋ค.
- ์ ์ ์ฝ๋ ๋ถ์: ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋์์ ์ทจ์ฝ์ , ๋ณด์ ๊ฒฐํจ ๋ฐ ์ฝ๋ ํ์ง ๋ฌธ์ ๋ฅผ ์ค์บํฉ๋๋ค.
- ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์ถ๋ ฅ ์ธ์ฝ๋ฉ: ํญ์ ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ฒ์ฆํ๊ณ ์ถ๋ ฅ์ ์ธ์ฝ๋ฉํ์ฌ XSS ๋ฐ SQL ์ธ์ ์ ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์น ๋ณด์ ์ทจ์ฝ์ ์ ๋ฐฉ์งํฉ๋๋ค.
- ์ต์ ๊ถํ ์์น: ์ฌ์ฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ํ์ ํ์ํ ๊ถํ๋ง ๋ถ์ฌํฉ๋๋ค.
- ์์ ํ ๊ตฌ์ฑ: ์น ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ํ๊ฒฝ์ ์์ ํ๊ฒ ๊ตฌ์ฑํฉ๋๋ค.
- ์์ ํ ๊ฐ๋ฐ ๊ดํ: ๊ฐ๋ฐ์์๊ฒ ์์ ํ ์ฝ๋ฉ ๊ดํ๊ณผ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํด ๊ต์กํฉ๋๋ค. ๊ฐ๋ฐ ์ ๋ณด์ ์ฐ์ ์ฌ๊ณ ๋ฐฉ์์ ์ฑํํฉ๋๋ค.
- ๋ณด์ ์ค์ฌ์ CI/CD ์ฌ์ฉ: CI/CD ์์คํ ์ ํ๋ก์ธ์ค ์ ๋ฐ์ ๊ฑธ์ณ ๋ณด์ ์ค์บ์ ํฌํจํด์ผ ํฉ๋๋ค.
- ๋ฌธ์ํ: ๋ชจ๋ ๋ณด์ ๊ดํ๊ณผ ์ ์ฑ ์ ๋ฌธ์ํํฉ๋๋ค.
- ์ฌ๊ณ ๋์ ๊ณํ: ๋ณด์ ์นจํด๋ ์ทจ์ฝ์ ์ด ๋ฐ์ํ์ ๋ ๋์ฒํ ์ ์๋ ์ฌ๊ณ ๋์ ๊ณํ์ ์ค๋นํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ๋๊ตฌ์ ๊ธฐ์ ์ ํํ๊ธฐ
์ทจ์ฝ์ ๊ด๋ฆฌ๋ฅผ ์ํ ๋๊ตฌ์ ๊ธฐ์ ์ ์ ํ์ ํ๋ก์ ํธ์ ๊ท๋ชจ, ์ข ์์ฑ์ ๋ณต์ก์ฑ, ํ์ ์ ๋ฌธ ์ง์ ๋ฑ ์ฌ๋ฌ ์์ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
- npm audit: npm ํด์ฒด์ธ์ ๋ด์ฅ๋์ด ์์ด npm ํ๋ก์ ํธ๋ฅผ ์ํ ์ข์ ์ถ๋ฐ์ ์ ๋๋ค.
- Snyk: ๊ฐ๋ ฅํ ์๋ํ ๋ฐ ๋ณด๊ณ ๊ธฐ๋ฅ์ ๊ฐ์ถ ํฌ๊ด์ ์ธ ํ๋ซํผ์ ๋๋ค. npm, yarn ๋ฐ ๊ธฐํ ํจํค์ง ๊ด๋ฆฌ์๋ฟ๋ง ์๋๋ผ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํ๋ฏ๋ก ์ฌ๋ฌ ์ธ์ด์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ํ์ฌ์ ํนํ ์ ํฉํฉ๋๋ค.
- SonarQube: ์ฝ๋ ํ์ง ๋ฐ ๋ณด์ ๋ถ์์ ์ํ ํฌ๊ด์ ์ธ ๋๊ตฌ์ ๋๋ค.
- OWASP Dependency-Check: ์ข์ ์คํ ์์ค ์ต์ ์ ๋๋ค.
- ํจํค์ง ๊ด๋ฆฌ์: npm ๋๋ yarn์์ ์ฌ์ฉํ ์ ์๋ ๋ค์ดํฐ๋ธ ๋ณด์ ๋๊ตฌ๋ฅผ ํ์ฉํฉ๋๋ค.
๋๊ตฌ๋ฅผ ์ ํํ ๋ ๋ค์ ์์๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ์ฌ์ฉ ํธ์์ฑ: ๋๊ตฌ๋ ํตํฉํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์์ผ ํฉ๋๋ค.
- ์๋ํ ๊ธฐ๋ฅ: ์ค์บ, ์์ ๋ฐ ๋ชจ๋ํฐ๋ง๊ณผ ๊ฐ์ ์์ ์ ์๋ํํ๋ ๋๊ตฌ๋ฅผ ์ฐพ์ผ์ญ์์ค.
- ๋ณด๊ณ ๋ฐ ๋ถ์: ๋๊ตฌ๋ ์คํ ๊ฐ๋ฅํ ๊ถ์ฅ ์ฌํญ์ด ํฌํจ๋ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- ํตํฉ: ๋๊ตฌ๋ ๊ธฐ์กด ๊ฐ๋ฐ ์ํฌํ๋ก ๋ฐ CI/CD ํ์ดํ๋ผ์ธ๊ณผ ์ํํ๊ฒ ํตํฉ๋์ด์ผ ํฉ๋๋ค.
- ๋น์ฉ: ๋๊ตฌ์ ๋น์ฉ๊ณผ ๋ผ์ด์ ์ค ์ต์ ์ ๊ณ ๋ คํ์ญ์์ค. ์คํ ์์ค ๋๊ตฌ๋ ์๊ท๋ชจ ํ์๊ฒ ํ๋ฅญํ ์ต์ ์ ๋๋ค.
์ ์ ์ ์ ๊ทผ์ ์ค์์ฑ
ํจํค์ง ์ทจ์ฝ์ ๊ด๋ฆฌ๋ ์ผํ์ฑ ์์ ์ด ์๋๋ผ ์ง์์ ์ธ ๊ณผ์ ์ ๋๋ค. ์ ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ํ์ ์ํํ๊ณ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์งํ๋ ๋ฐ ํต์ฌ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ์ฌํํธ ๋ ํํธ(Shift Left): ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ(SDLC)์ ์ด๊ธฐ ๋จ๊ณ์ ๋ณด์์ ํตํฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์ ํ ์ค๊ณ, ์์ ํ ์ฝ๋ฉ, ๊ฐ๋ฐ ์ค ๋ณด์ ํ ์คํธ๊ฐ ํฌํจ๋ฉ๋๋ค.
- ์ ๋ณด ์ ์ง: ์ต์ ๋ณด์ ์ํ, ์ทจ์ฝ์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ํ์ ํฉ๋๋ค. ๋ณด์ ๋ธ๋ก๊ทธ๋ฅผ ํ๋ก์ฐํ๊ณ , ๋ณด์ ๋ด์ค๋ ํฐ๋ฅผ ๊ตฌ๋ ํ๊ณ , ์ ๊ณ ํ์ฌ์ ์ฐธ์ฌํฉ๋๋ค.
- ๋ณด์ ๋ฌธํ ์กฐ์ฑ: ๊ฐ๋ฐํ๊ณผ ์กฐ์ง ๋ด์์ ๋ณด์์ ์์ํ๋ ๋ฌธํ๋ฅผ ์ฅ๋ คํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋ณด์์ ์ฐ์ ์ํ๊ณ ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ ๋ณด๊ณ ํ๋๋ก ์ฅ๋ คํฉ๋๋ค.
- ์ ๊ธฐ์ ์ธ ๊ต์ก: ๊ฐ๋ฐํ์ ์ง์์ ์ธ ๋ณด์ ๊ต์ก์ ์ ๊ณตํ์ฌ ์ง์๊ณผ ๊ธฐ์ ์ ์ต์ ์ํ๋ก ์ ์งํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์ ํ ์ฝ๋ฉ ๊ดํ, ์ทจ์ฝ์ ๋ถ์ ๋ฐ ์ฌ๊ณ ๋์์ ๋ํ ๊ณผ์ ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ดํ์ ๊ตฌํํจ์ผ๋ก์จ ์กฐ์ง์ ๋ณด์ ์นจํด ์ํ์ ํฌ๊ฒ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌ์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
ํจํค์ง ์ทจ์ฝ์ ๊ด๋ฆฌ๋ ํ๋ ์น ๊ฐ๋ฐ์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ๊ฐ ์๋ํํฐ ํจํค์ง์ ์์กดํ๋ ๊ฒ์ ์์ฒญ๋ ๊ธฐํ์ ์๋นํ ๋ณด์ ๊ณผ์ ๋ฅผ ๋์์ ์ ์ํฉ๋๋ค. ๋ฌธ์ ์ ๋ฒ์๋ฅผ ์ดํดํ๊ณ , ๊ฐ๋ ฅํ ์ทจ์ฝ์ ๊ด๋ฆฌ ๊ดํ์ ๊ตฌํํ๊ณ , ์ ์ ํ ๋๊ตฌ๋ฅผ ํ์ฉํ๊ณ , ์ ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์๊ณผ ์ ๋ขฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ ์ธ๊ณ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ๋ ๊ฒฝ๊ณ๋ฅผ ๋ฆ์ถ์ง ์๊ณ , ์ง์์ ๊ณต์ ํ๋ฉฐ, ๋์์์ด ์งํํ๋ ์ํ ํ๊ฒฝ์ผ๋ก๋ถํฐ ์น์ ๋ณดํธํ๊ธฐ ์ํด ํ๋ ฅํด์ผ ํฉ๋๋ค. ์ง์์ ์ธ ํ์ต, ์ ์, ๊ทธ๋ฆฌ๊ณ ๋ณด์์ ๋ํ ํ์ ์ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์์ ํ๊ณ ์ ๋ขฐํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค.