arkanzasfeziii/Insecure-Deserialization-Scanner

GitHub: arkanzasfeziii/Insecure-Deserialization-Scanner

一款多语言不安全反序列化漏洞扫描器,整合静态代码分析、动态 HTTP 测试、序列化文件检查和网络流量分析于一体。

Stars: 0 | Forks: 0

# 不安全的反序列化扫描器 [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python 3.7+](https://img.shields.io/badge/Python-3.7%2B-blue)](https://www.python.org/) [![Lint](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2920a2cfd5151506.svg)](https://github.com/arkanzasfeziii/Insecure-Deserialization-Scanner/actions/workflows/lint.yml) [![Security Tool](https://img.shields.io/badge/Security-Vulnerability_Scanner-red)](https://owasp.org/www-community/vulnerabilities/Deserialization_of_untrusted_data) [![CWE-502](https://img.shields.io/badge/CWE-502-orange)](https://cwe.mitre.org/data/definitions/502.html) 先进的高级自动化漏洞检测工具,能够识别 7 种以上编程语言和框架中存在的不安全反序列化漏洞。它将静态源代码分析、基于 payload 的动态 HTTP 测试、二进制文件检查以及网络流量分析整合到了单一的工作流程中。 ## 功能 | 功能 | 详情 | |---|---| | 多语言静态分析 | Python, Java, PHP, .NET, Ruby, Node.js, XML | | 动态 HTTP 测试 | 带有响应分析的 POST/GET payload 注入 | | 序列化文件检查 | `.pkl`, `.ser`, `.yaml`, `.yml` 二进制分析 | | 网络流量分析 | 对传输中的序列化数据进行 PCAP 检查 | | Gadget 链检测 | Commons Collections, Fastjson, SnakeYAML 等 | | 报告格式 | 控制台(彩色输出)、JSON、HTML | | 交互模式 | 为新用户提供逐步引导提示 (`--easy`) | ## 可检测的漏洞 | 语言 | 危险模式 | 严重程度 | |---|---|---| | Python | `pickle.loads()`, `yaml.load()`, `marshal.loads()`, `dill.loads()`, `jsonpickle.decode()` | 严重 | | Java | `ObjectInputStream.readObject()`, `XMLDecoder`, Fastjson AutoType, Jackson CLASS typing | 严重 | | PHP | `unserialize()`, PHAR deserialization, `__wakeup`/`__destruct` 魔术方法 | 严重 | | .NET | `BinaryFormatter`, `NetDataContractSerializer`, `TypeNameHandling.All` | 严重 | | Ruby | `Marshal.load()`, `YAML.load()`, `Oj.object_load()` | 严重 | | Node.js | 用于 JSON 的 `eval()`, `new Function()`, `node-serialize`, 原型链污染 | 高 | | XML | 在未启用安全处理特性下通过 `DocumentBuilder`/`SAXParser` 导致的 XXE | 高 | ## 安装 ``` git clone https://github.com/arkanzasfeziii/Insecure-Deserialization-Scanner.git cd Insecure-Deserialization-Scanner pip install -r requirements.txt ``` 可选依赖(启用额外功能): ``` pip install scapy # PCAP / network traffic analysis pip install termcolor # Colored console output pip install pyyaml # YAML file analysis ``` ## 用法 ### 交互模式(推荐首次使用的用户) ``` python main.py --easy ``` ### 静态源代码分析 ``` # 扫描单个文件 python main.py --target app/utils.py --mode static # 扫描整个项目目录 python main.py --target /path/to/project --mode static --verbose # 限制为特定语言 python main.py --target src/ --type python --mode static ``` ### 动态 HTTP 测试 ``` # 将 payload 通过 POST 请求发送至 endpoint python main.py --target https://example.com/api/deserialize --mode dynamic # 使用 GET 方法 python main.py --target https://example.com/api --mode dynamic --method GET # 调整 timeout python main.py --target https://example.com/api --mode dynamic --timeout 30 ``` ### 序列化文件检查 ``` python main.py --target suspicious.pkl --mode full python main.py --target upload.ser --mode full python main.py --target config.yaml --mode full ``` ### 网络流量分析 ``` python main.py --target capture.pcap --mode full ``` ### 生成报告 ``` # HTML 报告 python main.py --target /path/to/project --output-html report.html # JSON 报告 python main.py --target /path/to/project --output-json report.json # 两者同时进行 python main.py --target /path/to/project --output-html report.html --output-json report.json ``` ## 示例输出 ``` ====================================================================== INSECURE DESERIALIZATION VULNERABILITIES DETECTED ====================================================================== Total Issues Found: 3 CRITICAL: 2 HIGH: 1 [1] CRITICAL - Unsafe pickle deserialization detected File: app/utils.py Line: 42 Language: PYTHON Reference: CWE-502: Deserialization of Untrusted Data Vulnerable Code: data = pickle.loads(request.data) Fix Recommendation: Avoid pickle for untrusted data. Use JSON or implement whitelist validation. [2] CRITICAL - Unsafe YAML deserialization (use safe_load) File: config/loader.py Line: 17 Language: PYTHON Reference: CWE-502: Deserialization of Untrusted Data Vulnerable Code: config = yaml.load(user_input) Fix Recommendation: Use yaml.safe_load() instead of yaml.load() [3] HIGH - Shelve uses pickle internally - unsafe for untrusted data File: cache/manager.py Line: 88 Language: PYTHON Reference: CWE-502: Deserialization of Untrusted Data Fix Recommendation: Validate file source or use SQLite instead. ``` ## CLI 参考 | 标志 | 简写 | 描述 | |---|---|---| | `--target TARGET` | `-t` | 要扫描的 URL、文件路径或目录 | | `--mode {static,dynamic,full}` | `-m` | 扫描模式(默认:`full`) | | `--type {python,java,php,...}` | `-y` | 强制指定的语言检测(默认:`auto`) | | `--method {GET,POST,PUT}` | | 用于动态测试的 HTTP 方法(默认:`POST`) | | `--easy` | `-e` | 交互式新手模式 | | `--output-json FILE` | `-oj` | 保存 JSON 报告 | | `--output-html FILE` | `-oh` | 保存 HTML 报告 | | `--simple` | `-s` | 简化控制台输出 | | `--verbose` | `-v` | 详细的进度输出 | | `--log-file FILE` | `-l` | 将日志写入文件 | | `--timeout SECONDS` | | HTTP 请求超时时间(默认:`30`) | | `--version` | | 打印版本信息并退出 | ## 序列化格式检测 | 格式 | 文件扩展名 | Magic Bytes / 特征签名 | |---|---|---| | Python Pickle | `.pkl`, `.pickle` | `\x80\x02`, `\x80\x03`, `\x80\x04` | | Java Serialized | `.ser`, `.serialized` | `\xac\xed\x00\x05` | | PHP Serialized | `.php` | `O:`, `a:` | | .NET BinaryFormatter | `.dat` | `AAEAAAD` (Base64) | | YAML (不安全的标签) | `.yaml`, `.yml` | `!!python/object` | ## 参考 - [OWASP:不受信任数据的反序列化](https://owasp.org/www-community/vulnerabilities/Deserialization_of_untrusted_data) - [CWE-502:不受信任数据的反序列化](https://cwe.mitre.org/data/definitions/502.html) - [PortSwigger:不安全的反序列化](https://portswigger.net/web-security/deserialization) - [PHP 对象注入](https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection) - [.NET BinaryFormatter 安全指南](https://learn.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide) ## 贡献 请查看 [CONTRIBUTING.md](CONTRIBUTING.md) 了解指南。 ## 许可证 MIT 许可证。有关详情,请参阅 [LICENSE](LICENSE)。
标签:CISA项目, 不安全反序列化, 云安全监控, 加密, 动态测试, 恶意代码分类, 漏洞扫描器, 逆向工具, 静态分析