SCA์™€ Trivy๋กœ ์‚ดํŽด๋ณด๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ณด์•ˆ ์ทจ์•ฝ์  ๊ด€๋ฆฌ

SCA์™€ Trivy๋กœ ์‚ดํŽด๋ณด๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ณด์•ˆ ์ทจ์•ฝ์  ๊ด€๋ฆฌ

Feb 9, 2025

๊น€ํ˜„๊ธฐ

#ETC

๋“ค์–ด๊ฐ€๋ฉฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” SCA๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์™œ ํ•„์š”ํ•œ์ง€, ๊ทธ๋ฆฌ๊ณ  ๋Œ€ํ‘œ์ ์ธ SCA ๋„๊ตฌ์ธ Trivy๋ฅผ ํ™œ์šฉํ•ด ์˜คํ”ˆ์†Œ์Šค ๋ณด์•ˆ์„ ์–ด๋–ป๊ฒŒ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SCA๋ž€ ๋ฌด์—‡์ธ๊ฐ€

SCA(Software Composition Analysis)๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ถ„์„ํ•˜์—ฌ ์‚ฌ์šฉ๋œ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ณด์•ˆ ๊ฒฐํ•จ์ด ์žˆ๋Š”์ง€ ๋˜๋Š” ๋ผ์ด์„ ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด ๊ธฐ์ˆ  ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ๋ถ„์•ผ์˜ ๊ด€ํ–‰์ž…๋‹ˆ๋‹ค. - ์œ„ํ‚คํ”ผ๋””์•„

์™œ SCA๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ SCA๊ฐ€ ํ•„์š”ํ• ๊นŒ์š”?

Synopsys์˜ 2024 OSSRA ๋ณด๊ณ ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ์˜คํ”ˆ์†Œ์Šค ์‚ฌ์šฉ ์ฆ๊ฐ€

ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ์˜คํ”ˆ์†Œ์Šค์— ๋Œ€ํ•œ ์˜์กด๋„๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ถ„์„๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ 96%๊ฐ€ ์˜คํ”ˆ์†Œ์Šค ํฌํ•จ
  • ์ „์ฒด ์ฝ”๋“œ์˜ 77%๊ฐ€ ์˜คํ”ˆ์†Œ์Šค์—์„œ ์œ ๋ž˜
  • ํ‰๊ท ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— 500๊ฐœ ์ด์ƒ์˜ ์˜คํ”ˆ์†Œ์Šค ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‚ฌ์šฉ

2. ์˜คํ”ˆ์†Œ์Šค์˜ ๋ณด์•ˆ๊ณผ ๋ผ์ด์„ ์Šค

ํ˜„๋Œ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜คํ”ˆ์†Œ์Šค ์‚ฌ์šฉ ์ฆ๊ฐ€๋กœ ์ธํ•ด ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์œ„ํ—˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ ์œ„ํ—˜:

  • 84%์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ ์•Œ๋ ค์ง„ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ
  • 91%์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ 2๋…„ ์ด์ƒ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์€ ์ƒํƒœ
  • ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์–ด๋„ ์ฆ‰๊ฐ์ ์ธ ๋Œ€์‘์ด ์–ด๋ ค์›€

๋ผ์ด์„ ์Šค ์œ„ํ—˜:

  • GPL, MIT, Apache ๋“ฑ ๋‹ค์–‘ํ•œ ๋ผ์ด์„ ์Šค ์กด์žฌ
  • ๋ผ์ด์„ ์Šค ์กฐ๊ฑด ์œ„๋ฐ˜ ์‹œ ๋ฒ•์  ๋ถ„์Ÿ ๊ฐ€๋Šฅ์„ฑ
  • ์ƒ์šฉ ์ œํ’ˆ์— ๋ถ€์ ํ•ฉํ•œ ๋ผ์ด์„ ์Šค ์‚ฌ์šฉ ์œ„ํ—˜

์ด๋Ÿฌํ•œ ์œ„ํ—˜๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ง€์†์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์ˆ˜์ ์ด๊ณ , SCA๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

SCA๋Š” ์–ด๋–ป๊ฒŒ ๋ถ„์„ํ• ๊นŒ?

