kashif821/Phantm
GitHub: kashif821/Phantm
Phantm 是一个通过本地 AST 预过滤与 LLM 定向分析相结合的方式,低成本扫描 LLM 生成代码安全漏洞的命令行审计工具。
Stars: 1 | Forks: 0
# 👻 Phantm
**一个经过成本优化的三层 AI 安全扫描器原型。**
## ⚡ 问题所在
将整个代码仓库发送给 LLM 进行安全分析速度缓慢,会不必要地暴露专有代码,并导致高昂的 token 成本。大多数被扫描的代码都是样板代码或本质上是安全的。Phantm 通过在本地预过滤代码,并且仅将可疑的代码块发送给 LLM 来解决这个问题。
## 🏗️ 三层架构
Phantm 采用精准的代码审计方法,大幅减少了 token 使用量和执行时间:
### 🛡️ 第一层:AST 切片(预过滤)
在调用任何外部 API 之前,Phantm 利用 Python 内置的 `ast` 模块在本地对文件进行静态切片。它会过滤掉安全的代码,并仅提取包含危险接收器和调用(例如 `os.system`、`subprocess`、`requests`、`litellm`)的特定函数或类块。
### 🧠 第二层:威胁情报缓存
Phantm 使用高级正则表达式从第一层的 AST 块中提取硬编码的 IP 和 URL。这些工件会根据本地的 SQLite TTL 缓存进行校验。如果缓存未命中,Phantm 会查询外部提供商(如 **VirusTotal** 或 **AbuseIPDB**)并缓存结果。
### 🤖 第三层:定向 LLM 调度
隔离的 AST 块与任何威胁情报上下文结合后,会通过通用 LLM 路由器(LiteLLM)进行路由。这种最小化的 payload 确保了大幅减少的上下文窗口,在提供定向分析的同时节省了成本。
## 🔐 当前安全模型与加固
安全工具必须安全地构建。关键的加固功能包括:
* **健壮的测试:** 包含 54 个测试的全面测试套件,涵盖对抗性 prompt injection 和严格的路径处理检查。
* **严格的权限与掩码:** 对本地数据库(`~/.phantm/phantm.db`)强制执行严格的 `0o600` 权限,以防止操作系统 umask 泄漏,并采用零知识敏感信息掩码。
* **防止目录逃逸:** 在路径解析*之前*严格拒绝 Symlink,以防止 Symlink 劫持和目录逃逸。
## ⚠️ 当前成熟度与已知缺陷(v1.0.0)
Phantm 是一个原型。我们对其局限性秉持绝对的透明度:
* Phantm 严重依赖于硬编码的危险 AST 节点允许列表。它不执行深度的污点分析。
* LLM 信任边界依赖于 JSON 提取启发式方法。审计代码中复杂的 prompt injection 理论上可能会绕过解析器。
* 路径限制依赖于本地约定,而不是严格的操作系统级沙箱。
## 🚀 使用与配置
### 安装
```
pip install -e .
```
### 配置
```
phantm config set CEREBRAS_API_KEY
```
### 扫描
```
phantm scan run src/
```
### 报告
```
phantm report
```
## 🚦 退出代码
Phantm 专为自动化流水线构建,并返回标准的退出代码:
* `0` :干净扫描(未发现漏洞)
* `1` :发现漏洞
* `2` :配置或身份验证错误
* `3` :严重的网络/API 故障
* `4` :引擎崩溃 / 内部错误
**由 Kashif Khan 制作。**
标签:DLL 劫持, Python, 代码安全审计, 大语言模型, 威胁情报, 开发者工具, 无后门, 逆向工具, 静态应用安全测试