콘텐츠로 이동

Socket - 공급망 및 악의적 패키지 탐지 치트시트

Socket - 공급망 및 악의적 패키지 탐지 치트시트

Socket은 알려진 CVE 매칭보다는 악의적 패키지를 행동 방식으로 탐지하는 데 중점을 둔 소프트웨어 공급망 보안 도구입니다. 의존성이 실제로 무엇을 하는지 검사합니다. 설치 스크립트, 네트워크 및 파일시스템 접근, 난독화된 코드 및 기타 위험한 기능을 확인하여 서명 기반 스캐너가 놓치는 타이포스쿼트 및 손상된 릴리스를 탐지합니다. npm, PyPI, Go, Maven 등을 포함한 여러 에코시스템을 지원하며, CLI, GitHub 앱, CI를 통해 개발자 워크플로우에 통합됩니다.

설치

방법명령어
npm (CLI)npm install -g @socketsecurity/cli
npx (설치 없음)npx @socketsecurity/cli --help
Homebrewbrew 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 ciCI용으로 조정된 스캔(문제 발생 시 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

리소스