Gixy 是一款专为 Nginx 配置设计的静态分析工具,通过解析语法和语义规则识别 SSRF、HTTP 拆分、路径遍历等安全漏洞及 add_header 重复定义等逻辑疏漏,支持插件化检测、CI/CD 集成与定制化配置,报告需结合上下文研判。

Gixy 是一款专为 Nginx 配置设计的静态分析工具,不运行服务、不依赖环境,仅通过解析配置语法和语义规则,就能识别出 SSRF、HTTP 拆分、路径遍历、主机头欺骗等典型安全漏洞,也能发现如 add_header 重复定义、valid_referers 空白配置等逻辑疏漏。它的价值不在“替代人工”,而在把经验规则固化为可复用、可审计、可集成的检测能力。
核心检测能力:聚焦真实风险场景
Gixy 的插件机制围绕 Nginx 实际运行时行为建模,不是简单字符串匹配:
-
SSRF 检测:分析
proxy_pass中是否直接拼接了未过滤的变量(如$arg_url),并结合内置变量规则库判断该变量是否可能构造内网地址 -
路径遍历防护:检查
alias与location路径末尾斜杠是否匹配,同时验证变量内容是否被正则约束(如$uri必须符合/[^\x20\t]*) -
HTTP 拆分防御:识别变量是否可能包含
\n或\r,例如对$arg_redirect这类用户可控参数进行边界检查 -
逻辑错误识别:如
add_header_redefinition插件会追踪同一上下文中同名响应头的多次定义;valid_referers none会被标记为无效保护
快速落地:安装与基础扫描
无需复杂部署,开箱即用:
- 用 pip 安装:
pip install gixy,安装后执行gixy --help可查看支持的插件列表和输出格式 - 默认扫描
/etc/nginx/nginx.conf,也可指定任意配置文件:gixy /path/to/site.conf - 推荐使用 JSON 格式输出以便后续处理:
gixy --format json /etc/nginx/conf.d/app.conf > report.json - 若配置含 include,Gixy 会自动递归解析全部被引用文件,无需额外操作
进阶用法:定制化与集成
满足团队协作与工程化需求:
-
启用/禁用特定插件:通过命令行
--enable-plugin ssrf --disable-plugin host_spoofing精确控制检测范围 - 配置插件行为:部分插件支持自定义参数,例如调整 SSRF 检测中认为“危险”的内网网段范围
-
接入 CI/CD:在 Jenkins 或 GitHub Actions 中加入 Gixy 步骤,失败时阻断发布;配合
--format checkstyle可对接主流 IDE 和代码扫描平台 -
更新检测规则:插件代码位于
gixy/plugins/目录,可直接替换或新增 .py 文件;Docker 用户拉取最新yandex/gixy镜像即可同步规则
理解结果:避免误报与过度响应
Gixy 的报告不是最终结论,而是需要结合上下文判断的线索:
- 高危告警(如 alias_traversal)需核对 location 和 alias 是否确实存在路径拼接歧义,参考其测试用例中的
simple_fp.conf(误报样例)对比分析 - 某些“问题”是合理设计,例如为兼容旧接口而保留无尾斜杠的 location,此时应通过文档注释或配置白名单机制说明
- 变量风险等级取决于来源——
$remote_addr默认可信,$arg_xxx默认不可信,Gixy 的builtin_variables.py明确定义了每类变量的字符边界 - 建议将 Gixy 扫描纳入 PR 检查流程,让安全反馈前置,而非上线后补救











