ShowDoc 不存在 CVE 编号的“未授权 PHP 代码注入”漏洞,v3.9.2 至 v3.9.3 无相关修复记录;所谓复现多源于部署配置错误、ThinkPHP 调试模式滥用或第三方插件问题。

目前公开渠道中,没有权威来源确认 ShowDoc 存在 CVE 编号的“未授权 PHP 代码注入”漏洞,也无 v3.9.2 到 v3.9.3 针对该类漏洞的修复记录。所谓“CVE 复现”很可能是将非官方 PoC、误报或混淆了其他项目(如 phpMyAdmin、phpBB、或自建接口未鉴权)的问题套用到了 ShowDoc 上。
为什么搜不到 ShowDoc 的相关 CVE?
根据 NVD(National Vulnerability Database)、CNVD、CNNVD 及 GitHub Security Advisories 截至 2026 年 10 月 22 日的公开数据:
- ShowDoc 官方仓库(showdoc 组织下的 showdoc 主 repo)未发布过含 CVE 编号的安全公告;
- v3.9.2 和 v3.9.3 的 CHANGELOG.md 和 GitHub release notes 中,仅提及文档渲染优化、导出格式修复、SQL 查询面板小调整等,无安全修复描述;
- 所有已知影响 ShowDoc 的真实问题(如早期 v2.x 的 API 文档泄露、v3.8 的 XSS 模糊过滤)均未达到“未授权 PHP 代码执行”级别,更未触发 CVE 评级流程。
常见误判来源:哪些地方容易被当成“ShowDoc 代码注入”?
实际排查中,以下几类情况高频导致误报:
- 后端 Nginx/Apache 配置错误,使 .php 文件在 /Public/ 或 /Runtime/ 目录下被直接解析(例如 location ~ \.php$ 规则过于宽泛),此时上传任意 .php 文件即可执行——但这与 ShowDoc 逻辑无关,是部署层失配;
- 管理员手动开启并暴露了 ThinkPHP 内置的 debug 模式(APP_DEBUG = true),且未限制 IP,导致 ThinkPHP 的异常页面可执行任意 PHP 代码(通过 _method=__construct 等 trick)——这属于框架调试模式滥用,非 ShowDoc 特有;
- 第三方插件或二次开发代码存在 eval()、assert()、create_function() 且参数可控,但该插件不在 ShowDoc 官方维护范围内。
如何验证你当前 ShowDoc 是否真有风险?
与其复现不存在的 CVE,不如做这几件事:
- 检查 application/config.php 中 'app_debug' 是否为 false,且生产环境禁用 display_errors;
- 运行 grep -r "eval\|assert\|system\|shell_exec" application/ --include="*.php",确认业务代码无危险函数硬编码调用;
- 查看 Web 服务器配置,确保 /Public/ 目录不解析 PHP(Nginx 示例:location ^~ /Public/ { location ~ \.php$ { return 403; } });
- 使用 curl -I http://your-showdoc/api/item/list 确认所有 API 均返回 401 Unauthorized 或 403 Forbidden(未登录状态),而非直接返回数据——这才是未授权访问的真实检测点。
立即学习“PHP免费学习笔记(深入)”;
真正需要警惕的是:把 ShowDoc 当作“免登录文档站”直接暴露在公网,又没关掉注册功能、没设强密码策略、没关调试模式。这些不是 CVE,但比大多数 CVE 更容易被利用。



















