flaw0-security/flaw0

GitHub: flaw0-security/flaw0

flaw0 是一个开放、可自托管的 AI 漏洞发现框架,通过对抗性验证和 PoC 沙箱在源代码中自动确认可利用漏洞,降低误报并确保结果可信。

Stars: 0 | Forks: 0

# flaw0 **以 Agent 的速度发现漏洞——抢在攻击者之前。** 一个开放、可自托管的漏洞发现框架。将其指向你的源代码; 它会进行狩猎、对抗性验证,并通过运行中的 概念验证来*证明*可利用的漏洞——使用你自己运行的开放模型, 确保代码永远不会离开你的网络。 [flaw0.com](https://flaw0.com) · [架构](docs/ARCHITECTURE.md) · Apache-2.0
## 为什么会有这个项目 前沿模型在发现漏洞方面已经变得非常出色。这是一把双刃剑:攻击者也能使用和你一样的模型。但是**防御者拥有攻击者所没有的优势——源代码,以及持续且详尽地审查它的自由。** flaw0 将这种优势转化为实际操作:在 CI 中、在每次提交时、在你自己的硬件上运行它,在*防御者*的时间轴上而不是攻击者的时间轴上发现漏洞。 **核心产品是框架本身,而不是模型。** 一个强大的模型如果仅配合简单的“在这个仓库中查找漏洞”提示词是不可靠的:它会模棱两可、产生幻觉,并让你淹没在误报之中。独立的基准测试证明了这一点——同一个模型会根据周围的框架产生数十分 F1 分数的波动。flaw0 就是这样的框架,它的设计初衷是: - **开放且可自托管。** 可以在 OpenAI 兼容或 ollama endpoint 后面对任何开放模型(GLM、Qwen、Llama 等)运行。你的源代码和发现结果都保留在你的基础设施中。没有 SaaS,没有数据外泄。 - **模型无关。** 框架会弥补模型的不足。较弱的开放模型?框架会提供严谨性——缩小任务范围、对抗性验证,以及客观的概念验证门控——从而确保结果值得信赖。 - **证明驱动。** 没有有效 PoC 的发现根本不算发现。这是抵御误报的最强有力防线。 ## 工作原理 ``` recon ──▶ hunt ──▶ verify ──▶ prove ──▶ report │ │ │ │ │ │ │ │ │ └─ SARIF (CI) + Markdown │ │ │ └─ generate a PoC, run it in a locked-down │ │ │ Docker sandbox. Fires? confirmed. Doesn't? dropped. │ │ └─ an adversarial panel whose ONLY job is to REFUTE, across │ │ distinct lenses (reachability / sanitizer / input-control). │ │ Majority refute ⇒ discarded. │ └─ decide if ONE small code region holds ONE exploitable bug class. │ A forced threat model (who's the attacker, which boundary) + a │ no-hedging schema keep even a weak model's output usable. └─ map the attack surface: enumerate source→sink candidates, hand the model hyper-focused, enclosing-function-sized regions (never the whole repo). ``` 三个理念承担了主要工作,也正是它们让 flaw0 不仅仅是一个提示词: 1. **狭窄范围。** 永远不要要求模型大海捞针。它一次只针对一个小的代码区域判断一种漏洞类型。 2. **对抗性验证。** 一个单独的 agent 会对*每个发现提出反驳*。刻意的分歧比告诉一个 agent 要“小心”能消除更多的误报。 3. **客观证明。** “漏洞利用是否真正触发了?”这个问题是通过实际运行来回答的,而不是询问模型有多大把握。这正是让较弱的自托管开放模型保持诚实的方式。 ## 快速开始 需要 Python 3.9+、Docker(用于 PoC 沙箱)以及在本地部署的开放模型。 ``` # 1. 提供一个开放模型。可以是 OpenAI 兼容的服务器(推荐): # 例如:在 http://localhost:8000/v1 上通过 vLLM 提供 GLM 5.2 # ...或者使用 ollama:ollama serve && ollama pull glm-4.6 # 2. 安装 pip install -e . # 3. 扫描。flaw0 会自动检测您的本地 backend。 flaw0 scan ./path/to/repo # 显式指定 backend/model: flaw0 scan ./repo --provider openai --base-url http://localhost:8000/v1 --model og-coding ``` 输出结果会存放在 `.flaw0/` 目录中:一个用于 CI/代码扫描仪表板的 SARIF 文件,以及一份人类可读的 Markdown 报告,其中包含数据流追踪、威胁模型以及针对每个已确认漏洞的**有效概念验证**。 ### 在内置目标上尝试 ``` flaw0 scan examples/vuln_app ``` 使用 GLM 5.2(在单台机器上自托管)进行的真实运行: ``` recon: 5 hunt task(s) across the attack surface [1/5] app.py::init_db sql_injection — clear [2/5] app.py::find_user sql_injection — CONFIRMED by PoC ✅ [3/5] app.py::find_user_safe sql_injection — clear [4/5] app.py::ping command_injection — CONFIRMED by PoC ✅ [5/5] app.py::load_profile deserialization — CONFIRMED by PoC ✅ done: 5 tasks · 3 candidate(s) · 3 PoC-confirmed ``` 通过运行的漏洞利用程序证明了三个真实的 bug;而参数化查询的对照组(`find_user_safe`)和 SQL 常量的情况(`init_db`)被正确地忽略了。 ## 负责任的披露,并保持人在回路 flaw0 可以监控热门的开源项目并浮现已确认的漏洞——但它**本身绝不进行任何披露。** 当一个发现被 PoC 确认时,它会通知人类操作员(例如通过 Telegram)以获取批准。披露遵循惯例:首先私下通知维护者,只有在修复程序发布后才会公开细节。自动化的*发现*,由人类主导的*披露*。 使用环境变量(切勿提交到代码库中)配置批准渠道: ``` export FLAW0_TELEGRAM_BOT_TOKEN=... # your bot export FLAW0_TELEGRAM_CHAT_ID=... # where approval requests go ``` ## 配置 所有内容都可以通过环境变量(或 `flaw0 scan` 标志)覆盖: | 环境变量 | 默认值 | 含义 | |---------|---------|---------| | `FLAW0_PROVIDER` | `auto` | `auto` \| `openai` \| `ollama` | | `FLAW0_MODEL` | *(自动检测)* | 部署的模型 ID | | `FLAW0_OPENAI_BASE_URL` | `http://localhost:8000/v1` | OpenAI 兼容的 endpoint | | `FLAW0_OLLAMA_HOST` | `http://localhost:11434` | ollama endpoint | | `FLAW0_VERIFY_VOTES` | `3` | 每个发现的对抗性反驳者数量 | | `FLAW0_SANDBOX` | `1` | 设为 `0` 可跳过 PoC 确认 | | `FLAW0_SANDBOX_IMAGE` | `python:3.11-slim` | 沙箱基础镜像 | | `FLAW0_MAX_TASKS` | `0` | 限制狩猎任务数量(0 = 无限制) | ## 状态与路线图 Alpha 阶段。目前支持:Python 目标;SQLi / 命令注入 / 代码注入 / 不安全的反序列化 / SSRF / 路径遍历种子;对抗性验证;PoC 沙箱;SARIF + Markdown;Telegram 批准。 下一步: - 更多语言(JS/TS、Go)和攻击类别(IDOR/authz、SSRF 链)。 - 针对 Web 应用的 endpoint/攻击面枚举(上下文整理可提升召回率)。 - 内置的**基准测试框架**(精确率 / 召回率 / F1 / 每个真阳性成本),针对带标签的语料库进行测试——这正是该领域所缺乏的开放、可复现的评估。 - 并行狩猎、跨文件污点分析以及运行间的覆盖率追踪。 ## 贡献 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。要报告 *flaw0 本身*的漏洞,请参阅 [SECURITY.md](SECURITY.md)。 ## 许可证 Apache-2.0。使用它来防御任何你有权测试的东西。flaw0 是一款防御性工具——请勿将其指向你无权评估的系统或代码。
标签:AI风险缓解, DLL 劫持, DNS 反向解析, LLM Agent, 人工智能, 大语言模型, 用户模式Hook绕过, 自动化安全工具, 请求拦截, 逆向工具