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绕过, 自动化攻击, 逆向工具, 静态分析