silasdev78/silas-code-inspector

GitHub: silasdev78/silas-code-inspector

一款支持 TON 智能合约(Tact/FunC)及 Go、Docker、Web 的多语言静态安全扫描器,内置 90+ 漏洞检测模式并适配 CI/CD 流水线。

Stars: 0 | Forks: 0

# 🔍 Silas Code Inspector [![Go Version](https://img.shields.io/github/go-mod/go-version/silasdev78/silas-code-inspector)](https://go.dev) [![Build](https://img.shields.io/github/actions/workflow/status/silasdev78/silas-code-inspector/silas.yml?branch=main)](https://github.com/silasdev78/silas-code-inspector/actions) [![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/silasdev78/silas-code-inspector)](https://github.com/silasdev78/silas-code-inspector/releases) **Silas Code Inspector** 是一款多语言静态安全扫描器,旨在发现 **TON 区块链智能合约 (Tact & FunC)** 以及 Go、Docker 和 Web 代码库中的漏洞。包含超过 **90 种安全模式**、自适应学习、支持导出 JSON/SARIF,并且已为 CI/CD 做好准备。 ## ✨ 功能 - ⚡ **90+ 种 TON 模式** – 45 种用于 Tact,45 种用于 FunC(重放、竞态条件、cell 深度、impure 等) - 🧠 **自适应学习** – 模式权重通过反馈进行调整 (`.silas-state.json`) - 📦 **Go 依赖项 CVE 扫描器** – 对照已知的 CVE 检查您的 `go.mod` - 🐳 **Docker & Web 扫描器** – 硬编码密钥、XSS、CSRF、root 用户、CVE 检查 - 🌈 **彩色终端输出** + JSON / SARIF 导出 (GitHub Code Scanning) - 🧹 **注释过滤** 且 **仅分析有意义的 `receive`** – 低噪音 - 📊 **摘要模式** (`--summary`) 用于快速概览 - 🔌 **CLI 优先**,为 CI/CD 和未来的 API 做好准备 - ⚙️ **GitHub Actions** – 在每次 push 和 PR 时自动扫描您的代码 ## 📋 支持的语言与扩展名 | 语言 / 目标 | 扩展名 | 模式数量 | 备注 | |-------------------|------------|----------|-------| | **Tact (TON)** | `.tact` | 45 | 智能合约安全 (Jetton, NFT, DeFi) | | **FunC (TON)** | `.fc`, `.fif` | 45 | 旧版 TON 合约 | | **Go** | `.go` | 8 | 硬编码密钥、TLS、SQL 注入、加密 | | **Go modules** | `go.mod` | CVE 源 | 对照已知漏洞检查依赖项 | | **Docker** | `Dockerfile` | 4 | root 用户、HEALTHCHECK、latest 标签 | | **Web** | `.html`, `.js`, `.ts` | 4 | XSS、CSRF、混合内容、innerHTML | ## 🚀 快速开始 ### 前置条件 - 已安装 Go 1.22+ - Git ### 从源码安装 ``` go install github.com/silasdev78/silas-code-inspector/cmd/silas@latest ``` ### 或本地构建 ``` git clone https://github.com/silasdev78/silas-code-inspector.git cd silas-code-inspector make build ./silas --help ``` ## 📖 用法 ### 扫描单个文件 ``` silas contract.tact ``` ### 扫描整个目录(并发执行) ``` silas ./my-ton-project/ ``` ### 强制指定语言 ``` silas --lang func wallet.fc ``` ### 输出格式 ``` # 用于进一步处理的 JSON silas --output json ./src > report.json # 用于 GitHub Code Scanning 的 SARIF silas --output sarif ./src > results.sarif # 摘要(仅包含按严重程度和 pattern 的计数) silas --summary ./contracts/ ``` ### 启用自适应学习 ``` silas --learner ./contracts/ ``` 权重保存在 `.silas-state.json` 中,并根据您的手动反馈进行更新。 ## 🔎 漏洞报告示例(文本模式) ``` ✗ contract.tact: 9 issues found. • Missing seqno check Severity: CRITICAL | Line: 4 Code: receive(msg: Message) { Fix: Add require(self.seqno == msg.seqno) inside receive(). • Unprotected selfdestruct Severity: CRITICAL | Line: 7 Code: selfdestruct(); Fix: Wrap selfdestruct in a require with owner check. ... --- ``` ## 🛡️ 模式分类 (TON) ### Tact (45 种模式) | 分类 | 示例 | 严重性 | |----------|----------|----------| | 消息与网络攻击 | 缺失 seqno、未检查的 sender、签名重放、bounced 处理、竞态条件 | CRITICAL, HIGH | | 金融与逻辑 | 余额不足、先除后乘、溢出、双花 | CRITICAL, HIGH | | 访问控制 | 未受保护的 selfdestruct、缺失 modifier、不安全的代理、trait 问题 | CRITICAL, HIGH, MEDIUM | | Gas 与存储 | Gas 检查 / 预检查、无限循环、超大消息、存储租金、过多的 map | CRITICAL, HIGH, MEDIUM | | 标准与类型 | 不安全的序列化、`any` 类型、`Address?` 不匹配、伪造的 jetton、敏感数据 | HIGH, MEDIUM, LOW | | 代码质量 | 硬编码地址、原始汇编器、弃用的编译器、缺失的 invariant | INFO, HIGH | ### FunC (45 种模式) | 分类 | 示例 | 严重性 | |----------|----------|----------| | 外部消息 | 缺失 seqno、未检查的 sender、签名、超时、重放 | CRITICAL, HIGH | | Gas 与状态 | 缺失 `impure`、验证前 raw_reserve、未经验证的 `set_data` | CRITICAL | | Cell 与 Slice | 原始操作、cell 深度、可变参数 | HIGH, MEDIUM | | 合约间交互 | 消息竞态、静默发送失败、未处理的 bounced、携带价值 (carry‑value) | CRITICAL, HIGH | | Jetton / NFT | 伪造通知、错误的 bounceable 标志、code hash 验证 | CRITICAL | | 数学与逻辑 | 整数作为布尔值、先除后乘、余额不足 | HIGH, CRITICAL | ## 📄 输出格式 | 格式 | 标志 | 用例 | |--------|------|----------| | **文本 (彩色)** | `--output text` (默认) | 人类可读的终端输出 | | **JSON** | `--output json` | 与其他工具集成 | | **SARIF 2.1.0** | `--output sarif` | 上传至 GitHub Code Scanning | | **摘要** | `--summary` | 快速概览发现结果 | ## 🔧 CI/CD 集成 (GitHub Actions) 此仓库包含一个工作流 (`.github/workflows/silas.yml`),它会执行以下操作: - 构建扫描器 - 在整个代码库中运行它(输出 SARIF) - 将结果上传至 **GitHub Code Scanning** 要启用它,只需 fork 该仓库并 push 到 `main`。该操作会在每次 push 和 pull request 时自动运行。 ## 📁 项目结构 ``` silas-code-inspector/ ├── cmd/silas/ # Cobra CLI entry point ├── internal/ │ ├── domain/ # Issue, Pattern, Severity models │ ├── engine/ # Scanner factory + per‑language scanners │ │ ├── tact/ │ │ ├── func/ │ │ ├── golang/ │ │ ├── docker/ │ │ ├── web/ │ │ └── gomod/ │ ├── knowledge/ # Pattern databases (45 Tact + 45 FunC + Go + Docker + Web + CVE) │ ├── report/ # JSON, SARIF, text formatters │ └── learner/ # Adaptive learning engine ├── .github/workflows/ # GitHub Actions ├── Makefile └── go.mod --- ``` ## 📃 许可证 本项目基于 **MIT License** 授权 – 详情请参阅 [LICENSE](LICENSE) 文件。 您可以自由使用、修改和分发本软件,甚至用于商业用途。 ## 🗺️ 路线图 - [x] 阶段 1:TON 扫描器 + CLI - [x] 阶段 2:Go、Docker、Web 扫描器 - [x] 阶段 3:CVE 源、SARIF、自适应学习器、CI/CD - [x] 阶段 3.5:FunC 支持(45 种模式)、注释过滤、摘要模式 - [ ] 阶段 4:Telegram 机器人 + TON 支付 (专业版) - [ ] 阶段 5:基于 AST 的竞态条件与重入分析 - [ ] 阶段 6:Solidity / Rust (Solana) 支持 - [ ] 阶段 7:用于 IDE 集成的 LSP server **由 [silasdev78](https://t.me/Silas_78) 用 ❤️ 构建**
标签:EVTX分析, LNA, TON区块链, 日志审计, 智能合约安全, 请求拦截, 软件开发工具, 静态代码扫描