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安全, 云安全监控, 以太坊, 动态分析, 区块链安全, 后端服务, 文档安全, 文档结构分析, 智能合约审计, 脚本检测, 自定义脚本, 访问控制, 配置审计, 重入攻击检测, 防御工具, 静态分析