npm-supply-chain-audit
무엇을 하나요
Audit npm projects for Shai-Hulud-class supply-chain exposure: lifecycle scripts, Git dependency prepare hooks, release-age gaps, publish-token exposure, trusted publishing, signed releases, and verifier docs.
설치를 누르면 이 항목이 AgentsRoom 데스크톱 앱에서 열립니다. 앱이 아직 설치되어 있지 않으면 다운로드 페이지로 이동합니다.
SKILL.md
--- name: npm-supply-chain-audit description: Audit npm projects for Shai-Hulud-class supply-chain exposure: lifecycle scripts, Git dependency prepare hooks, release-age gaps, publish-token exposure, trusted publishing, signed releases, and verifier docs. --- # npm-supply-chain-audit Use this skill when reviewing a JavaScript or TypeScript repository for install-time malware exposure, compromised npm maintainer risk, or CI publish-path abuse. ## Triggers - "npm supply chain audit" - "Shai-Hulud" - "malicious npm package" - "trusted publishing review" - "publish token exposure" - "Git dependency prepare script" - "router_init.js" / "tanstack_runner.js" ## Audit sequence ### 1. Dependency source scan Search manifests and lockfiles for exotic sources: ```bash rg -n '"(git\\+|git://|github:|file:|link:)|https?://[^"]+\\.(tgz|tar\\.gz)' package.json package-lock.json ``` Findings to escalate: - `github:` or `git+` dependencies, especially in `optionalDependencies`. - Direct tarballs from non-registry hosts. - `file:` or `link:` sources outside deliberate local workspace development. Run the known-affected package feed scan as a separate hard gate: ```bash npm run lint:affected-packages AIWG_AFFECTED_PACKAGES_CSV=/mnt/ops/users/roctinam/Downloads/22-packages.csv npm run lint:affected-packages AIWG_AFFECTED_PACKAGES_CSV=https://gist.githubusercontent.com/<user>/<gist-id>/raw/22-packages.csv npm run lint:affected-packages ``` Treat exact package/version hits as incident evidence. Preserve the package name, version, published timestamp, detected timestamp range, and feed source URL/path in the finding. ### 2. Lifecycle-script review Inspect root package scripts and nested package manifests: ```bash rg -n '"(preinstall|install|postinstall|prepare)"' package.json package-lock.json . ``` Treat install-time scripts as code execution on every developer machine and CI runner. Remove them unless the package cannot function without them. If one must remain, document the exact reason and what it can access. ### 3. Release-age gate Check for `.npmrc`: ```ini min-release-age=7 ``` Confirm contributors and lockfile-changing CI jobs use npm 11.5+. Use 10 days or higher for release-prep dependency churn and security- sensitive branches. ### 4. Publish-path hardening Review release workflows for: - npm trusted publishing or another OIDC publish path. - No long-lived npmjs.org publish token once trusted publishing is active. - `permissions: id-token: write` scoped only to the job that publishes. - Signed tag verification before build, pack, publish, or asset upload. - SHA-pinned actions and digest-pinned containers in release jobs. - No publish step on fork pull requests or untrusted PR triggers. ### 5. Evidence and user verification For packages users install from a registry, require: - npm provenance attestation where supported, - signed git tag, - signed release tarball or equivalent artifact signature, - SBOM, - user-facing verification docs. The verifier docs should avoid commands that run lifecycle scripts while checking an artifact. Prefer `npm install --package-lock-only --ignore-scripts <pkg>@<version>` followed by `npm audit signatures`. ## Incident-response trigger If a known malicious version was installed or a suspicious lifecycle script ran, assume secrets reachable from that environment are exposed. Rotate npm tokens, GitHub/Gitea tokens, cloud credentials, Kubernetes service account tokens, Vault tokens, and deployment secrets. Then audit recent publishes and workflow runs. If the affected-package feed hit a CI runner or workstation cache, quarantine that cache before reuse. ## Output format Lead with findings, ordered by severity: ```markdown ## Findings - CRITICAL: <file:line> <risk> <fix> - HIGH: <file:line> <risk> <fix> ## Clean Checks - No Git dependency sources found. - No install lifecycle scripts found. ## Follow-up Issues - <title>, <acceptance criteria> ``` ## References - npm trusted publishing: <https://docs.npmjs.com/trusted-publishers> - npm audit signatures: <https://docs.npmjs.com/cli/v11/commands/npm-audit#audit-signatures> - npm `min-release-age`: <https://docs.npmjs.com/cli/v11/using-npm/config#min-release-age>
더 알아보기
Claude Ads: 광고 계정을 감사해 주는 Claude Code 스킬
Claude Ads는 Claude Code용 오픈소스 스킬입니다. Google과 Meta부터 Reddit, X까지 12개 플랫폼의 광고 계정을 감사하고, 모든 발견 사항에 근거를 붙입니다. v2.1.0이 하는 일, 안전하게 설치하는 방법, 한계, 그리고 AgentsRoom에서 실행하는 방법을 정리했습니다.
AGENTS.md: 모든 코딩 에이전트를 위한 단 하나의 컨텍스트 파일 (Codex, Antigravity, Claude)
AGENTS.md는 AI 코딩 에이전트가 코드를 건드리기 전에 읽는 이식 가능한 지침 파일입니다. 무엇을 담아야 하는지, CLAUDE.md와 무엇이 다른지, 그리고 Codex, Antigravity, Claude 사이에서 하나의 컨텍스트를 유지하는 방법을 알아봅니다.
AgentsRoom 다운로드
모든 AI 에이전트를, 모든 프로젝트에서, 하나의 창으로 실행하세요.
컴패니언 앱: 이동 중에도 에이전트를 모니터링
Claude, Codex, Antigravity CLI 또는 다른 AI 공급자를 사용하세요.
버그와 요청을 공개 백로그로 바로 보내세요.
