Piy26ush/SecureLens

GitHub: Piy26ush/SecureLens

SecureLens 是一个面向 Python 代码的 AI 辅助安全审计平台,通过 AST 静态分析与 RAG 检索增强生成,自动检测漏洞并生成风险报告、攻击模拟和修复建议。

Stars: 1 | Forks: 0

# 🛡️ SecureLens v1.0 — AI 辅助安全代码审计工具 SecureLens 是一个高级的、面向开发者的安全审计平台,它使用静态分析扫描 Python 源代码中的漏洞,从本地安全知识库中检索上下文,并利用 Gemini 3.5 和 Groq Llama 3.3 模型生成详细的风险报告、攻击场景以及并排的安全代码修复方案。 ## 🏗️ 架构与请求流程 SecureLens 使用多层静态分析和 RAG(Retrieval-Augmented Generation,检索增强生成)pipeline: ``` graph TD A[Python Code Input] --> B[AST Static Rules Engine] B -->|Flagged Snippet + Line| C[VSM TF-IDF RAG Retriever] C -->|Retrieve OWASP/CWE KB Context| D[Dual-Provider LLM Orchestrator] D -->|Primary: Gemini 3.5 Flash| E[JSON Audit Report] D -->|Backup: Groq Llama 3.3| E D -->|Offline Fallback| E E --> F[Vite React Dashboard] ``` 1. **AST 分析**:Python 源代码使用 9 条高度特定的安全规则(SQLi、Command Injection、Path Traversal、eval/exec、不安全的 pickle、硬编码的 secrets、弱哈希、裸 except 块和 debug 模式)被解析为抽象语法树(AST)。 2. **VSM RAG 检索**:当标记出漏洞时,其 AST 上下文将发送到自定义的 TF-IDF Vector Space Model (VSM) 检索器,该检索器查询我们本地的 OWASP/CWE 知识库以查找匹配的文档。 3. **双 LLM 编排**:组合后的代码上下文和知识库文档将被结构化为一个 prompt 并发送给 LLM 客户端。它会优先尝试 Google **Gemini 3.5 Flash**,如果 Gemini 失败或受到速率限制,则故障转移到 **Groq Llama 3.3**;如果互联网或 API keys 不可用,则回退到高质量的**离线模板**。 ## ⚡ 功能与特性 * **漏洞检测**: * **SQL Injection (SQLi)**:SQL 查询中的直接字符串拼接。 * **Command Injection (CmdI)**:在系统 shell 中执行未经过滤的输入(`os.system`, `subprocess.call`)。 * **Path Traversal**:传递给文件系统 API 的未经检查的输入。 * **Remote Code Execution (RCE)**:危险使用 `eval()` 或 `exec()`。 * **不安全的反序列化**:对不受信任的输入数据使用 `pickle.loads`。 * **硬编码的 Secrets**:以纯文本形式嵌入的 AWS keys、JWT secrets 和 tokens。 * **弱哈希**:如 MD5 或 SHA1 等不安全的哈希算法。 * **裸 Excepts**:盲目捕获所有异常(会隐藏 runtime 错误)。 * **Debug 模式**:在 Web 应用的生产环境文件中保持 `debug=True` 处于激活状态。 * **VS-Code 级别的 UI**:带有演示模板的 Monaco 编辑器面板、可视化指标卡片、按严重程度分组的徽章,以及并排对比的代码 diff(带有复制到剪贴板功能)。 ## 🔌 API 文档 ### POST `/api/scan` 对提供的 Python 代码字符串执行安全扫描 pipeline。 * **请求头**:`Content-Type: application/json` * **请求体**: { "code": "import os\nos.system('ping ' + input_host)" } * **响应体 (200 OK)**: { "findings": [ { "type": "command_injection", "line": 2, "severity": "HIGH", "snippet": "os.system('ping ' + input_host)", "cwe_id": "CWE-78", "owasp_id": "A03:2021", "owasp_category": "Injection", "explanation": "关于此命令执行为何危险的详细说明...", "attack_scenario": "攻击者传入 '; rm -rf /' 以执行未经授权的 shell 命令。", "fix_snippet": "import subprocess\nsubprocess.run(['ping', '-c', '1', input_host])", "source_citation": "OWASP/CWE Local Reference" } ], "total": 1, "risk_score": "HIGH", "lines_scanned": 2 } ### GET `/api/health` 返回 scanner API 的状态。 * **响应体**: { "status": "ok", "message": "Securelens service is running" } ## 🚀 设置与本地执行 ### 1. 后端设置 配置您的环境 keys 并启动 FastAPI uvicorn 服务器: ``` # 导航到项目根目录 cd SecureLens # 安装 Python 依赖 python3 -m pip install fastapi pydantic uvicorn python-dotenv --break-system-packages # 将你的 API keys 添加到根目录下的 .env 文件中 # 打开 .env 并添加: # GEMINI_API_KEY=your_key # GROQ_API_KEY=your_key # 启动服务器 python3 -m uvicorn backend.main:app --reload --port 8000 ``` *通过检查 [http://localhost:8000/api/health](http://localhost:8000/api/health) 来验证其是否正在运行。* ### 2. 前端设置 安装 packages 并启动 Vite 开发服务器: ``` # 安装 node 包 npm install # 启动 Vite 服务器 npm run dev ``` *在浏览器中打开打印出的本地地址(通常是 [http://localhost:5173](http://localhost:5173))。* ## 📦 部署与标记 * **前端**:设置 `VITE_API_URL` 指向您正在运行的后端 endpoint,并部署在 Vercel 或 Netlify 上。 * **后端**:将 `backend/` 文件夹部署在 Railway、Render 或任何 VPS 上。 * **发布标签**:在 Git 中将此稳定版本标记为 `v1.0.0`: git tag -a v1.0.0 -m "Release SecureLens v1.0 - Stable Dual-LLM Auditing Dashboard" git push origin v1.0.0
标签:DLL 劫持, Python, RAG, 云安全监控, 人工智能, 大语言模型, 数据泄露, 无后门, 用户模式Hook绕过, 自动化攻击, 逆向工具, 静态分析