🔒 내부용 · 비배포 (포트폴리오에는 일반화 버전만 공개)
0한눈에
- 목표: CVE 취약점 외에 악성 코드를 포함한 패키지(타이포스쿼팅·종속성 혼동·계정 탈취 유형)를 수집·분석.
- 수집원:
OpenSSF malicious-packages 저장소 등 공개 데이터 소스.
- 탐지 연계: 패키지 매니저 파일 파싱 → 패키지명(+버전) 식별 → 악성 패키지 DB 조회 → LPP 가중치 반영.
- 활용: 분석 결과에 악성 패키지 여부 제공 + 반입(차단) 관리.
1왜 했나
기존 보안 데이터는 취약점(CVE/CVSS) 중심이었다. 그러나 공급망 공격은 정상 패키지를 가장하거나 탈취해 악성 코드 자체를 배포하는 형태가 늘고 있다. 이런 패키지는 CVE로 표현되지 않으므로 별도 수집·탐지 경로가 필요하다.
- 타이포스쿼팅: 유명 패키지명 오타 모사로 오설치 유도.
- 종속성 혼동: 내부 패키지명을 공개 저장소에 올려 우선 당겨오게 유도.
- 계정 탈취: 정상 패키지 유지보수 계정 탈취 후 악성 버전 배포.
2진행 순서
- 공개 데이터 소스(OpenSSF malicious-packages 등)에서 악성 패키지 정보 수집
- 패키지명·버전·유형 정규화 후 악성 패키지 DB로 적재(DB화)
- 탐지 단계에서 패키지 매니저 파일(npm·PyPI·Maven·Go 등) 파싱 → 패키지명(+버전) 식별
- 식별된 패키지를 악성 패키지 DB에서 조회
- 조회 결과를 패치 우선순위(LPP)에 가중치로 반영
- 분석 결과 화면에 악성 패키지 여부 노출 + 반입(차단) 관리 활용
악성 패키지는 단순 취약점보다 위험도가 크므로, LPP 산정 시 가중치를 높여 대응 우선순위를 끌어올린다.
3온보딩 포인트
- 악성 패키지 데이터는 취약점 데이터와 별개의 도메인이다. CVE/CVSS 파이프라인과 분리해 생각할 것.
- 탐지 입력은 결국 패키지 매니저 파일이다. 매니저별 파싱으로 패키지명(+버전)을 뽑아 DB 조회한다.
- 출력은 두 갈래: 분석 결과의 악성 여부 표시와 반입(차단) 관리 — 후자가 타 솔루션 대비 차별점.
- LPP는 취약점 가중치만이 아니라 악성 여부 가중치까지 반영하도록 확장됐다.
4공개(포트폴리오)와의 차이
공개 버전(human/portfolio/items/malicious-package-analysis.html)은 내부 식별자(내부 테이블명·호스트명·티켓 ID·고객사명·동료 이름)를 제거하고 문제·접근·임팩트 중심으로 일반화했다. 일반 기술/오픈소스 명칭(OpenSSF·npm·PyPI·Maven·Go·LPP·CVSS)은 양쪽 모두 유지. 이 내부 문서는 본인 참고/온보딩용.