SCA 도구 선택 가이드: 스니펫 수준 vs 매니페스트 수준 탐지의 본질적 차이
시장의 SCA 도구들은 서류상 비슷해 보인다. 컴포넌트 식별, 취약점 매칭, 라이선스 분석, SBOM 출력. 그러나 탐지 원리로 나누면 사실상 서로 다른 종이다. 매니페스트 수준은 package.json, pom.xml, lockfile 같은 선언 파일을 해석해 무엇을 쓰는지 추정한다. 스니펫 수준은 소스 코드 자체를 방대한 오픈소스 코드 지문과 대조해 실제로 무엇을 쓰는지 검증한다.
매니페스트 수준의 다섯 가지 사각지대
- 복사-붙여넣기: Stack Overflow나 저장소에서 가져온 수십 줄은 어떤 매니페스트에도 나타나지 않지만 라이선스 의무와 취약점은 함께 들어온다.
- 개명과 부분 재사용: 프로젝트를 포크해 패키지명을 바꾸거나 선택한 파일만
vendor/에 넣으면——매니페스트는 깨끗한 채 법적 리스크는 고스란히 남는다. - 정적 링크와 사전 빌드 산출물: 특히 C/C++에서는 의존성이 바이너리에 바로 컴파일돼 매니페스트에 흔적을 남기지 않는다.
- 빌드 시점 주입: CI 스크립트가 동적으로 끌어오는 코드는 의존성 선언을 완전히 우회한다.
- 전이 의존성 왜곡: lockfile이 없거나 낡으면 추정된 트리는 실제 출하물과 크게 어긋날 수 있다.
스니펫 수준의 기술 장벽
스니펫 수준 탐지는 알고리즘 선택이라기보다 데이터 엔지니어링의 성과다. 검출률은 지문 코퍼스가 오픈소스 세계를 얼마나 커버하느냐에, 정밀도는 매처가 '공통 기원'과 '우연한 유사'를 구별할 수 있느냐에 달려 있다. Sectrend CleanSource SCA의 경우 특허받은 스니펫 엔진 뒤에 3T+ 코드 지문, 3.2억 컴포넌트, 27만+ 취약점 인텔리전스가 있다. 코퍼스 규모가 '찾아내느냐 마느냐'를 직접 결정한다. 무료 도구가 거의 예외 없이 매니페스트 수준에 머무는 이유도 여기 있다. 데이터 해자는 쉽게 쌓이지 않는다.
매니페스트 수준으로 충분할 때, 스니펫 수준이 필수일 때
모든 의존성이 패키지 매니저를 거치고 엔지니어링 규율이 강하며 목적이 일상적 취약점 알림이라면, 매니페스트 수준——예컨대 무료 CleanSource SCA 커뮤니티 에디션——은 훌륭한 출발점이다. 그러나 다음 시나리오에서는 스니펫 수준이 필수다. 대외 납품과 검수(증언하는 것은 매니페스트가 아니라 코드다), M&A·투자 실사(대상 기업의 신고야말로 가장 신뢰할 수 없는 입력이다), 컴플라이언스 감사와 수출 인증(CRA와 차량 규제는 실제 구성을 반영한 SBOM을 요구한다), 그리고 정적 링크와 vendored 코드로 가득한 임베디드·레거시 시스템. 소스조차 구할 수 없다면 바이너리 성분 분석이 바통을 이어받는다.
오탐 역시 비용이다
그물을 넓히는 것의 이면은 진짜 재사용과 우연한 유사의 판별이다. 평가 시 두 가지를 확인하라. 파일 전체 일치·대형 조각 일치·산발적 유사에 서로 다른 가중치를 주는 신뢰도 등급 체계가 있는가, 그리고 원시 매칭 1만 건을 엔지니어에게 쏟아붓는 대신 컴포넌트 단위로 집계하는 효율적 리뷰 워크플로가 있는가. 검출률 만점에 오탐 관리 빵점인 도구는 실제 팀에서 한 분기도 못 버틴다.
실제 감사 사례
한 데이터 플랫폼 프로젝트의 납품 감사에서 우리는 소스 트리 전체가 Apache-2.0 오픈소스 프로젝트에서 복사됐고 모든 라이선스 헤더가 조직적으로 제거된 채 자체 개발 코드로 납품된 것을 발견했다. 의존성 매니페스트는 완벽히 깨끗했다. 매니페스트 수준 도구라면 '리스크 없음' 판정을 내렸을 것이다. 스니펫 수준 대조는 상류 프로젝트와 버전을 복원했고, 그 안의 미수정 역직렬화 취약점과 지원 종료(EOL) 의존성까지 함께 특정했다. 매니페스트가 증언할 수 없는 장면——바로 거기가 두 도구 종의 가치가 갈리는 지점이다.
평가 체크리스트
- 스니펫 재사용을 심은 실제 프로젝트로 PoC를 수행하고, 기능 비교표가 아니라 검출률과 정밀도를 비교한다.
- 취약점 인텔리전스가 다중 소스(CVE/CNVD/CNNVD/EUVD)를 집계하고 능동적 판정을 갖췄는지 확인한다. 정보의 몇 주 지연은 몇 주의 노출이다.
- SPDX와 CycloneDX 양 형식 내보내기를 필수 요건으로 삼는다.
- 라이선스 식별이 스니펫 수준에서 작동하는지——파일 헤더가 없어도 출처를 추적할 수 있는지 검증한다.
- 완전 오프라인 온프레미스 배치가 가능한지 확인한다. 코드가 사외로 나가느냐는 대다수 기업에서 단독 부결 사유다.
한 문장으로 요약하면: 매니페스트 수준은 당신의 말을 믿고, 스니펫 수준은 당신의 행동을 검증한다. 감사와 납품 장면에서는 후자를 선택하라.
