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, 制品分析, 安全工作台, 安全插件, 自动化攻击, 解析与标准化