악성 패키지 정보 수집·분석
취약점뿐 아니라 이름 위장·의존성 혼동·계정 탈취형 악성 패키지를 수집·분석했습니다.
작업 요약
악성 패키지 정보를 제품 보안 데이터에 반영
CVE만으로 확인할 수 없는 악성 패키지
CVE 중심의 데이터만으로는 악성 코드를 의도적으로 넣은 패키지를 확인하기 어려웠습니다. 공개 악성 패키지 정보를 수집해 기존 취약점 데이터와 함께 조회하도록 했습니다.
타이포스쿼팅, dependency confusion, 계정 탈취 유형을 나눈 이유는 대응 방식이 다르기 때문입니다. 이 분류를 반입 차단과 패치 우선순위 판단에 사용했습니다.
배경
기존 보안 데이터는 알려진 취약점(CVE) 중심이었습니다. 하지만 실제 공급망 위협에는 단순 취약점뿐 아니라 악성 코드를 의도적으로 포함한 패키지가 존재합니다.
- 타이포스쿼팅 — 유명 패키지명을 오타로 모사해 설치를 유도
- 종속성 혼동(dependency confusion) — 내부 패키지명을 공개 저장소에 올려 잘못 당겨오게 유도
- 계정 탈취 — 정상 패키지 유지보수 계정을 탈취해 악성 버전을 배포
이런 유형은 CVSS 점수가 매겨진 취약점과 성격이 달라, 별도의 수집·탐지 경로가 필요했습니다.
접근
공개 데이터 소스(OpenSSF malicious-packages 저장소 등)에서 악성 패키지 정보를 수집해 DB로 구축하고 탐지 단계에서 npm·PyPI·Maven·Go 등 패키지 매니저 파일을 파싱해 식별된 패키지명(+버전)을 악성 패키지 DB에서 조회합니다.
패치 우선순위 반영
조회 결과로 확인된 악성 패키지 여부는 패치 우선순위에 가중치로 반영됩니다. 단순 취약점보다 악성 코드 포함 패키지가 더 높은 우선순위로 다뤄지도록 했습니다.
- 분석 결과 화면에서 악성 패키지 여부를 함께 제공
- 해당 정보를 반입(차단) 관리에 활용해 악성 패키지가 도입되는 것을 사전에 통제
결과
역할
공개 악성 패키지 자료를 모으는 수집기와 전용 테이블을 직접 만들었습니다. 분석 대상 파일에서 패키지명과 버전을 식별하면 이 데이터와 대조하도록 조회 경로를 연결했고, 출처별 신뢰도는 우선순위 값으로 저장했습니다.
취약점 수집·패치 우선순위 등 기반 보안 데이터 작업은 별도 항목으로 정리.