aalborz/ai-website-security-agent

GitHub: aalborz/ai-website-security-agent

一款专为 AI 生成 Web 项目设计的零依赖 Python 静态安全扫描工具,检测凭据泄露、OWASP LLM Top 10 风险和常见 Web 漏洞。

Stars: 0 | Forks: 0

# AI 网站安全 Agent 一款无依赖的 Python 静态安全扫描工具,专为 AI 生成的 Web 项目设计。 它能够扫描源码树,检测不安全存储的凭据、**OWASP Top 10 for LLM Applications 2025** 以及常见的 Web 漏洞。 ## 用法 ``` # 扫描一个或多个项目(或父文件夹 - 项目会被自动发现) python -m scanner "C:\path\to\site" "C:\path\to\folder-of-sites" --out reports ``` 要求 Python 3.10+。无需任何第三方包。 输出结果: - 控制台摘要(按严重程度排序) - `reports/scan-report.md` — 按项目和类别分组的人类可读报告 - `reports/scan-results.json` — 机器可读的结果 退出代码:`0` 表示正常,`1` 表示中/低危发现,`2` 表示高危,`3` 表示严重 (可用作 CI 门禁)。 ## 检测内容 ### 凭据与机密信息 (SEC001–SEC022) - 提供商密钥:AWS, OpenAI, Anthropic, Google, GitHub, Stripe, Slack, Twilio, SendGrid - 私钥材料(`-----BEGIN PRIVATE KEY-----`),JWTs,包含内嵌密码的连接 字符串,硬编码的密码/机密信息赋值 (通过熵值过滤跳过占位符) - 通过 `NEXT_PUBLIC_` / `VITE_` / `REACT_APP_` 暴露给浏览器的机密信息 - 在 `"use client"` 组件中引用的 Supabase `service_role` 密钥 - 未包含在 `.gitignore` 中的 `.env` 文件,位于构建/公开输出目录中的 `.env`,以及同步到云存储 (OneDrive) 的机密信息 ### OWASP Top 10 for LLM Applications 2025 | ID | 风险 | 检测示例 | |---|---|---| | LLM01 | 提示词注入 (Prompt Injection) | 用户输入被插入到 prompts / system role 中 | | LLM02 | 敏感信息泄露 | prompt 文本中包含机密信息、记录 prompt/response 日志 | | LLM03 | 供应链问题 | 未锁定的依赖、git/http 依赖、缺少 lockfile、`trust_remote_code` | | LLM04 | 数据与模型投毒 | 将不受信任的 Web 内容提供给 embeddings/训练 | | LLM05 | 输出处理不当 | LLM 输出到 innerHTML / eval / SQL / 未净化的 markdown | | LLM06 | 过度授权 | 具备 shell/文件系统访问权限的 agent 工具、自动批准 | | LLM07 | 系统提示词泄露 | 客户端代码中的系统 prompts、prompts 中的凭据 | | LLM08 | 向量/嵌入漏洞 | 未经身份验证的向量数据库客户端 | | LLM09 | 误导信息 | 在健康/法律/金融场景下未加限制的模型输出 | | LLM10 | 无限制消耗 | 缺少 `max_tokens`、缺少速率限制的 LLM 应用 | ### 经典 Web 漏洞 (WEB001–WEB015) XSS 注入点(`dangerouslySetInnerHTML`、`innerHTML`、`eval`),SQL/命令 注入模式,通配符 CORS,调试模式,不安全的 cookies,弱密码哈希,禁用 TLS 验证,不安全的反序列化,开放重定向,混合内容,未经身份验证的状态 修改型 API 路由(启发式检测),以及缺失的安全标头。 ## 准确性说明 - 报告中的机密信息值已被**脱敏**(中间部分被掩码),因此报告 本身不会造成二次泄露。 - 占位符值(如 `your_key_here`、`process.env.X`、`.example` 文件)会被 抑制;通用的机密信息匹配会进行熵值过滤。 - `INFO` 发现项(例如 WEB014 身份验证检查启发式规则)仅供人工审查参考, 并非已确认的漏洞。 - 这是一个静态分析工具:它无法确认漏洞的可利用性。请将 CRITICAL 级别的 机密信息发现视为已泄露,并及时对其进行轮换。 ## 目录结构 ``` scanner/ __main__.py CLI + project auto-discovery engine.py file walker, rule application, project-level checks rules.py all detection rules (secrets, LLM Top 10, web) report.py console / JSON / Markdown reporting ``` 添加规则:在 `rules.py` 中相应的部分下追加一个 `_r(...)` 条目。
标签:AI安全, Chat Copilot, DLL 劫持, LNA, Python, StruQ, Web安全, 大语言模型, 无后门, 蓝队分析, 逆向工具, 静态应用安全测试