Trivy๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ณด์•ˆ ์ทจ์•ฝ์  ์Šค์บ๋„ˆ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์˜คํ”ˆ์†Œ์Šค ์ปดํฌ๋„ŒํŠธ์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ถ„์„ํ•˜๊ณ  ๋ผ์ด์„ ์Šค๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Codacy ๋ธ”๋กœ๊ทธ ์—์„œ ์„ค๋ช…ํ•˜๋Š” SCA๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํ•จ๊ป˜ Trivy์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ฉด SCA ๊ด€๋ฆฌ ์„œ๋น„์Šค๋“ค์ด ์–ด๋–ป๊ฒŒ ์˜คํ”ˆ์†Œ์Šค์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ถ„์„ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

Codacy๋Š” SCA ๋ถ„์„์— Trivy๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Trivy๋Š” OS, ์–ธ์–ด๋ณ„ ํŒจํ‚ค์ง€๋ฅผ ๋ถ„์„ํ•˜๋Š”๋ฐ node.js์˜ package.json, yarn.lock, pnpm-lock.json๋„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ํŒจํ‚ค์ง€ ๋ณด์•ˆ์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ถ„์„๋œ ๊ฒฐ๊ณผ๋ฌผ(SBOM)์„ ๊ฐ€์ง€๊ณ  Trivy๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ๊ตฌ์„ฑํ•œ ๋ณด์•ˆ DB์˜ ๋ฐ์ดํ„ฐ์™€ ๋น„๊ต ํ›„ ๊ฒฐ๊ณผ๋ฌผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

trivy-db

trivy-db์— ์Œ“์ด๋Š” ์ทจ์•ฝ์  ์ •๋ณด๋Š” Github Security Advisory, GoSec, RubySec, Red Hat, Debian ๋“ฑ ์—ฌ๋Ÿฌ ์ถœ์ฒ˜์—์„œ ์ˆ˜์ง‘๋œ CVE ์ •๋ณด์ž…๋‹ˆ๋‹ค. trivy-db๋ฅผ ๋‹ค์šด๋ฐ›์•„ ๋กœ์ปฌ์—์„œ ๋‚ด์šฉ์„ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

trivy-db๋Š” boltadb ํ˜•ํƒœ๋กœ ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ํ›„ ๋‚ด์šฉ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

trivy-db-1

๋ณด์•ˆ ์ทจ์•ฝ์  ๋ถ„๋ฅ˜ ์ฒด๊ณ„ ์ดํ•ดํ•˜๊ธฐ

trivy-db์— ์Œ“์ด๋Š” ์ •๋ณด๋ฅผ ํ•˜๋‚˜ ํ™•์ธํ•ด๋ณผ๊นŒ์š”? npm์œผ๋กœ ๊ฐ€์‹œ๋ฉด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์—ฌ์žˆ๊ณ , ์ด ์ค‘์— @babel/traverse๋ฅผ ํ•˜๋‚˜ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

trivy-db-1

๋‹ด๊ฒจ์žˆ๋Š” ์ •๋ณด์ค‘์— Key๋ฅผ ๋ณด์‹œ๋ฉด CVE-2023-45133์ด๋ผ๋Š” ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์•„๋ž˜ ๊ฐ’ ์ค‘์— VendorIDs๋ผ๋Š” ํ‚ค๊ฐ€ ๋ณด์ด์‹œ๋‚˜์š”? ์ด ๊ฐ’์€ GHSA-5rrq-pxf6-6jx5 ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ณด์•ˆ ์ฝ”๋“œ ํƒœ๊ทธ์ด๊ณ  ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ ํƒœ๊ทธ ์–‘์‹์ด ๊ฐ๊ฐ ๋‹ค๋ฅด์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์•ž๋ถ€๋ถ„์—๋Š” ํ•ด๋‹น ๋ณด์•ˆ ์‹๋ณ„์ž๋ฅผ ๋ฐœ๊ธ‰ํ•œ ๊ธฐ๊ด€์˜ ์ ‘๋‘์‚ฌ ์‹๋ณ„์ž๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ฐ„๋žตํžˆ ์•„๋ž˜ 3๊ฐœ๋งŒ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. CVE (Common Vulnerabilities and Exposures): ๋ฏธ๊ตญ์˜ MITRE Corporation์—์„œ ๊ด€๋ฆฌํ•จ
  • MITRE๊ฐ€ ๋งŒ๋“  ํ†ต์ผ๋œ ํ‘œ์ค€ ๊ทœ์•ฝ
  • ์„ธ๋ถ€์ •๋ณด๋Š” NVD, Github ๋“ฑ๊ณผ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ํ˜‘์—…์ฒด์—์„œ ์ˆ˜์ง‘
  • What is a CVE?
  1. GHSA (GitHub Security Advisory): Github์—์„œ ๊ด€๋ฆฌ, Github์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ์˜คํ”ˆ์†Œ์Šค์— ๋ถ™๋Š” ํƒœ๊ทธ
  2. NSWG: Node.js ๋ณด์•ˆ ์ปค๋ฎค๋‹ˆํ‹ฐ

