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