Kefmat/web3-guard-sentinel

GitHub: Kefmat/web3-guard-sentinel

一款企业级 DevSecOps 静态安全测试与软件组成分析工具,实时审计项目依赖漏洞并检测 Solidity 智能合约的结构性安全风险。

Stars: 0 | Forks: 0

# Web3-Guard Sentinel Web3-Guard Sentinel 是一款专为企业级区块链生态系统设计的静态应用安全测试 (SAST) 工具和软件组成分析 (SCA) 引擎。它通过比对实时的漏洞数据源来评估项目 lockfile 中的依赖项,并对 Solidity 智能合约执行基于模式的静态分析,从而在 DevSecOps pipeline 中实现自动化安全合规。 ## 系统架构与数据流 该引擎采用解耦的模块化设计,以最大化执行速度并保持严格的关注点分离。 ``` graph TD A[CLI Input / CI Pipeline] --> B(Sentinel Core Orchestrator) B --> C{Asset Discovery Engine} C -->|package-lock.json / package.json| D[SCA Dependency Audit Module] C -->|*.sol| E[Solidity Static Analysis Module] D --> F[Local Threat Registry Fallback] D --> G[Google Upstream OSV API Feed] E --> H[AST-Heuristic Line Tokenizer] F --> I[Unified Report Aggregator] G --> I H --> I I --> J[JSON Structural Export] I --> K[Markdown Compliance Log] I --> L[Interactive HTML Dashboard] I --> M{Policy Enforcement Engine} M -->|Breach Detected| N[Process Exit 1 / Break Build] M -->|Compliant| O[Process Exit 0 / Pass Build] ``` ## 模块分解 1. **Orchestrator Context** (`sentinel.ts`):初始化核心服务,利用原生的跨平台参数解析功能 (util.parseArgs) 处理参数,并配置执行阈值。 2. **SCA Engine** (`scanner.ts`):检测并解包完整的 package 依赖图,解析顶层 manifest 库以及嵌套的传递性子依赖,然后再运行异步查询。 3. **Upstream Broker** (`osvService.ts`):与 Google 的 Open Source Vulnerability (OSV) API 数据库交互,以查询实时的安全公告。 4. **Solidity Parser** (`contractScanner.ts`):按顺序读取智能合约源代码,以识别已知的漏洞反模式。 5. **Automation Compliance Reporter** (`fileReporter.ts`):收集扫描结果,用于编排并生成简洁的 Markdown、JSON 以及主题隔离的单页 HTML dashboard。 ## 核心功能 - **传递依赖图分析**:解包完整的 lockfile 树(支持 package-lock.json v1、v2 和 v3 格式),以检测深层的、嵌套的以及隐藏的下游安全风险。 - **实时威胁情报**:通过高性能的 promise pool 设计,并发查询实时的分布式 CVE 和 GitHub Advisory (GHA) 数据源。 - **智能合约静态分析**:对原始 .sol 文件进行分词,以标记结构性漏洞、安全 bug 和设计反模式。 - **Pipeline 强制执行 (Policy-as-Code)**:支持严格的安全等级阈值 (--fail-on HIGH),以便在引入严重风险时中断自动化的 CI/CD 构建。 - **零依赖 Runtime 映射**:使用纯现代 ECMAScript Modules (ESM) 和 Node.js 核心 API 原生运行,以实现最佳的安全性和效率。 ## Solidity 检测向量 智能合约扫描器实现了逐行的模式匹配,以防范系统性的 Web3 攻击向量。 | 漏洞向量 | 严重程度 | 审计标记条件 | 风险上下文 | | --- | --- | --- | --- | | 重入漏洞 | CRITICAL | 在本地状态余额修改之前执行了底层 `call{value: ...}`。 | 违反了 Checks-Effects-Interactions 模式;允许状态重入以耗尽智能合约余额。 | | 不安全的访问控制 | HIGH | 在评估断言或条件守卫中使用了 `tx.origin`。 | 使管理功能暴露于钓鱼攻击和伪造来源的代理干预漏洞中。 | | 过时的编译器规范 | MEDIUM | 使用了已弃用的编译器版本(例如 `^0.4.x`、`^0.5.x`、`^0.6.x`)。 | 使 bytecode 容易受到已知的、历史性的、未修复的编译器级别处理 bug 的影响。 | ## 执行演示与可视化 Dashboard image ## 快速开始 ### 前置条件 - Node.js v20.0.0 或更高版本 - TypeScript v5.0.0 或更高版本 ### 安装说明 克隆代码仓库并安装开发者依赖: ``` git clone https://github.com/Kefmat/web3-guard-sentinel.git cd web3-guard-sentinel npm ci ``` ### 运行 在本地编译并运行该工具: ``` npm run build && npm start ``` ### 示例:强制执行 HIGH 严重程度 ``` node dist/sentinel.js --fail-on HIGH ``` ## 持续集成 (DevSecOps) 该工具经过优化,可在 CI 环境中运行。它会在每次 `push` 或 `pull_request` 时自动生成 artifact 合规性输出。 ``` sequenceDiagram autonumber participant Developer as Dev / Git Push participant Runner as GitHub Actions Runner participant Tool as Web3-Guard Sentinel participant API as Live OSV API Developer->>Runner: Trigger Pipeline (.github/workflows) Runner->>Runner: Check out code & Build Environment Runner->>Tool: Execute (node dist/sentinel.js --dir ./ --fail-on HIGH) Tool->>API: Query Transitive Package Matrix (POST) API-->>Tool: Stream Live Vulnerability JSON Tool->>Tool: Execute Solidity Structural Static Analysis Tool->>Runner: Output JSON, Markdown, and HTML Dashboard Artifacts alt Vulnerability Weight >= Policy Threshold Tool->>Runner: Terminate Execution (Exit Code 1) Runner-->>Developer: Build Failed / Deployment Blocked else Clean / Compliant Run Tool->>Runner: Terminate Execution (Exit Code 0) Runner-->>Developer: Build Passed / Deployment Authorized end ```
标签:DevSecOps, MITM代理, Web3, 上游代理, 智能合约审计, 自动化攻击, 静态应用安全测试