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
[](https://go.dev)
[](https://github.com/silasdev78/silas-code-inspector/actions)
[](LICENSE)
[](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区块链, 日志审计, 智能合约安全, 请求拦截, 软件开发工具, 静态代码扫描