PHP2Shell 高危漏洞来袭!
到了10月下旬, 安全领域的一个圈子被一个叫作PHP2Shell的名词给刷爆了屏。这并不是指某一个具体插件或者某个框架上面存在的安全漏洞, 它指的是在PHP引擎这个本体之中存在的两个漏洞, 其中这两个漏洞的编号分别叫做CVE-2026-109618以及CVE-2026-109619。
上述所提到的这两个漏洞, 每一个都可以被那些没有获得授权的用户拿去远程利用, 并且能够直接用来执行代码。PHP2Shell这个高危漏洞已经出现了, 所有在运行PHP的服务器都会受到影响, 范围非常广, 甚至连像我们本站这样的WordPress网站也都在受影响之列。
为什么叫 PHP2Shell
这两个漏洞可以把它们串起来, 变成一条攻击链: 前一个漏洞利用了内存耗尽时候的状态损坏情况, 这个发生在请求处理过程中;后一个漏洞利用了跨请求的时候残留下来的过期状态。
当这两个东西组合在一起之后, 就可以从一次普通的 HTTP 请求直接获取到服务器的权限。这种攻击方式并不依赖于后台账号, 也根本不需要目标程序本身存在什么样的漏洞。所以, 这种情况就被人们叫做“PHP 到 Shell”。
影响有多大
这个漏洞影响PHP5.4以及以上的版本, 一直到8.5.11这个版本为止。PHP支撑着大约七成的互联网站点, PaloAlto公司估算在全球范围内部向公众开放网络连接的PHP实例数量超过两千二百万个。
最值得警惕的情况是Apache服务器使用的mod_php模式, 攻击行为发生在应用代码执行之前就已经完成了, 在这种情况下WordPress和Discuz自身提供的那些安全防护设置起不到任何帮助作用。
PHP-FPM与php-cgi以及LiteSpeed和FrankenPHP, 它们也受到了同样的影响。
时间线说明了严重程度
- 就在10月17日当天, 在那些补丁还没发布的时刻之前, 已经有相关的攻击探测行为被系统给记录下来了。
- 在10月21日这个日期, PHP推出了修复版本, 具体版本号分别是8.5.12、8.4.27、8.3.36、8.2.35。
- 补丁发布大约过了19分钟以后, 蜜罐就记录到了有人尝试去利用这个漏洞。紧接着呢, 那个攻击的数量就非常快地开始往上升起了。
- 10 月 28 日:CISA 将两个编号列入已知被利用漏洞清单。
现在该做什么
- 需要把当前的系统升级到所对应分支里最新的那个版本号, 对于还在使用的老版本, 也就是从5.4一直到8.1的这些版本, 一定要尽快速迁移到目前仍受支持的分支里头去。
- 把 PHP-FPM 或者是 Apache 重新启动, 然后在容器里重新建立镜像, 最后确认一下正在运行的二进制文件是不是已经是新的版本了。
- 对于那些无法立刻执行升级措施的, 可以先将 session.upload_progress.enabled 这个选项关闭掉, 然后再加上 WAF 规则这样的一套操作方式, 以此来实现一个临时的止血手段。
- 请去把从2023年10月17日以后的那些个日志数据翻出来仔细查验一遍, 同时也得盯着Web目录那边有没有多出什么新的文件来, 还得察看看看有没有那种异常的外连情况出现, 通过这一系列的检查和确认, 好搞清楚系统到底是否安全, 是不是真的没有遭受过入侵。
这不是一次“观察一下再说”的漏洞。补丁、重启、验证版本,三步做完再谈其他加固;服务器安全的基本功,这次会被集中检验。环境相关的操作可以参考phpStudy 服务器环境配置,被入侵后的处理可以看网站被挂马排查。
常见问题
PHP2Shell 会影响虚拟主机和共享主机吗?
会的。只要说那个服务提供商用的PHP版本是在那个会受影响的范围里面, 并且还没打上补丁的话, 那么在同一台机器上的所有网站站点都会暴露出去, 这时候呢, 虚拟主机的用户就只能够去联系那个服务提供商去确认一下版本到底是不是那样。
WordPress 装了安全插件就安全了吗?
答案是没有。漏洞出现在 PHP 引擎这一层, 攻击发生在了 WordPress 代码执行之前, 所以安全插件是拦不住的, 升级 PHP 才是有效的解决办法。
PHP 7.x 还有补丁吗?
目前市面上根本就没有所谓的官方发布版本存在, 而诸如7.x以及更早之前的那些大版本分支都已经正式停止了后续的维护支持工作, 所以对于用户而言, 唯一能够选择的操作路径就是升级到目前仍然在受到官方支持版本的8.x这个系列中去。