lordbasilaiassistant-sudo/solidity-security-scanner
GitHub: lordbasilaiassistant-sudo/solidity-security-scanner
一个零依赖的 Solidity 智能合约安全扫描 CLI 工具,通过正则表达式静态分析检测重入攻击、权限控制等 15 种常见漏洞模式。
Stars: 0 | Forks: 0
# solidity-security-scanner
用于扫描 Solidity 智能合约常见漏洞的 CLI 工具。零外部依赖 —— 基于纯正则表达式的静态分析。
## 安装与使用
扫描单个文件:
```
npx solidity-security-scanner ./src/MyContract.sol
```
扫描目录(递归查找所有 `.sol` 文件):
```
npx sol-scan ./src/
```
以 JSON 格式输出:
```
npx sol-scan ./src/ --json
```
## 扫描内容
涵盖 5 个严重级别的 15 种漏洞模式:
### Critical(严重)
1. **Reentrancy(重入攻击)** -- 状态更改之前的外部调用(`.call{`, `.transfer(`, `.send(`)
2. **Unchecked call(未检查调用)** -- `.call{` 未检查返回值
3. **tx.origin** -- 使用 `tx.origin` 进行授权
### High(高危)
4. **Delegatecall** -- 使用 `delegatecall`(若目标受用户控制则非常危险)
5. **Selfdestruct** -- 使用 `selfdestruct`(可能被武器化利用)
6. **Arbitrary send(任意发送)** -- `.call{value:` 携带潜在用户可控的目标地址
7. **Unprotected function(未受保护函数)** -- 无访问控制的 public/external 状态更改函数
### Medium(中危)
8. **Floating pragma(浮动 pragma)** -- 使用 `pragma solidity ^` 而非固定版本
9. **Missing zero check(缺少零地址检查)** -- 构造函数或 setter 未验证 `address(0)`
10. **Timestamp dependence(时间戳依赖)** -- 在比较中使用 `block.timestamp`
11. **Unsafe ERC20(不安全 ERC20)** -- 直接对 IERC20 调用 `.transfer()` 或 `.transferFrom()` 而未使用 SafeERC20
### Low(低危)
12. **Missing events(缺少事件)** -- 状态更改函数没有 `emit` 语句
13. **Gas in loop(循环中消耗 Gas)** -- for/while 循环内的外部调用
14. **Magic numbers(魔法数字)** -- 应定义为命名常量的硬编码数字
### Info(信息)
15. **Missing NatSpec(缺少 NatSpec)** -- 函数缺少 `///` 或 `/**` 文档注释
## 输出
带有严重级别颜色区分的终端输出:
```
Scanning MyContract.sol...
[CRITICAL] Reentrancy vulnerability (line 42)
External call before state update: .call{value: amount}
[HIGH] Unprotected function (line 78)
Public function modifyBalance() has no access control
Summary: 1 critical, 1 high, 3 medium, 2 low, 0 info
```
## 无外部依赖
纯 Node.js 实现的正则匹配。无需 AST 解析器,无需原生模块,几秒内即可完成安装。
## 许可证
MIT
由 [THRYXAGI](https://github.com/lordbasilaiassistant-sudo) 构建
标签:Gas优化, LNA, MITM代理, NPM包, OSV-Scalibr, Solidity, Streamlit, TLS, Web3安全, 云安全监控, 以太坊, 动态分析, 区块链安全, 后端服务, 文档安全, 文档结构分析, 智能合约审计, 脚本检测, 自定义脚本, 访问控制, 配置审计, 重入攻击检测, 防御工具, 静态分析