Skiver004/python-sast-scanner
GitHub: Skiver004/Application-Security-Platform
一款基于正则表达式与 AST 污点追踪的双趟 SAST 引擎,用于在 CI 流水线中自动检测 Python Flask 应用中的安全漏洞。
Stars: 0 | Forks: 0
# 应用安全作品集:自动化 SAST 分析引擎
## 执行摘要
作为一名专注于网络安全(IBM/ISC2)的计算机科学毕业生(UoPeople),我构建了这个双趟静态应用安全测试(SAST)框架,以展示在持续集成 pipeline 中自动检测安全缺陷的过程。
该仓库将一个包含故意设计漏洞的 Python Flask Web 环境与一个自定义的静态分析器相结合,该静态分析器用于在部署前审查代码库逻辑中存在的严重漏洞。
## 技术架构
* **第一趟(正则表达式处理模块):** 使用优化的正则表达式逐行扫描目标目录,以快速识别表面级别的不良实践(例如,硬编码参数、未经验证的系统命令)。
* **第二趟(AST 污染追踪器):** 生成目标应用程序代码的抽象语法树(AST),以将动态用户输入从接入点直接追踪到处理循环中,从而拦截隐藏的注入路径。
## 自动化扫描器审计日志
执行后,该自定义引擎成功审计了该仓库,并标记了以下操作安全风险:
* **[SQL-001/002/003] [严重]** 在执行循环内部直接使用了不安全的字符串格式化和输入拼接。
* **[SEC-001] [严重]** 在原始脚本文件中暴露了硬编码的配置密钥和身份验证 token。
* **[SEC-003/004] [严重]** 包含未经验证的 `eval()` 和 `exec()` 语句的高风险任意执行逻辑。
* **[SEC-005/006] [高]** 实现直接调用 `os.system()` 和未受监控的 subprocess 的危险系统 shell 配置。
* **[SEC-002] [中]** 生产基础设施在激活详细应用程序参数的情况下运行(`debug=True`)。
## 应用的工程修复措施
1. **参数化查询:** 通过重构数据数组以强制执行显式的查询参数化,而不是使用字符串拼接,从而缓解了 SQL 注入攻击向量。
2. **环境封装:** 移除了硬编码的变量,将目标凭据移动到安全的环境变量(`os.getenv`)中。
3. **安全的 API 方法:** 弃用了不稳定的运行时函数(`eval`、`exec`),转而使用严格的、原生的逻辑块。
标签:CISA项目, DOE合作, Flask, Python, StruQ, 无后门, 自动化payload嵌入, 自动化攻击, 逆向工具, 静态代码分析(SAST)