CTX-Audit
Health Uyari
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in benchmarks/run-baseline.sh
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
SAST + MCP for LLM-driven code audit. Traces data flow across files, queries call graphs via MCP tools, enables evidence-based vulnerability verdicts. 7 languages, 239 tests.
CTX-Audit
SAST 引擎 + LLM 协作审计
数据流追踪 · 跨文件分析 · MCP 协议 · 证据驱动判定
不靠规则堆砌——追踪数据从入口到危险函数的完整路径,输出结构化证据链。通过 MCP 协议让 Claude/LLM 读取攻击面、查询调用图、基于确定性证据做漏洞判定。
目录
快速开始
git clone https://github.com/BlkSword/CTX-Audit.git
cd CTX-Audit
cargo build --release
# 扫描
ctx-audit scan ./myproject # 规则扫描
ctx-audit scan ./myproject --deep # 规则 + AST 污点 + 跨文件追踪
ctx-audit scan ./myproject --deep -o report.json
# 单文件分析
ctx-audit analyze ./src/main.rs --symbols
# 持续监控
ctx-audit watch ./myproject
# MCP Server(LLM 协作)
ctx-audit mcp
# 守护进程(增量缓存)
ctx-audit daemon start
ctx-audit scan ./myproject --daemon
ctx-audit daemon stop
命令
scan — 项目扫描
ctx-audit scan ./project [OPTIONS]
OPTIONS:
--deep 启用 AST 污点 + 跨文件追踪
--taint 仅启用 AST 污点分析
--cross-file 仅启用跨文件追踪
--min-severity <级别> 最低严重程度 (critical/high/medium/low)
-o, --output <文件> 输出文件 (llm/json/sarif/markdown)
-t, --threads <N> 并行线程数
-r, --rules <目录> 自定义规则目录
-e, --exclude <模式> 追加排除
--daemon 通过守护进程执行
--sca 启用 SCA 依赖扫描
扫描引擎: RuleScanner(默认)→ AstTaintScanner(--taint,单文件 source→sink)→ CrossFileTaintAnalyzer(--cross-file,跨文件调用图 + 函数摘要)。每个引擎可独立启用。
analyze / watch / daemon
ctx-audit analyze ./src/main.py --symbols # 单文件分析
ctx-audit watch ./myproject # 持续监控
ctx-audit daemon start # 启动守护进程
ctx-audit daemon status # 查询状态
ctx-audit daemon stop # 停止
mcp — LLM 协作(推荐)
ctx-audit mcp # 启动 MCP Server(stdio JSON-RPC)
通过 MCP 协议暴露 32+ 工具给 Claude Code / Cursor / 任何 MCP Agent,让 LLM 自主驱动安全审计流程。详见 LLM-AUDIT-SKILL.md。
MCP 集成配置(.claude/settings.json):
{
"mcpServers": {
"ctx-audit": {
"command": "ctx-audit",
"args": ["mcp"]
}
}
}
audit — 扫描 + 规则审计
ctx-audit audit ./project # 扫描 + 规则审计(无 LLM 调用)
ctx-audit audit ./project --agent # [已搁置] 内部 Agent 模式
2026-07: 内部
--agent模式已搁置。其 Specialist/Investigator/TaintWalk 组件在基准测试中效果未达预期,建议使用 MCP 模式。代码保留但llm_mode默认noop。
config — 配置管理
ctx-audit config show # 显示当前配置
ctx-audit config set <key> <val> # 设置配置
ctx-audit config list # 列出所有配置键
LLM 协作审计(推荐方式)
CTX-Audit 通过 MCP 协议让外部 LLM 自主完成安全审计。核心差异:不是让 LLM 看扫描结果猜 TP/FP,而是给 LLM 32+ 个工具去查调用图、读代码、追踪数据流,基于确定性证据做判定。
工作流
1. security_scan → 获取 findings(含 enclosing_function + evidence_refs)
2. 对每个 high/critical finding:
a. get_code_context → 理解代码
b. query_callers / find_call_path → 追踪数据来源
c. search_code → 搜索相关模式
d. check_sanitizer / query_middleware_chain → 排除误报
e. 判定 → TP / FP / Needs Review
3. 输出审计报告(证据链完整、可追溯)
已验证的审计效率
| 项目 | 审计方式 | 耗时 | 产出 |
|---|---|---|---|
| Shiro 1.2.4 | MCP 协作 | ~15min | 确认 CVE-2016-4437 + gadget chain |
| Shiro 1.2.4 | 纯手工 | ~2h | 同上 |
| RuoYi 4.7.3 | 扫描 | ~5s | 355 findings,含 6 个 MyBatis SQL 注入 |
完整指南和示例见 LLM-AUDIT-SKILL.md 和 docs/MCP-AUDIT-EXAMPLE.md。
配置文件
配置文件位于 ~/.config/ctx-audit/config.toml(Linux)/ ~/Library/Application Support/ctx-audit/config.toml(macOS)/ %APPDATA%\ctx-audit\config.toml(Windows)。
首次运行 ctx-audit config set 时自动生成。
常用配置:
[scan]
threads = 4
min_severity = "medium"
exclude_patterns = ["node_modules", ".git", "target", "build", "dist", "vendor", "test", "tests"]
[agent]
llm_mode = "noop" # noop / http(MCP 模式不需配置此项)
[agent.llm]
provider = "openai"
model = "deepseek-chat"
endpoint = "https://api.deepseek.com/v1/chat/completions"
[daemon]
listen_addr = "127.0.0.1:19527"
检测能力
漏洞覆盖
| 类型 | CWE | 检测方式 |
|---|---|---|
| SQL 注入 | CWE-89 | AST 污点 + MyBatis XML ${} + 规则 |
| 命令注入 | CWE-78 | AST 污点 + 多语言规则 |
| 代码注入 | CWE-94 | AST 污点 + 模板注入(SSTI) |
| 路径遍历 | CWE-22 | AST 污点 + 多语言规则 |
| XSS | CWE-79 | AST 污点 + sanitizer 检测 |
| SSRF | CWE-918 | 跨文件追踪 + Host Header 规则 |
| 不安全反序列化 | CWE-502 | 规则 + 方法参数 source + 调用者链 |
| XXE | CWE-611 | YAML sink 规则 |
| 日志注入 | CWE-117 | 跨文件追踪 + logger sink |
| 开放重定向 | CWE-601 | 规则 + sendRedirect 检测 |
| 硬编码密码 | CWE-259 | 模式匹配 |
| 弱哈希 | CWE-328 | YAML sink 规则 |
| 不安全 Cookie | CWE-614 | 规则 + sanitizer 检测 |
| 信任边界 | CWE-501 | 跨文件追踪 |
跨文件追踪
- 调用图构建:Import-Aware 别名解析 + Callback 注册 + receiver 追踪 + 类型层次虚方法分发
- 函数摘要:自底向上计算污点签名,
param_to_calls多跳传播,返回值 LHS 回传 - 路径追踪:BFS source→sink 跨文件路径查找
- 中间件建模:Express app.use() / Django MIDDLEWARE 虚拟边
- CPG 引擎:路径敏感分析 + AccessPath 前缀匹配 + sanitizer 净化检测
- YAML 规则: 68 sinks + 101 sanitizers,覆盖 7 语言 + 框架(Spring/React/Django/Express)
误报控制
- 文件角色标签(production/test/build/vendor)
- Sanitizer 净化检测(101 个模式)
- 安全屏障检测(shell:false、数组参数等)
- 构造函数 FP 过滤
- 基线抑制(
.ctx-audit/baseline.json) - 置信度评分 + 多引擎交叉确认
语言支持
Java / Python / JavaScript / TypeScript / Go / Rust / C / C++ / PHP — AST 分析 12 种语言,文件扫描 18 种扩展名。
架构
CTX-Audit
├── core/ # 确定性分析引擎
│ ├── analysis/
│ │ ├── taint.rs # 污点分析核心(Source/Sink/Flow/Sanitizer)
│ │ ├── ast_taint.rs # AST 污点分析器(CFG + CPG 路径敏感)
│ │ ├── cross_file.rs # 跨文件分析(调用图 + 函数摘要 + BFS)
│ │ ├── cpg/ # 代码属性图引擎(构建/查询/摘要)
│ │ ├── query.rs # 调用图查询引擎(LLM 证据 API)
│ │ ├── framework_detector.rs # 安全框架检测(pom.xml/gradle)
│ │ ├── imports.rs / type_hierarchy.rs / middleware.rs
│ │ └── attack_surface.rs / risk_patterns.rs
│ ├── scanner/
│ │ ├── mod.rs # 扫描管道 + Finding + 证据富化
│ │ ├── source_sink_patterns.rs # 本地 source→sink 模式匹配
│ │ └── sca_scanner.rs # SCA 依赖扫描
│ ├── rules/ # YAML 规则引擎
│ └── ast/ # AST 引擎(tree-sitter,12 语言)
│
├── tools/ # MCP 工具集
│ ├── bridge.rs # 内置工具(read_file/list_files/search)
│ └── registry.rs / executor.rs
│
├── cli/ # CLI 客户端
│ ├── commands/
│ │ ├── scan.rs / analyze.rs / watch.rs
│ │ ├── mcp.rs # MCP Server(32+ 工具)
│ │ └── daemon.rs / config.rs / rules.rs
│ ├── agent/ # 内部 Agent(已搁置)
│ │ ├── supervisor.rs # 并发调度器
│ │ ├── investigator/ # ReAct 调查器 + TaintWalk
│ │ ├── specialist/ # CWE Specialist
│ │ └── prompts.rs / evidence.rs / llm_client.rs
│ └── config.rs
│
├── daemon/ # 守护进程
│ └── src/{protocol,server,engine,state,client}.rs
│
├── rules/ # YAML 规则(68 sinks, 101 sanitizers)
│ ├── *.yaml # 模式规则
│ └── taint/frameworks/ # 框架污点规则(7 语言)
│
└── docs/ # 文档
├── MCP-AUDIT-EXAMPLE.md # MCP 审计实战(Shiro CVE-2016-4437)
├── MCP-INTEGRATION.md # MCP 集成配置指南
└── research/ # 研究报告 + 基准汇总
基准测试
7 项目跨语言基准
| 语言 | 项目 | 文件 | Findings | Critical 检出 | Evidence | 已知命中 |
|---|---|---|---|---|---|---|
| Java | WebGoat | 404 | 231 | 9 | 14% | 教学项目 |
| Java | Shiro 1.2.4 | 619 | 57 | 9 CWE-502 | 61% | ✅ CVE-2016-4437 |
| Java | RuoYi 4.7.3 | 266 | 355 | 6 CWE-89 | 4% | ⚠️ MyBatis XML |
| Java | Fastjson 1.2.24 | 2035 | 10 | 7 CWE-502 | 70% | ⚠️ 入口待关联 |
| Python | pygoat | 80 | 104 | 23 | 49% | 教学项目 |
| Go | govwa | 20 | 5 | 1 | 60% | 教学项目 |
| JS | NodeGoat | 50 | 57 | 4 | 19% | 教学项目 |
项目状态
| 维度 | 状态 |
|---|---|
| 跨文件分析 | 调用图 + Import 别名 + Callback + receiver + 类型层次 + 虚方法 + 中间件 |
| 语言覆盖 | Java/Python/JS/TS/Go/Rust/C/C++/PHP — 12 种 AST,7 种污点规则 |
| YAML 规则 | 68 sinks + 101 sanitizers(Spring/React/Django/Express 框架感知) |
| MCP 工具 | 32+(扫描/调用图查询/代码搜索/污点追踪/审计会话) |
| 证据质量 | enclosing_function 97%,evidence_refs 4-70%(项目类型决定) |
| Agent 模式 | 已搁置(llm_mode=noop)。MCP 协作是推荐方向 |
| 测试 | 239 passed,0 failed |
| 基准 | 7 项目,819 findings 验证 |
| 已知 CVE 检出 | ✅ CVE-2016-4437(Shiro),⚠️ CVE-2017-18349(Fastjson),CVE-2023-27025(RuoYi 部分) |
关于 0-day 发现
工具能发现 0-day 的组件和模式(如反序列化 sink、MyBatis 动态 SQL、库 API 危险入口),但不能自动确认为 0-day。需要安全研究员或 MCP LLM 逐 finding 追踪调用者链、确认外部可达性、判定可利用性。在合适的场景(未审计的 Java 库/框架),效率提升约 8-10x(vs 全文阅读)。
0-day 发现依赖安全研究员或 MCP LLM 逐 finding 追踪调用者链、确认外部可达性。
许可证
Apache License 2.0
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi