tdiprima/image_security_scanner

GitHub: tdiprima/image_security_scanner

一款针对 AI 管道输入图像的安全扫描工具,可检测图片中的提示注入文本、恶意元数据和隐写 payload。

Stars: 0 | Forks: 0

# 图像安全扫描器 🖼️ 🔍 输入到 AI 管道的图像可能携带隐藏威胁 —— 融入像素中的提示注入文本、掩埋在元数据中的恶意指令,或肉眼不可见的隐写 payload。标准的内容过滤器无法捕捉这些。 **解决方案:** 一个 Python 扫描器,对每张图像运行三项独立检查: - **OCR + 提示注入** —— 通过 Tesseract 提取可见文本,并将其与指令覆盖、角色劫持、LLM 控制令牌、同形字替换、不可见的零宽字符和 base64 编码的 payload 等模式进行匹配。 - **元数据分析** —— 检查 EXIF 字段、PNG 文本块和 JPEG 注释段,以查找嵌入的脚本、外部 URL 和注入文本。 - **像素启发式** —— 标记用于走私文本条带的高 Shannon 熵、低对比度不可见文本区域以及极端纵横比。 每项发现被评为 **CRITICAL / HIGH / MEDIUM / LOW**,并且在发现问题时扫描器会以非零状态退出,这使其对 CI 非常友好。 ## 示例输出 ``` ============================================================ Image Security Scan Report File : suspicious.png Status : FLAGGED ============================================================ [CRITICAL] prompt_injection Description : Instruction override attempt Evidence : ignore all previous instructions [MEDIUM] suspicious_metadata Description : External URL embedded in metadata field 'Comment' Evidence : https://evil.example.com/payload Total findings: 2 ============================================================ ``` ## 安装说明 需要 Python 3.11+ 和 [uv](https://docs.astral.sh/uv/)。 您的系统上还需要安装 [Tesseract OCR](https://github.com/tesseract-ocr/tesseract): ``` # macOS brew install tesseract # Debian / Ubuntu sudo apt install tesseract-ocr ``` 然后安装 Python 依赖项: ``` uv sync ``` ## 用法 ``` # 扫描单个图像(文本输出) uv run image-scanner photo.png # 同时扫描多个文件 uv run image-scanner *.jpg # 扫描目录中的所有图像 uv run image-scanner /path/to/images/ # 递归扫描子目录 uv run image-scanner /path/to/images/ --recursive # 混合文件和目录 uv run image-scanner photo.png /path/to/images/ --recursive # JSON 输出 — 管道传输至 jq、保存到文件等。 uv run image-scanner /path/to/images/ --format json # 通过环境变量调整行为 SCANNER_LOG_LEVEL=DEBUG \ SCANNER_ENTROPY_THRESHOLD=7.2 \ SCANNER_MAX_IMAGE_BYTES=10485760 \ uv run image-scanner suspicious.png ``` | 环境变量 | 默认值 | 描述 | |---|---|---| | `SCANNER_LOG_LEVEL` | `INFO` | Python 日志级别 | | `SCANNER_OCR_LANG` | `eng` | Tesseract 语言代码 | | `SCANNER_ENTROPY_THRESHOLD` | `7.9` | 触发警告前的最大通道熵值 | | `SCANNER_MAX_IMAGE_BYTES` | `52428800` | 最大文件大小 (50 MB) | 退出码 `0` = 干净。退出码 `1` = 发现问题或出错。退出码 `2` = 未找到图像文件。
标签:AI安全, Base64解码, Chat Copilot, CISA项目, DeepSeek, DevSecOps, DNS 反向解析, EXIF解析, GraphQL安全矩阵, OCR文字提取, Python, Tesseract OCR, 上游代理, 元数据分析, 动态分析, 同形字替换, 图像隐写, 图片安全, 大模型安全, 安全扫描器, 对抗性机器学习, 提示词注入检测, 无后门, 熵值分析, 逆向工具, 隐写术检测, 零宽字符检测