<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Project/Open-Cve-Scanner on 코딩이 싫은 거북이</title><link>https://rebugui.github.io/tags/project/open-cve-scanner/</link><description>Recent content in Project/Open-Cve-Scanner on 코딩이 싫은 거북이</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Thu, 04 Jun 2026 21:48:48 +0900</lastBuildDate><atom:link href="https://rebugui.github.io/tags/project/open-cve-scanner/index.xml" rel="self" type="application/rss+xml"/><item><title>[Open Source] NVD·OSV·GitHub Advisory 통합 오픈소스 취약점 스캐너 (open-cve-scanner)</title><link>https://rebugui.github.io/open-source-nvdosvgithub-advisory-%ED%86%B5%ED%95%A9-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EC%B7%A8%EC%95%BD%EC%A0%90-%EC%8A%A4%EC%BA%90%EB%84%88-open-cve-scanner/</link><pubDate>Thu, 04 Jun 2026 21:48:48 +0900</pubDate><guid>https://rebugui.github.io/open-source-nvdosvgithub-advisory-%ED%86%B5%ED%95%A9-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EC%B7%A8%EC%95%BD%EC%A0%90-%EC%8A%A4%EC%BA%90%EB%84%88-open-cve-scanner/</guid><description>&lt;h2 id="-개요"&gt;📋 개요
&lt;/h2&gt;&lt;p&gt;의존성에 숨은 알려진 취약점(CVE)을 빠르게 찾아내기 위해 만든 오픈소스 도구 &lt;strong&gt;open-cve-scanner&lt;/strong&gt;를 소개합니다. 단일 패키지부터 프로젝트 전체 의존성 파일까지, &lt;strong&gt;NVD(NIST)·OSV.dev(Google)·GitHub Advisory&lt;/strong&gt; 세 곳의 취약점 데이터를 한 번에 조회해 보안 리포트를 생성하는 Python CLI입니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;GitHub 저장소:&lt;/strong&gt; &lt;a class="link" href="https://github.com/rebugui/open-cve-scanner" target="_blank" rel="noopener"
 &gt;https://github.com/rebugui/open-cve-scanner&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="-제작-배경"&gt;🎯 제작 배경
&lt;/h2&gt;&lt;p&gt;취약점 점검을 할 때마다 NVD, OSV, GitHub Advisory를 따로 검색하고 버전을 비교하는 일은 번거롭고 누락이 생기기 쉽습니다. 세 소스를 통합 조회하고, 의존성 파일을 파싱해 한 번에 감사하며, 결과를 다양한 형식으로 떨어뜨려 &lt;strong&gt;CI/CD 파이프라인에 그대로 물릴 수 있는&lt;/strong&gt; 도구가 필요했습니다.&lt;/p&gt;
&lt;h2 id="-핵심-기능"&gt;🏗️ 핵심 기능
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;3개 CVE 데이터 소스 통합&lt;/strong&gt; — NVD(미국 국가 취약점 DB), OSV.dev(오픈소스 전용), GitHub Advisory&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8개 패키지 생태계 지원&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;생태계&lt;/th&gt;
					&lt;th&gt;의존성 파일&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;npm (Node.js)&lt;/td&gt;
					&lt;td&gt;package.json / package-lock.json&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;PyPI (Python)&lt;/td&gt;
					&lt;td&gt;requirements.txt / Pipfile.lock&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Maven (Java)&lt;/td&gt;
					&lt;td&gt;pom.xml / build.gradle&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Go&lt;/td&gt;
					&lt;td&gt;go.mod / go.sum&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;crates.io (Rust)&lt;/td&gt;
					&lt;td&gt;Cargo.lock&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Packagist (PHP)&lt;/td&gt;
					&lt;td&gt;composer.lock&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RubyGems (Ruby)&lt;/td&gt;
					&lt;td&gt;Gemfile.lock&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;NuGet (.NET)&lt;/td&gt;
					&lt;td&gt;(패키지명·버전 직접 지정)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;다양한 출력 형식&lt;/strong&gt;: Markdown · Excel · CSV · JSON · SARIF &lt;strong&gt;심각도 필터·캐싱·Rate Limit 대응&lt;/strong&gt;: &lt;code&gt;--severity&lt;/code&gt;로 CRITICAL/HIGH만 추리고, 동일 세션 캐싱과 API 키(NVD·GitHub)로 조회 제한을 완화합니다.&lt;/p&gt;
&lt;h2 id="-cicd-정책-모드"&gt;🚦 CI/CD 정책 모드
&lt;/h2&gt;&lt;p&gt;빌드 게이트로 쓰도록 설계했습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--output sarif&lt;/code&gt; : GitHub code scanning 등 SARIF 소비 도구 연동&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--fail-on HIGH&lt;/code&gt; : HIGH 이상 취약점이 남으면 종료 코드 2로 빌드 실패&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ignore-file .cveignore&lt;/code&gt; : 오탐/예외 항목 억제 (&lt;code&gt;package:ID&lt;/code&gt; 형식 지원)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-라이선스"&gt;⚖️ 라이선스
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;MIT License&lt;/strong&gt; — 자유롭게 사용·수정·배포할 수 있습니다.&lt;/p&gt;
&lt;h2 id="-주의사항"&gt;⚠️ 주의사항
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;NVD·GitHub API는 Rate Limit이 있어 대량 스캔 시 API 키 사용을 권장합니다.&lt;/li&gt;
&lt;li&gt;생태계 자동 감지가 실패하면 &lt;code&gt;--ecosystem&lt;/code&gt; 옵션으로 직접 지정하세요.&lt;/li&gt;
&lt;li&gt;버전 비교는 SemVer 기준이며, 커스텀 버전 체계는 결과가 부정확할 수 있습니다. 인터넷 연결이 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-실행-방법"&gt;🚀 실행 방법
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 설치&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 단일 패키지 스캔&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./cve-scanner &lt;span class="s2"&gt;&amp;#34;log4j-core&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2.14.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 의존성 파일 스캔 (엑셀 출력)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./cve-scanner --file requirements.txt --output excel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CI: HIGH 이상이면 빌드 실패&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./cve-scanner --file package.json --fail-on HIGH
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="-피드백"&gt;💬 피드백
&lt;/h2&gt;&lt;p&gt;버그 리포트·기능 제안·풀 리퀘스트를 환영합니다. &lt;strong&gt;&lt;a class="link" href="https://github.com/rebugui/open-cve-scanner/issues" target="_blank" rel="noopener"
 &gt;GitHub Issues&lt;/a&gt;&lt;/strong&gt; 로 남겨 주세요.&lt;/p&gt;</description></item></channel></rss>