Supply-chain security audit — Composer + npm dependency CVE check, license compatibility (GPL-compatible only), abandoned package detection, typosquatting risk, lockfile integrity, post-install / preinstall scripts that smell like supply-chain attacks. Use when the user says "supply chain audit", "dependency CVE", "composer audit", "npm audit", "vendor security".
Scanned 9/9/2026
Install to Claude Code
npx -y skills add adityaarsharma/orbit --skill orbit-sec-supply-chain --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Orbit Sec Supply Chain?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/adityaarsharma-orbit-sec-supply-chain)More formats (shields.io, HTML) on the badges page.
---
name: orbit-sec-supply-chain
description: Supply-chain security audit — Composer + npm dependency CVE check, license compatibility (GPL-compatible only), abandoned package detection, typosquatting risk, lockfile integrity, post-install / preinstall scripts that smell like supply-chain attacks. Use when the user says "supply chain audit", "dependency CVE", "composer audit", "npm audit", "vendor security".
---
# 🪐 orbit-sec-supply-chain — Dependency supply-chain audit
A plugin is only as secure as its weakest dependency. This skill audits everything in `vendor/` and `node_modules/`.
---
## Quick start
```bash
# Composer side
cd ~/plugins/my-plugin && composer audit
# npm side
cd ~/plugins/my-plugin && npm audit
# Plus Orbit's deeper analysis
bash ~/Claude/orbit/scripts/supply-chain-audit.sh ~/plugins/my-plugin
```
---
## What this skill checks
### 1. Known CVEs in dependencies
```bash
composer audit --format=json | jq '.advisories'
npm audit --json | jq '.vulnerabilities'
```
Cross-referenced with:
- [GitHub Security Advisory DB](https://github.com/advisories)
- [Snyk DB](https://snyk.io/vuln)
- [PHP Security Advisories](https://github.com/FriendsOfPHP/security-advisories)
### 2. License compatibility (GPL-only for WP plugins)
**Whitepaper intent:** WP.org requires GPL-compatible. AGPL, BUSL, proprietary licenses break that. Auditor flags any non-compatible.
Compatible: GPL-2.0+, MIT, Apache-2.0 (permissive), BSD, LGPL.
Incompatible: AGPL, BUSL, proprietary, CC-NC, "must contact author."
### 3. Abandoned packages
```
A package is "abandoned" if:
- last commit > 2 years ago
- repository archived / 404
- composer.json has "abandoned: true"
- npm registry shows "deprecated"
```
Abandoned = no security patches → ticking time bomb.
### 4. Typosquatting risk
A dependency named `lodaash` (with double-a) is suspicious. Auditor checks Levenshtein distance from popular packages.
### 5. Post-install / preinstall scripts (npm)
```json
{
"scripts": {
"postinstall": "node ./postinstall.js" ← red flag — review the script
}
}
```
A malicious `postinstall.js` can exfiltrate secrets. Audit forces review.
### 6. Lockfile integrity
- `composer.lock` matches `composer.json`?
- `package-lock.json` matches `package.json`?
- All hashes verified?
```bash
composer install --dry-run
npm ci # fails if lockfile-package mismatch
```
### 7. Direct GitHub dependencies (no version pinning)
```json
"dependencies": {
"some-pkg": "github:user/repo" ← no version, no integrity hash
}
```
→ Pin to a specific commit hash + verify hash on every install.
---
## Output
```markdown
# Supply Chain Audit — my-plugin
## Composer (15 packages)
- ✓ All GPL-compatible
- ❌ guzzlehttp/guzzle 6.5.5 — CVE-2024-XXXX (HIGH) — upgrade to 7.x
- ⚠ symfony/polyfill-iconv — abandoned (last release 18 months ago)
## npm (1,247 packages incl. transitive)
- ⚠ 14 vulnerabilities (3 HIGH, 11 LOW)
`npm audit fix` resolves 9
- ❌ Package "lodahs" (note typo) found — looks like lodash typosquat. Investigate.
- ⚠ postinstall script in `node-pre-gyp` — common but read it
- ❌ Package `xyz-utils` — repo 404 (deleted from GitHub)
## Lockfile
- ✓ composer.lock matches composer.json
- ❌ package-lock.json out of sync with package.json — npm ci will fail
## Recommendation
1. `composer require guzzlehttp/guzzle:^7.0` — fixes critical
2. Investigate "lodahs" typo (likely safe but verify)
3. Remove `xyz-utils` (its repo is deleted)
4. `npm install` to refresh lockfile
```
---
## Pair with
- `/orbit-zip-hygiene` — vendor/ in release zip
- `/orbit-sec-secrets-leak` — secrets in lockfiles
- `/orbit-cve-check` — Orbit's own CVE feed
---
## Sources & Evergreen References
### Canonical docs
- [GitHub Advisory Database](https://github.com/advisories) — root vuln DB
- [composer audit](https://getcomposer.org/doc/03-cli.md#audit) — built-in
- [npm audit](https://docs.npmjs.com/cli/v10/commands/npm-audit) — built-in
- [Snyk Vulnerability DB](https://snyk.io/vuln) — alt source
- [Socket.dev](https://socket.dev/) — supply-chain risk scoring
- [PHP FIG Security Advisories](https://github.com/FriendsOfPHP/security-advisories)
### Rule lineage
- composer audit (built-in) — Composer 2.4+ (2022)
- Supply-chain attacks (xz-utils, event-stream) — broad awareness since 2021
### Last reviewed
- 2026-04-29 — supply-chain landscape evolves daily
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!