Socket - 공급망 및 악의적 패키지 탐지 치트시트
Socket은 알려진 CVE 매칭보다는 악의적 패키지를 행동 방식으로 탐지하는 데 중점을 둔 소프트웨어 공급망 보안 도구입니다. 의존성이 실제로 무엇을 하는지 검사합니다. 설치 스크립트, 네트워크 및 파일시스템 접근, 난독화된 코드 및 기타 위험한 기능을 확인하여 서명 기반 스캐너가 놓치는 타이포스쿼트 및 손상된 릴리스를 탐지합니다. npm, PyPI, Go, Maven 등을 포함한 여러 에코시스템을 지원하며, CLI, GitHub 앱, CI를 통해 개발자 워크플로우에 통합됩니다.
설치
| 방법 | 명령어 |
|---|
| npm (CLI) | npm install -g @socketsecurity/cli |
| npx (설치 없음) | npx @socketsecurity/cli --help |
| Homebrew | brew install socket |
| pip (Python CLI) | pip install socketsecurity |
| GitHub 앱 | GitHub 마켓플레이스에서 Socket 앱 설치 |
| 인증 | socket login(API 토큰 설정) |
핵심 CLI 명령어
| 명령어 | 설명 |
|---|
socket scan create . | 현재 프로젝트의 새 공급망 스캔 생성 |
socket scan list | 조직의 이전 스캔 목록 |
socket scan view <ID> | 특정 스캔 결과 보기 |
socket package score npm react | 패키지의 공급망 점수 얻기 |
socket npm install <pkg> | npm 래퍼로 설치 전 패키지 확인 |
socket npx <pkg> | 패키지를 먼저 검증하는 안전한 npx |
socket ci | CI용으로 조정된 스캔(문제 발생 시 0이 아닌 종료) |
socket --help | 전체 명령어 참조 |
Socket이 표시하는 항목
| 기능/신호 | 중요한 이유 |
|---|
| 설치 스크립트 | postinstall 훅은 일반적인 악성코드 벡터 |
| 네트워크 접근 | 설치/런타임 시 예상치 못한 아웃바운드 연결 |
| 파일시스템 접근 | 민감한 경로 읽기(SSH 키, env 파일) |
| Shell / 프로세스 실행 | 셸 또는 자식 프로세스 생성 |
| 난독화된 코드 | 축소/인코딩된 페이로드가 동작 숨김 |
| 타이포스쿼트 | 인기 패키지를 모방하는 이름 |
| 텔레메트리 / 유출 | 데이터 수집 및 유출 패턴 |
패키지 점수
# 추가하기 전에 단일 의존성 검사
socket package score npm left-pad
socket package score pypi requests
# 후보 vs 대안의 위험도 비교
socket package score npm chalk
점수는 공급망 위험, 품질, 유지보수, 취약점 차원을 요약하므로 의존성을 빠르게 평가할 수 있습니다.
CI / GitHub 통합
| 통합 | 동작 |
|---|
| GitHub 앱 | 위험한 의존성 변경을 도입하는 PR에 댓글 |
socket ci | 스캔이 임계값을 초과할 때 파이프라인 실패 |
| 설정 파일 | socket.yml은 어느 문제 유형이 차단 vs 경고할지 조정 |
| Diff 인식 | PR이 추가한 항목에 초점을 맞춰 노이즈 감소 |
설정(socket.yml)
version: 2
issueRules:
installScripts: error
networkAccess: warn
telemetry: warn
obfuscatedCode: error
| 필드 | 목적 |
|---|
issueRules | 각 기능/문제를 error, warn, 또는 ignore로 설정 |
projectIgnorePaths | 스캔에서 경로 제외 |
일반적인 워크플로우
# 의존성이 package.json에 들어가기 전에 검증
socket npm install some-package
# CI에서 풀 리퀘스트 게이트
socket ci
# 기존 저장소의 전체 의존성 트리 감사
socket scan create . && socket scan list
Socket vs 기존 SCA
| 측면 | Socket | 기존 SCA(예: CVE 매치기) |
|---|
| 주요 신호 | 동작/기능 | 알려진 CVE 데이터베이스 매치 |
| 제로데이 악성코드 탐지 | 예(동작 방식) | 아니오(알려진 CVE 필요) |
| 타이포스쿼트 탐지 | 예 | 제한됨 |
| 최고 조합 | Syft/Grype, Sigstore | 악성코드 커버리지용 Socket |
리소스