๐ ๊ฐ์
์์กด์ฑ์ ์จ์ ์๋ ค์ง ์ทจ์ฝ์ (CVE)์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๊ธฐ ์ํด ๋ง๋ ์คํ์์ค ๋๊ตฌ open-cve-scanner๋ฅผ ์๊ฐํฉ๋๋ค. ๋จ์ผ ํจํค์ง๋ถํฐ ํ๋ก์ ํธ ์ ์ฒด ์์กด์ฑ ํ์ผ๊น์ง, NVD(NIST)ยทOSV.dev(Google)ยทGitHub Advisory ์ธ ๊ณณ์ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์กฐํํด ๋ณด์ ๋ฆฌํฌํธ๋ฅผ ์์ฑํ๋ Python CLI์ ๋๋ค.
GitHub ์ ์ฅ์: https://github.com/rebugui/open-cve-scanner
๐ฏ ์ ์ ๋ฐฐ๊ฒฝ
์ทจ์ฝ์ ์ ๊ฒ์ ํ ๋๋ง๋ค NVD, OSV, GitHub Advisory๋ฅผ ๋ฐ๋ก ๊ฒ์ํ๊ณ ๋ฒ์ ์ ๋น๊ตํ๋ ์ผ์ ๋ฒ๊ฑฐ๋กญ๊ณ ๋๋ฝ์ด ์๊ธฐ๊ธฐ ์ฝ์ต๋๋ค. ์ธ ์์ค๋ฅผ ํตํฉ ์กฐํํ๊ณ , ์์กด์ฑ ํ์ผ์ ํ์ฑํด ํ ๋ฒ์ ๊ฐ์ฌํ๋ฉฐ, ๊ฒฐ๊ณผ๋ฅผ ๋ค์ํ ํ์์ผ๋ก ๋จ์ด๋จ๋ ค CI/CD ํ์ดํ๋ผ์ธ์ ๊ทธ๋๋ก ๋ฌผ๋ฆด ์ ์๋ ๋๊ตฌ๊ฐ ํ์ํ์ต๋๋ค.
๐๏ธ ํต์ฌ ๊ธฐ๋ฅ
3๊ฐ CVE ๋ฐ์ดํฐ ์์ค ํตํฉ โ NVD(๋ฏธ๊ตญ ๊ตญ๊ฐ ์ทจ์ฝ์ DB), OSV.dev(์คํ์์ค ์ ์ฉ), GitHub Advisory
8๊ฐ ํจํค์ง ์ํ๊ณ ์ง์
| ์ํ๊ณ | ์์กด์ฑ ํ์ผ |
|---|---|
| npm (Node.js) | package.json / package-lock.json |
| PyPI (Python) | requirements.txt / Pipfile.lock |
| Maven (Java) | pom.xml / build.gradle |
| Go | go.mod / go.sum |
| crates.io (Rust) | Cargo.lock |
| Packagist (PHP) | composer.lock |
| RubyGems (Ruby) | Gemfile.lock |
| NuGet (.NET) | (ํจํค์ง๋ช ยท๋ฒ์ ์ง์ ์ง์ ) |
๋ค์ํ ์ถ๋ ฅ ํ์: Markdown ยท Excel ยท CSV ยท JSON ยท SARIF ์ฌ๊ฐ๋ ํํฐยท์บ์ฑยทRate Limit ๋์: --severity๋ก CRITICAL/HIGH๋ง ์ถ๋ฆฌ๊ณ , ๋์ผ ์ธ์
์บ์ฑ๊ณผ API ํค(NVDยทGitHub)๋ก ์กฐํ ์ ํ์ ์ํํฉ๋๋ค.
๐ฆ CI/CD ์ ์ฑ ๋ชจ๋
๋น๋ ๊ฒ์ดํธ๋ก ์ฐ๋๋ก ์ค๊ณํ์ต๋๋ค.
--output sarif: GitHub code scanning ๋ฑ SARIF ์๋น ๋๊ตฌ ์ฐ๋--fail-on HIGH: HIGH ์ด์ ์ทจ์ฝ์ ์ด ๋จ์ผ๋ฉด ์ข ๋ฃ ์ฝ๋ 2๋ก ๋น๋ ์คํจ--ignore-file .cveignore: ์คํ/์์ธ ํญ๋ชฉ ์ต์ (package:IDํ์ ์ง์)
โ๏ธ ๋ผ์ด์ ์ค
MIT License โ ์์ ๋กญ๊ฒ ์ฌ์ฉยท์์ ยท๋ฐฐํฌํ ์ ์์ต๋๋ค.
โ ๏ธ ์ฃผ์์ฌํญ
- NVDยทGitHub API๋ Rate Limit์ด ์์ด ๋๋ ์ค์บ ์ API ํค ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
- ์ํ๊ณ ์๋ ๊ฐ์ง๊ฐ ์คํจํ๋ฉด
--ecosystem์ต์ ์ผ๋ก ์ง์ ์ง์ ํ์ธ์. - ๋ฒ์ ๋น๊ต๋ SemVer ๊ธฐ์ค์ด๋ฉฐ, ์ปค์คํ ๋ฒ์ ์ฒด๊ณ๋ ๊ฒฐ๊ณผ๊ฐ ๋ถ์ ํํ ์ ์์ต๋๋ค. ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ํ์ํฉ๋๋ค.
๐ ์คํ ๋ฐฉ๋ฒ
| |
๐ฌ ํผ๋๋ฐฑ
๋ฒ๊ทธ ๋ฆฌํฌํธยท๊ธฐ๋ฅ ์ ์ยทํ ๋ฆฌํ์คํธ๋ฅผ ํ์ํฉ๋๋ค. GitHub Issues ๋ก ๋จ๊ฒจ ์ฃผ์ธ์.