alias454/security-workbench
GitHub: alias454/security-workbench
一个本地确定性安全工件分析 CLI 工作台,通过插件化工作流将解析、审查、评分和发现生成串联为可重复的流水线。
Stars: 0 | Forks: 0
# Security Workbench
Security Workbench 是一个 CLI 工作台,用于可重复的安全工件任务:解析、转换、规范化、审查和导出。
Security Workbench 旨在从一个 CLI 工作台发展成为支持有据可查的技能和已注册工作流的共享运行时。未来的适配器(如 REST API、本地 Web UI 和 MCP)应复用该运行时路径,而不是成为单独的分析引擎。
当前的构建特意设计为本地且确定性的。常规工件(如编码的 blob、URL、标头、JSON、CSV、YAML、Dockerfile、GitHub Actions 工作流、扫描器输出、JWT 和清单)应在决定是否需要 AI 或外部扩充之前进行解析和规范化。
```
artifact or text blob
→ parse / transform
→ extract useful structure
→ review supported signals
→ score review attention
→ generate draft finding output
```
## 当前状态
已实现:
```
TypeScript monorepo
pnpm workspace
packages/schemas
packages/core
plugins/core-utilities
plugins/core-parsers
plugins/plugin-network-registries
plugins/plugin-mac-oui
plugins/core-reviewers
plugins/core-scoring
plugins/core-output
apps/cli
single-skill registry and runner
registered workflow registry and runner
workflow definition validation
CLI workflows list / run
runtime policy enforcement
safe bounded --input-file handling
runtime redaction helpers
shared safe pretty-output rendering
first-party workflow display models
fixture-backed smoke script
```
当前接口:
```
CLI only
```
尚未实现:
```
plugin manifest loader
plugin install commands
external enrichment
REST API
web UI
MCP server
local persistence
```
## 安装
安装依赖项:
```
pnpm install
```
将本地检出安装为 `security-workbench` CLI 命令:
```
pnpm cli:install-local
```
对于不想安装全局命令的开发,可以使用仓库本地快捷方式:
```
pnpm sw workflows list --format table
```
## 常用命令
发现:
```
security-workbench help
security-workbench list
security-workbench skills list
security-workbench workflows list --format table
```
运行单个技能:
```
security-workbench skills run json_parse --input '{"ok":true}'
```
运行已注册的工作流:
```
security-workbench workflows run jwt_review \
--input-file fixtures/jwt/alg-none.jwt \
--format pretty
```
有关面向任务的命令,请参阅 `docs/USE_CASES.md` 和 `docs/recipes/README.md`。
## 输出格式
Security Workbench 支持机器可读和人类可读的输出。
```
--format json complete structured run output; source of truth for automation
--format pretty bounded human-readable view for CLI review and manual QA
```
JSON 输出是用于自动化、链式操作、测试以及未来 API/Web/MCP 适配器的权威契约。它保留了完整的运行信封、运行时元数据、技能输出、警告和错误。
美化输出仅用于展示。它通过共享的输出视图路径按以下顺序渲染:
```
1. plugin-provided output.display model
2. existing skill-specific CLI renderer for retained legacy/simple skills
3. common structured fallback for artifact/observed/signal shapes
4. flat key/value fallback for simple primitive outputs
5. sanitized compact JSON fallback
```
已注册工作流的最终输出应提供作者预先编写的 `output.display` 模型,这样人类就不必阅读原始的嵌套 JSON。当前的已注册工作流由第一方显示模型覆盖:
```
browser_extension_review -> generate_browser_extension_finding
static_analysis_triage -> generate_static_analysis_triage_summary
certificate_review -> review_certificate
jwt_review -> review_jwt
sbom_review -> review_sbom
package_manifest_review -> review_package
lockfile_review -> review_package
```
显示模型是声明式展示数据。插件返回行、项目符号部分和有界表格;CLI 负责验证并安全地渲染它们。显示内容被视为不受信任。渲染器不执行命令、不读取文件、不获取 URL、不展开模板、不导入回调、不渲染原始 HTML,也不创建可点击的链接。渲染后的字符串在被写入终端之前,会经过限制大小、清理、脱敏和去毒处理。
有关插件作者指南,请参阅 `docs/plugins/README.md` 和 `docs/plugins/MAINTENANCE.md`。
## 当前已完成的链
第一个已注册的从工件到发现的的工作流是浏览器扩展权限审查:
```
parse_browser_extension_manifest
→ review_browser_extension_permissions
→ score_browser_extension_risk
→ generate_browser_extension_finding
```
第二个已注册的工作流是静态分析分类:
```
parse_sarif
→ review_static_analysis_results
→ score_static_analysis_attention
→ generate_static_analysis_triage_summary
```
其他已注册的从解析器到审查者的工作流涵盖了明确的本地审查链:
```
parse_pem_certificate
→ review_certificate
parse_jwt
→ review_jwt
parse_sbom
→ review_sbom
parse_package_json
→ review_package
parse_lockfiles
→ review_package
```
其他本地链示例可作为单个技能运行提供:
```
lookup_ip_prefix_membership_local
→ review_prefix_membership
lookup_asn_membership_local
→ review_asn_membership
```
详细行为位于核心解析器、审查者、评分和输出插件文档中。
## 验证
```
pnpm build
pnpm test
pnpm typecheck:test
./security-workbench-full-smoke.sh
```
在验证隔离区域时,也可以按明确的部分运行 Smoke:
```
./security-workbench-full-smoke.sh --list-sections
./security-workbench-full-smoke.sh --section plugin:network-registries
```
## 安全扫描
Security Workbench 拥有用于本地 SAST 验证的 Semgrep 基线。该基线侧重于实现层面的发现,并有意排除了包含合成攻击者形状输入的夹具/测试工件。
有关 Semgrep 命令、预期结果和排除理由,请参阅 `docs/SECURITY_MODEL.md`。
## 文档
- [`docs/ENGINEERING.md`](docs/ENGINEERING.md) — 运行时、仓库布局、实现规则
- [`docs/ROADMAP.md`](docs/ROADMAP.md) — 当前待办事项和实现顺序
- [`docs/SECURITY_MODEL.md`](docs/SECURITY_MODEL.md) — 信任边界、隐私、暴露、输出安全
- [`docs/FIXTURES.md`](docs/FIXTURES.md) — 夹具策略和清单
- [`docs/USE_CASES.md`](docs/USE_CASES.md) — 从工件到命令的快速映射
- [`docs/recipes/README.md`](docs/recipes/README.md) — 复制/粘贴工作流配方
- [`docs/plugins/README.md`](docs/plugins/README.md) — 插件和技能清单
- [`docs/plugins/*.md`](docs/plugins/) — 各插件的行为和限制
## 安全态势
默认态势:
```
network disabled unless explicitly enabled
persistence disabled unless explicitly enabled
redaction enabled by default
external binaries denied by default
plugin-owned filesystem access denied by default
API/web/MCP exposure not implemented
```
本地意味着由所有者控制:在明确需要外部分析之前,工件始终保留在用户的安全边界内。
标签:API调用, TypeScript, 制品分析, 安全工作台, 安全插件, 自动化攻击, 解析与标准化