์ด๋ ‡๊ฒŒ ๊ฐ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๊ด€๋ฆฌํ•˜๋Š” ํƒœ๊ทธ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์—ฌ์žˆ๋Š”๊ฒƒ์ด trivy-db์ž…๋‹ˆ๋‹ค.

dependabot

trivy-db์—์„œ ์•„๊นŒ ์‚ดํŽด๋ณธ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋“ค์€ Github Adivisory์—์„œ ์ˆ˜์ง‘ํ•˜๋ฏ€๋กœ dependabot๊ณผ ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋žตํ•˜๊ฒŒ ํ•˜๋‚˜๋งŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. merge-deep์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ Prototype pollution in Merge-deep ์ด๋ผ๋Š” dependabot ์•Œ๋ฆผ์ด ์™”์Šต๋‹ˆ๋‹ค.

dependabot

trivy-db์—๋„ ๊ฐ™์€ ์ •๋ณด๊ฐ€ ์žˆ๋Š”์ง€ ํ•œ๋ฒˆ ์ฐพ์•„๋ณผ๊นŒ์š”?

triby-db-3

๋™์ผํ•œ CVE, GHSA ์•„์ด๋””๊ฐ€ ํ™•์ธ๋˜๋„ค์š”.

๊ทธ๋ฆฌ๊ณ  github dependabot ์ด๋ฏธ์ง€ ์˜ค๋ฅธ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์— Weaknesses๋ฅผ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด CWE-1321๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CWE

CWECommon Weakness Enumeration๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ณด์•ˆ ์ทจ์•ฝ์ ์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. MITRE์—์„œ ๊ด€๋ฆฌํ•˜๋ฉฐ ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•˜๋“œ์›จ์–ด์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์„ค๋ช…์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, CWE-1321(JavaSCript Prototype Pollution)์™€ ๊ฐ™์ด ์ทจ์•ฝ์  ์œ ํ˜•์„ ์ •์˜ํ•˜๊ณ  ์ด ์ทจ์•ฝ์  ์œ ํ˜•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด, ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์ณ CVE-2021-26707์ด๋ผ๋Š” ๋ณด์•ˆ ์ฝ”๋“œ๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์น˜๋ฉฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” SCA(Software Composition Analysis)๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  trivy-db๋ฅผ ํ†ตํ•ด SCA ๋„๊ตฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€, ๋˜ํ•œ ๋ณด์•ˆ ํƒœ๊ทธ(CVE, GHSA, CWE ๋“ฑ)์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ์ฃผ๋กœ npm ํŒจํ‚ค์ง€๋“ค์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Dependabot, Trivy, Snyk ๋“ฑ์˜ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๊ฐ์ง€ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Github์—์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ์„œ๋น„์Šค๋ผ๋ฉด Github์˜ Dependabot์„ ํ™œ์šฉํ•œ ์—…๋ฐ์ดํŠธ๋งŒ์œผ๋กœ๋„ ๊ธฐ๋ณธ์ ์ธ SCA ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

Grow & Glow ยฉ 2025

Banner images by undraw.co