DevShedLabs/DevScan
GitHub: DevShedLabs/DevScan
一款开发者环境安全扫描器,用于检测运行时、发现已知漏洞、扫描暴露的密钥,并管理依赖项健康状态。
Stars: 3 | Forks: 1
# DevScan



一款开发者环境安全与健康扫描器。它能够检测 runtime,检查已安装的 package,并揭示已知的漏洞和过时的依赖项——涵盖你的全局环境或特定项目。
使用 Go 构建。专为可脚本化、对 CI 友好和高度可扩展而设计。
## 安装说明
```
# 最新 release
go install github.com/DevShedLabs/devscan@latest
# 特定版本
go install github.com/DevShedLabs/devscan@v0.1.4
```
确保 `~/go/bin` 包含在你的 `$PATH` 中。如果尚未包含,请将以下内容添加到你的 shell 配置文件(`~/.zshrc`、`~/.bashrc` 等)中:
```
export PATH="$HOME/go/bin:$PATH"
```
然后重新加载你的 shell(`source ~/.zshrc`)或打开一个新的终端。
安装完成后,使用以下命令保持 devscan 为最新版本:
```
devscan update
```
或者从源码构建:
```
git clone https://github.com/DevShedLabs/devscan
cd devscan
go build -o devscan .
```
## 命令
| 命令 | 描述 |
|---|---|
| `devscan doctor` | 全面扫描:runtime、package、漏洞、过时的依赖项 |
| `devscan audit` | 仅扫描漏洞 |
| `devscan outdated` | 仅扫描版本漂移 |
| `devscan list` | 已检测到的 runtime 和 package 清单 |
| `devscan locate` | 每个存在漏洞的 package 的文件系统路径 |
| `devscan scan` | 用于管道传递的原始 JSON 扫描输出 |
| `devscan fix` | 建议的修复命令 |
| `devscan report` | 导出完整报告,支持 Markdown、HTML 或 JSON 格式 |
| `devscan keyscan` | 扫描文件中暴露的 secret、API key 和 token |
| `devscan osv` | 按包名、ID 或关键字搜索 OSV 安全公告 |
| `devscan compile` | 将黑名单资源编译为单一索引 |
| `devscan update-db` | 获取最新黑名单数据库并重新编译 |
| `devscan intercept` | 管理 package manager shim 以实现实时安装保护 |
| `devscan install-skill` | 将 Claude Code AI skill 安装到 `~/.claude/skills/` 中 |
| `devscan update` | 将 devscan 更新至最新发布版本 |
## 用法
默认情况下,所有命令都会扫描当前目录。使用 `--global` 可扫描整台机器。
```
# 获取已安装的版本
devscan --version
# 当前项目的完整健康报告
devscan doctor
# 审计当前项目的漏洞
devscan audit
# 扫描整个机器(全局 packages)
devscan audit --global
# 筛选高危及以上级别
devscan audit --severity high
# 显示 vulnerable packages 的确切安装位置
devscan locate
# 扫描特定路径
devscan doctor --path ./my-app
# 扫描项目及最多 2 层深度的所有子项目
devscan doctor --path ./my-app --depth 2
# 机器可读输出
devscan doctor --format json
# CI: 如果发现 critical vulns 则非零退出
devscan audit --severity critical
```
## 报告
生成可共享的报告,支持 Markdown、HTML 或 JSON 格式:
```
# 格式由输出文件扩展名推断
devscan report --output report.html
devscan report --output report.md
devscan report --output scan.json
# 或显式指定格式(stdout)
devscan report --html
devscan report --md
devscan report --json
# 限定到某个路径
devscan report --output report.html --path ./my-app
# 遍历子项目
devscan report --output report.html --path ./my-app --depth 2
# 干净的公开报告(移除内部路径和 package inventory)
devscan report --output security-report.md --public
```
报告内容包括:
- 系统信息:OS、版本、芯片、架构
- 显示严重性计数和扫描持续时间的摘要卡片
- runtime 版本及其过时状态
- 按严重性分组的漏洞,附带 OSV 公告链接、修复版本及修复命令
- 每个存在漏洞的 package 安装的文件系统路径
- 完整的 package 清单
## 黑名单
使用你自己精心策划的供应链黑名单来增强 OSV 漏洞数据。任何匹配黑名单的 package 都将与正常的 OSV 发现一起,被报告为 **critical**(严重)级别。
### 设置
最快速的入门方法是从 [Aikido 的开源威胁情报源](https://github.com/AikidoSec/safe-chain/) 直接获取最新的数据库:
```
devscan update-db
```
这将从 `malware-list.aikido.dev` 下载 npm 和 PyPI 恶意软件数据库,将其保存到 `~/.devscan/resources/`,并自动编译索引。`devscan update` 也会运行此步骤,因此每当你更新二进制文件时,数据库都会保持最新。
你也可以将自己的黑名单文件放入 `~/.devscan/resources/` 并手动编译:
```
devscan compile
```
这会生成 `~/.devscan/devscan.json`。所有后续扫描都会自动加载编译后的索引——无需任何 flag,也无需重新构建。
添加或更新源文件后,重新运行 `devscan compile` 以重新生成索引。
### 支持的格式
**CSV** — 必须包含标题行,且必须有 `Ecosystem` 和 `Name` 列,`Version` 为可选(省略则匹配任何版本):
```
Ecosystem,Namespace,Name,Version,Artifact,Published,Detected
npm,,chai-utils-test,4.5.3,,,2026-06-04T00:00:00Z
pypi,,tlask,3.1.4,,,2026-06-07T15:00:00Z
```
**JSON (通用)** — 必须指定 ecosystem:
```
[
{ "ecosystem": "npm", "name": "evil-pkg", "version": "1.0.0", "reason": "MALWARE" }
]
```
**JSON (Aikido 风格)** — 通过 `package_name` 字段自动检测,默认视为 npm:
```
[
{ "package_name": "evil-pkg", "version": "1.0.0", "reason": "MALWARE" }
]
```
### 去重
被多个来源标记的 package 将合并为一个发现结果。漏洞描述会列出所有匹配的源文件,例如:
```
[CRIT] chai-utils-test@4.5.3
Malware detected
This package appears in malwareDatabase_js.json, miasma-attack-packages.csv.
Reason: MALWARE. Remove or replace it immediately.
```
### 目录结构
```
~/.devscan/
resources/ ← drop source files here (*.csv, *.json)
devscan.json ← compiled index (auto-used by all scans)
advisories.yaml ← global user advisories (optional)
/
.devscan/
advisories.yaml ← project-scoped advisories (optional, commit to repo)
```
## 用户公告
当安全公司发布有关受损 package 的披露时,OSV.dev 可能需要几天或几周的时间才能反映出来。用户公告让你可以立即标记一个 package——无需等待,无需重新编译。
### 格式
在项目根目录创建 `.devscan/advisories.yaml`(提交到你的 repo 中),或者在 `~/.devscan/advisories.yaml` 中创建适用于所有项目的全局公告:
```
advisories:
- ecosystem: crates.io
package: onering
version: "*" # all versions
severity: critical
reason: "Package compromised — backdoor injected"
reference: "https://blog.sec.com/2026/06/onering"
- ecosystem: npm
package: left-pad
version: "1.2.3" # specific version only
severity: high
reason: "Malicious version published"
reference: "https://..."
```
`version: "*"` 匹配所有已安装的版本。特定版本(例如 `"1.2.3"`)仅匹配该确切发行版。
### 工作原理
每次运行 devscan 时,用户公告都会合并到已编译的黑名单之上。无需重新编译步骤——只需放入文件并重新扫描。
要根据你的公告检查系统,而无需将每个 package 都发送给 OSV,请使用 `--advisories-only`:
```
# 快速、私密 —— 无对 OSV 的网络调用
devscan audit --advisories-only
# 仅针对您的自定义 advisories 进行全局扫描
devscan audit --advisories-only --global
```
当你刚刚添加了一个公告并想检查你的机器上是否存在该 package,而又不希望承受完整 OSV 扫描的延迟或数据暴露时,这非常有用。
匹配的 package 将与 OSV 和黑名单结果一起被报告为 **critical**(严重)级别的发现,并且参考 URL 会包含在发现描述中。
### 安装时阻止
如果你启用了 intercept shim,用户公告也会在获取 package 之前阻止安装:
```
╔══════════════════════════════════════════════════════════════════════╗
║ DEVSCAN BLOCKED ║
╚══════════════════════════════════════════════════════════════════════╝
[CRITICAL] onering
Package compromised — backdoor injected — https://blog.sec.com/2026/06/onering
cargo add was blocked. Remove this package from your command and try again.
```
### 作用域
| 文件位置 | 作用域 |
|---|---|
| `.devscan/advisories.yaml` | 仅限当前项目——提交以与你的团队共享 |
| `~/.devscan/advisories.yaml` | 本机上的所有项目 |
如果同时存在这两个文件,则会同时加载。
## 密钥扫描
扫描源文件以查找暴露的 secret、API key 和 token:
```
# 扫描当前目录
devscan keyscan
# 扫描特定路径
devscan keyscan --path ./my-app
# 限制深度(适用于大型 monorepos)
devscan keyscan --path /Users/me/projects --depth 3
# 仅筛选 critical
devscan keyscan --severity critical
# 导出为 HTML 或 Markdown
devscan keyscan --path ./ --format html --output keyscan.html
devscan keyscan --path ./ --format md --output keyscan.md
# 重定向输出(同时启用实时进度计数器)
devscan keyscan --path /Users/me/projects --depth 3 > keyscan.html
```
可检测的 secret 类型:
| 类别 | 示例 |
|---|---|
| AI 提供商 | OpenAI, Anthropic, Google AI, Groq, OpenRouter, Cohere, Replicate |
| 云服务 | AWS access/secret key, GCP service account, Firebase, Azure |
| 源代码控制 | GitHub token (ghp_, ghs_, gho_, github_pat_) |
| 支付 | Stripe live key (sk_live_, pk_live_), PayPal, Braintree |
| 消息传递 | Slack token 和 webhook, Twilio, SendGrid, Mailgun |
| 注册表 | npm token |
| 基础设施 | Heroku, Vercel, Netlify, Render, Cloudflare, DigitalOcean |
| 监控 | Datadog, Sentry, New Relic |
| 私钥 | RSA, EC, DSA, OpenSSH 私钥标头 |
| 数据库 URL | 带有嵌入凭据的 Postgres, MySQL, MongoDB, Redis URL |
| 命名变量 | 任何 `_KEY`, `_TOKEN`, `_SECRET`(其中服务名是已知的提供商) |
自动跳过:`node_modules/`、`vendor/`、`.git/`、`dist/`、二进制文件、文档(`.md`、`.rst`、`.txt`)以及示例/模板文件(`.example`、`.sample`、`.dist`)。
所有匹配的值在输出时都会被**脱敏处理**——仅显示足以识别 secret 类型的上下文,绝不显示完整值。
### 包含在完整报告中
在任何 `devscan report` 中添加 secrets 部分:
```
devscan report --html --include-keys --output report.html
devscan report --md --include-keys
devscan report --json --include-keys --output report.json
```
## Flag
```
--format string Output format: table|json|compact (default "table")
--severity string Filter by severity: critical|high|medium|low
--ecosystem string Filter by ecosystem: npm|pypi|packagist|crates.io|go
--global Scan global packages (machine-wide)
--project Scan current project directory (default)
--path string Explicit project path to scan
--depth int Traverse subdirectories up to this depth (0 = path only)
--no-color Disable color output
--no-cache Bypass cache and force a fresh advisory lookup
--advisories-only Match only user advisories and blocklists — skip OSV network lookup
--public Removes data not needed for public view, eg. repo
-o, --output string Write report to file (report command only)
```
## 修复命令
当有可用的修复方案时,devscan 会生成要运行的确切命令:
| 生态系统 | 示例 |
|---|---|
| npm | `npm install pkg@^1.2.3` |
| pypi | `pip install --upgrade pkg>=1.2.3` |
| packagist | `composer require vendor/pkg:^1.2.3` |
| crates.io | `cargo update -p pkg --precise 1.2.3` |
| go | `go get module@v1.2.3` |
| gem | `gem update pkg` |
## 退出码
| 代码 | 含义 |
|---|---|
| `0` | 干净 |
| `1` | 常规错误 |
| `2` | 发现漏洞 |
| `3` | 发现严重漏洞 |
| `4` | 发现过时的 package |
对 CI pipeline 很有用:
```
- name: Security scan
run: devscan audit --severity high
```
## 拦截
Intercept 使用 shim 包装 npm、pip、cargo 和 bun,在你编译好的黑名单中检查每个显式安装的 package,**在获取 package 之前**——也就是在任何 `postInstall` hook 执行之前。
大多数供应链攻击在安装期间通过 post-install hook 运行恶意代码,并使用 Bun 和 Rust 等工具对机器造成进一步破坏。Intercept 将它们挡在门外。
### 工作原理
启用后,devscan 会将符号链接写入 `~/.devscan/shims/`:
```
~/.devscan/shims/npm → devscan binary
~/.devscan/shims/pnpm → devscan binary
~/.devscan/shims/bun → devscan binary
~/.devscan/shims/pip → devscan binary
~/.devscan/shims/pip3 → devscan binary
~/.devscan/shims/cargo → devscan binary
~/.devscan/shims/go → devscan binary
~/.devscan/shims/composer → devscan binary
```
shim 目录位于你的 `PATH` 最前面。当你运行 `npm install evil-pkg` 时,shim 会首先运行,根据你编译的黑名单检查该 package,然后要么发出警告并阻止,要么透明地 exec 真正的二进制文件。非安装命令(`npm run`、`cargo build` 等)会瞬间透传,没有任何开销。
### 设置
```
# 1. 编译您的 blocklists(必需 —— shims 会检查编译后的 index)
devscan compile
# 2. 启用 shims 并修补您的 shell profile
devscan intercept enable
# 3. 重新加载您的 shell
source ~/.zshrc
```
### 命令
```
# 启用 shims 并修补 shell profile
devscan intercept enable
# 禁用并清理
devscan intercept disable
# 检查哪些 shims 处于活动状态以及 shims 目录是否在 PATH 上
devscan intercept status
```
### 被阻止的安装是什么样的
```
╔══════════════════════════════════════════════════════════════════════╗
║ DEVSCAN BLOCKED ║
╚══════════════════════════════════════════════════════════════════════╝
[MALWARE] chai-utils-test@4.5.3
Found in: malwareDatabase_js.json
npm install was blocked. Remove this package from your command and try again.
Run `devscan audit` for a full vulnerability report.
```
警告会以红色打印到 stderr,以便在周围的安装输出中脱颖而出。该进程以退出码 1 退出,从而阻止安装继续进行。
### 保持 shim 为最新
`devscan update` 会自动重写 shim 以指向新的二进制文件。如果未来的版本中添加了新的 package manager,请重新运行 `devscan intercept enable` 来写入新的 shim——它是幂等的,随时运行都是安全的。
显式安装和 lockfile 安装都会被扫描。Lockfile 命令(`npm ci`、`bun install`、`composer install`、`composer update`、`go get`)会从当前目录读取 lock file,并在真正运行命令之前检查每个锁定的 package。
### 支持的 package manager
| 管理器 | 命令拦截 |
|---|---|
| npm | `npm install`, `npm i`, `npm add`, `npm ci` (lockfile) |
| pnpm | `pnpm add`, `pnpm install` (lockfile) |
| bun | `bun add`, `bun install` (lockfile) |
| pip | `pip install`, `pip3 install` |
| cargo | `cargo add`, `cargo install` |
| go | `go get`, `go install`, `go.sum` (lockfile) |
| composer | `composer require`, `composer install`, `composer update` (lockfile) |
| code / code-insiders | `code --install-extension`, `code-insiders --install-extension` |
## IDE 保护
VS Code 扩展是一个日益常见的攻击面。恶意的发布者会克隆流行的扩展名称,躲过市场审查过程,并在安装或激活时执行任意代码。devscan 通过两种方式解决这个问题:审计你已经安装的内容,并在恶意扩展落地之前阻止它们。
### 扫描已安装的扩展
devscan 会自动枚举你机器上所有 VS Code 系列编辑器中的扩展:
- **VS Code** — `~/.vscode/extensions/`
- **VS Code Insiders** — `~/.vscode-insiders/extensions/`
- **Cursor** — `~/.cursor/extensions/`
- **VSCodium** — `~/.vscode-oss/extensions/`
来自所有检测到的编辑器的扩展将被合并和去重。运行全面审计:
```
# 审计每个 VS Code 变体中所有已安装的 extensions
devscan audit --global --ecosystem vscode
# 列出每个已安装的 extension 及其版本和路径
devscan list --global --ecosystem vscode
# 包含 extensions 的完整健康检查
devscan doctor --global
```
扩展会根据 OSV.dev(使用 `VSCode` ecosystem)和你的本地黑名单进行检查——这与用于 npm、pip 和 cargo package 的 pipeline 相同。OSV 的 `VSCode` ecosystem 是有效的,但目前数据非常稀少;目前黑名单是主要的覆盖层。任何发现都会连同严重性、公告 ID 或黑名单来源以及扩展路径一起报告。
### 在安装时阻止恶意扩展
启用 intercept shim 后,在获取扩展之前会拦截 `code --install-extension`:
```
# 1. 将已知的恶意 publishers/extensions 添加到您的 blocklist
# (格式请参见 Blocklists 部分)
# 2. 编译 blocklist
devscan compile
# 3. 启用 shims —— 为 `code`、`code-insiders` 和 `codium` 写入 shims
devscan intercept enable
# 4. 重新加载您的 shell
source ~/.zshrc
```
此后,任何试图通过 CLI 安装黑名单中扩展的操作都会被阻止:
```
╔══════════════════════════════════════════════════════════════════════╗
║ DEVSCAN BLOCKED ║
╚══════════════════════════════════════════════════════════════════════╝
[CRITICAL] malicious-publisher.fake-copilot
Found in: vscode-blocklist.csv
code --install-extension was blocked. Remove this extension from your command and try again.
```
### 扩展的黑名单格式
将 CSV 添加到 `~/.devscan/resources`,其中 `Ecosystem` 设置为 `vscode`,`Name` 设置为 `publisher.extensionname`:
```
Ecosystem,Name,Version,Reason
vscode,malicious-publisher.fake-copilot,,MALWARE
vscode,badactor.crypto-stealer,1.0.0,MALWARE
```
省略 `Version` 可阻止该扩展的所有版本。然后重新编译:
```
devscan compile
```
### GUI 安装
VS Code 扩展面板不会调用 `code` 二进制文件,因此 shim 无法拦截 GUI 安装。devscan 的安装后审计(`devscan audit --global --ecosystem vscode`)是针对该路径的防御手段——在从市场安装扩展后运行它,或者在 CI 中计划运行它。
## OSV 搜索
直接从终端搜索 [OSV.dev](https://osv.dev) 获取安全公告——比 OSV Web UI 更快,且更易于脚本化。
### 按包名
```
# 某个 package 的所有 advisories(所有 ecosystems)
devscan osv --package axios
# 限定到特定的 ecosystem
devscan osv --package axios --ecosystem npm
# 仅影响特定版本的 advisories
devscan osv --package axios --version 1.2.3
devscan osv --package requests --ecosystem pypi --version 2.28.0
```
### 按公告 ID
通过 CVE、GHSA、RUSTSEC、PYSEC 或任何 OSV ID 直接查询:
```
devscan osv CVE-2024-1234
devscan osv GHSA-xxxx-yyyy-zzzz
devscan osv RUSTSEC-2024-0001
```
### 自由文本/关键字搜索
在所有 ecosystem 中搜索作为包名的术语,然后过滤出该术语出现在公告 ID、摘要、详细信息或包名中的结果:
```
devscan osv "onering"
devscan osv "prototype pollution" --ecosystem npm
```
### 详细模式
默认情况下,每个公告的结果显示一行摘要。使用 `--detail` 展开完整的公告文本、所有受影响的版本范围以及参考信息:
```
devscan osv --package lodash --detail
devscan osv CVE-2024-1234 --detail
```
### 保存报告
输出可以保存为 HTML、Markdown 或 JSON 格式——格式是根据文件扩展名推断的:
```
devscan osv --package axios --output report.html
devscan osv --package axios --output report.md
devscan osv --package axios --output report.json
# 或显式指定格式
devscan osv --package axios --html
devscan osv --package axios --json
devscan osv --package axios --md
# 保存报告中的 Detail 模式
devscan osv --package axios --detail --output report.html
```
### 支持的生态系统
传递简称——devscan 会自动将其映射到 OSV 的 ecosystem 名称:
| Flag 值 | OSV ecosystem |
|---|---|
| `npm` | npm |
| `pypi` | PyPI |
| `cargo`, `crates.io`, `rust` | crates.io |
| `go` | Go |
| `gem`, `ruby` | RubyGems |
| `composer`, `packagist`, `php` | Packagist |
## 缓存
网络结果在本地缓存,以保持扫描快速。
| 数据 | TTL | 位置 (macOS) |
|---|---|---|
| 漏洞公告 (OSV.dev) | 1 小时 | `~/Library/Caches/devscan/` |
| Runtime 最新版本 | 7 天 | `~/Library/Caches/devscan/versions/` |
在 Linux 上:`~/.cache/devscan/` · 在 Windows 上:`%LocalAppData%\devscan\`
随时强制重新查询:
```
devscan doctor --no-cache
```
## 配置文件
将 `.devscan.json` 放在你的项目根目录或 home 目录中:
```
{
"ignore": ["left-pad"],
"severity_threshold": "medium",
"ecosystems": ["npm", "pypi"],
"auto_fix": false
}
```
## 支持的生态系统
| 生态系统 | Runtime | Package | 漏洞 |
|---|---|---|---|
| Node.js / npm | ✓ | ✓ | ✓ 通过 OSV.dev |
| Bun | ✓ | ✓ (通过 npm) | ✓ 通过 OSV.dev |
| Python / pip | ✓ | ✓ | ✓ 通过 OSV.dev |
| PHP / Composer | ✓ | ✓ | ✓ 通过 OSV.dev |
| Rust / Cargo | ✓ | ✓ | ✓ 通过 OSV.dev |
| Go modules | ✓ | ✓ (项目) | ✓ 通过 OSV.dev |
| Ruby / Gem | ✓ | ✓ | ✓ 通过 OSV.dev |
| Homebrew | — | ✓ | ✓ 通过 OSV.dev |
| VS Code 扩展 | — | ✓ (仅限黑名单) | ✓ 通过本地黑名单;OSV 的 `VSCode` ecosystem 存在,但暂无数据 |
| Git | ✓ | — | — |
漏洞数据来源于 [OSV.dev](https://osv.dev) ——这是一个开放的、社区驱动的漏洞数据库,涵盖 npm、PyPI、Go、crates.io、Packagist、RubyGems 等。
大型扫描(1000 多个 package)会自动分批处理,以保持在 OSV API 的限制范围内。
## Claude Code 集成
devscan 内置了一个 [Claude Code](https://claude.ai/code) skill,允许 AI agent 对任何项目运行 devscan——审计漏洞、扫描 secret、检查过时的 package 并生成报告。
一次性安装该 skill:
```
devscan install-skill
```
这会将该 skill 复制到 `~/.claude/skills/run-devscan/` 中,使得 `/run-devscan` 在每个 Claude Code 会话的所有项目中可用。
安装后,Claude 可以运行如下命令:
```
audit this project for vulnerabilities
scan for exposed secrets
check for outdated dependencies
generate an HTML report
look up GHSA-29mw-wpgm-hmr9
```
skill 的源码位于 [`cmd/skills/run-devscan/`](cmd/skills/run-devscan/) 并直接嵌入在二进制文件中——无需单独下载。
## 架构
```
devscan/
cmd/ # CLI commands (Cobra)
internal/
detectors/ # Runtime detection (node, bun, python, git, php, rust, go)
inspectors/ # Package inspection (npm, pip, composer, cargo, gomod, vscode extensions)
advisory/ # Vulnerability lookups (OSV.dev + local blocklists) with 1hr cache
intercept/ # Package manager shims — pre-install supply-chain blocking
intercept/managers/ # Per-manager argument parsing (npm, pip, cargo, bun)
versions/ # Runtime latest-version checks with 7-day cache
keyscanner/ # Secret and API key detection (file-based pattern scanning)
sysinfo/ # OS, chip, and architecture detection
traverse/ # Sub-project discovery by manifest files
output/ # Terminal renderers (table, JSON, compact)
report/ # Export renderers (Markdown, HTML, JSON)
schema/ # Shared types
```
JSON 输出 schema 是核心契约。CLI 以及未来的 TUI 和 GUI 层都是基于它的轻量级包装器。
## 路线图
- [x] Runtime 最新版本检查 — Go, Node, Bun, Python, PHP, Rust, Git
- [x] 所有受支持生态系统的修复命令
- [x] 使用 `--depth` 进行子项目遍历
- [x] 易受攻击 package 的文件系统路径
- [x] 报告中的系统信息(OS、芯片、架构)
- [x] HTML 和 Markdown 报告导出
- [x] Ruby / gem 支持
- [x] Homebrew package 检查
- [x] Secret 和 API key 扫描 (`devscan keyscan`)
- [x] `--include-keys` flag,用于在完整报告中添加 secrets 部分
- [x] 本地黑名单支持 — CSV 和 JSON 供应链攻击数据库 (`~/.devscan/resources/`)
- [x] `devscan compile`,用于将黑名单合并为快速单一索引
- [x] `devscan update-db`,用于从 Aikido Intel 获取最新数据库并重新编译
- [x] 针对 npm、pip、cargo、bun、go、composer 的安装前 intercept shim (`devscan intercept`)
- [x] Intercept:针对 `npm ci`、`bun install`、`composer install/update`、`go get` 的 lockfile 扫描
- [x] 用户公告 — 通过 `.devscan/advisories.yaml` 立即标记受损的 package,无需等待 OSV
- [x] `devscan osv` — 按包名、版本、公告 ID 或关键字搜索 OSV;导出为 HTML/Markdown/JSON
- [x] Claude Code skill — `devscan install-skill` 将 `/run-devscan` 安装到 `~/.claude/skills/` 以便在任何项目中进行 AI 辅助扫描
- [x] VS Code 扩展扫描 — 针对 OSV(`VSCode` ecosystem)和本地黑名单,审计 VS Code、Insiders、Cursor 和 Codium 中已安装的扩展
- [x] VS Code 扩展拦截 — `code --install-extension` shim 可在安装前阻止恶意扩展
- [ ] 系统 package manager — dpkg (Debian/Ubuntu)、rpm (Fedora/RHEL)、apk (Alpine)
- [ ] 基线差异对比 (`--compare baseline.json`)
- [ ] CI 摘要输出(GitHub Actions 批注)
- [ ] `--ignore` flag,用于屏蔽已知/接受的公告
## 许可证
MIT
标签:EVTX分析, Go, LNA, Ruby工具, SOC Prime, StruQ, 依赖管理, 域名收集, 开发工具, 文档结构分析, 日志审计, 环境健康监测, 软件成分分析(SCA)