levibmackay/SecurityScanner
GitHub: levibmackay/SecurityScanner
一款基于 Gemini API 的命令行安全扫描工具,将源代码发送给大语言模型进行漏洞分析,并按严重程度排序输出彩色结果。
Stars: 0 | Forks: 0
# AI 安全扫描器
一款命令行工具,利用 Google 的 Gemini API 扫描源代码文件中的安全漏洞。只需将其指向某个文件,它就会将代码发送给 Gemini 2.5 Flash 并附带安全审查 prompt,随后将检测结果打印回终端——按严重程度排序并进行颜色编码,以便快速扫描。
## 功能
* 通过 Gemini API (`gemini-2.5-flash`) 进行 AI 驱动的漏洞分析
* 按严重程度排序的检测结果(Critical → High → Medium → Low)
* 根据严重程度级别进行颜色编码的终端输出(通过 `colorama` 实现)
* 单文件、单命令使用——除了 API key 外无需其他配置
* 适用于任何可作为文本读取的源文件(不限于 Python)
## 技术栈
* **语言:** Python
* **AI 模型:** 通过 `google-genai` SDK 调用 Google Gemini (`gemini-2.5-flash`)
* **CLI/输出:** 使用 `colorama` 输出彩色终端文本
* **配置:** 使用 `python-dotenv` 从 `.env` 文件加载 API key
## 项目结构
```
.
├── scanner.py # Main CLI: reads a file, queries Gemini, prints sorted/colored findings
├── vulnerable.py # Sample file with intentionally vulnerable code, for testing the scanner
├── images/demo.png # Screenshot used in this README
└── .env # Local Gemini API key (not committed with a real key)
```
## 环境要求
* Python 3.10+
* 一个 Google Gemini API key ([Google AI Studio](https://aistudio.google.com/apikey))
## 安装说明
### 1. 克隆仓库
```
git clone https://github.com/levibmackay/SecurityScanner.git
cd SecurityScanner
```
### 2. 创建并激活虚拟环境
Mac/Linux:
```
python3 -m venv venv
source venv/bin/activate
```
Windows:
```
python -m venv venv
venv\Scripts\activate
```
### 3. 安装依赖
```
pip install google-genai python-dotenv colorama
```
### 4. 配置 API key
在项目根目录下创建一个 `.env` 文件:
```
GOOGLE_API_KEY=your_api_key_here
```
如果未设置 `GOOGLE_API_KEY`,`scanner.py` 将会报错退出。
## 用法
```
python scanner.py
```
示例,使用内置的示例文件:
```
python scanner.py vulnerable.py
```
## 示例输出
```
Severity: Critical
Vulnerability: SQL Injection
Why: User input is directly concatenated into a SQL query.
Impact: Attackers can execute arbitrary SQL commands.
Fix: Use parameterized queries.
--------------------------------------------------
Severity: High
Vulnerability: Command Injection
Why: User input is passed directly to a shell command via os.system.
Impact: Attackers may execute arbitrary shell commands.
Fix: Avoid shell execution; validate and sanitize input.
```
## 包含的示例漏洞
`vulnerable.py` 是一个故意设计存在安全缺陷的文件,用于测试扫描器。它包含:
* SQL 注入(查询语句中未经清理的字符串插值)
* 命令注入(使用未经清理的输入执行 `os.system`)
* 弱密码哈希(MD5)
* 硬编码的凭据和源码中的 API secret
## 工作原理
1. 以文本形式读取目标文件的内容。
2. 用该代码填充固定的安全审查 prompt,并将其发送给 Gemini 2.5 Flash。
3. 将响应拆分为单个检测结果(以 `---` 分隔),并根据每个代码块中的关键字匹配情况按严重程度排序。
4. 将每个检测结果打印到终端,并根据严重程度着色(红色代表 critical,浅红色代表 high,黄色代表 medium,绿色代表 low)。
## 演示

## 已知局限性
* 严重程度排序和着色依赖于对响应文本的关键字匹配,而不是模型的结构化输出——如果某个检测结果的 `Why`/`Impact` 文本恰好提及了与其自身 `Severity:` 行不同的严重程度词汇,则可能会被错误分类。
* 对于缺失或无法读取的输入文件路径没有错误处理;无效路径会引发未处理的异常,而不是显示清晰的错误消息。
* 安全审查 prompt 和模型名称硬编码在 `scanner.py` 中;如果不编辑源码,无法指定其他模型或自定义 prompt。
* 没有自动化测试套件。
_最后更新:2026-07-20_
标签:Gemini, Python, 人工智能, 无后门, 用户模式Hook绕过, 逆向工具