远程代码执行(RCE)是什么意思?一篇讲清楚
远程代码执行,英文 remote code execution,常缩写为 RCE,是安全公告用来描述这样一种漏洞的说法:攻击者可能通过网络,在一个系统上运行自己的代码。新加坡网络安全局(CSA)关于 2026 年 10 月修复的 PHP 漏洞的警报说,这两个漏洞可能让未经身份验证的远程攻击者在受影响的系统上执行任意代码。本文信息截至 2026 年 10 月 23 日。
简要回答
远程代码执行(RCE)是说,一个安全漏洞可能让人从网络上的别处,在一台计算机上运行自己的代码或命令。国家互联网应急中心(CNCERT)说,PHP2Shell 漏洞在特定条件下可能导致对目标服务器的拒绝服务攻击、敏感数据窃取和远程代码执行。修复是服务器运营者的事:更新受影响的软件。
远程代码执行是什么意思?
最清楚的官方说法就在公告里。PHP 官方 2026 年 10 月 21 日的公告说,新的修复版本修复了两个可能允许未经身份验证的远程代码执行的高危漏洞。CNCERT 对同一问题的描述是:未经身份验证的远程攻击者可以构造恶意 HTTP 请求触发内存错误,在特定条件下实现远程代码执行。
最关键的两个词是“远程”和“未经身份验证”。发布 CVSS 严重程度评分体系的组织 FIRST 说,可以通过网络攻击的漏洞常被称为“可远程利用”,可能的攻击者范围可以大到整个互联网。同一份文件把不需要账户或登录的攻击者描述为在攻击前未经身份验证。
所以 RCE 描述的是一个漏洞可能允许什么,而不是已经发生的事情。
为什么 RCE 被评为这么严重?
因为攻击者的代码一旦运行,能做的事很多。CVSS 评分体系(见CVE 编号和 CVSS 评分是什么)把这一点记为影响。PHP 官方给两个 PHP2Shell 漏洞的评分,把机密性、完整性和可用性的影响都标为“高”。FIRST 的规范举例说,完整性影响高,意味着攻击者能够修改受漏洞系统保护的任何或全部文件;机密性影响高的例子,是攻击者窃取管理员密码或网站服务器的私有加密密钥。
同样的评分也记下了让攻击更难的因素。两个 PHP2Shell 漏洞都被标为攻击复杂度高,并且存在攻击前提条件。FIRST 把前者定义为攻击要绕过已有的安全防护;后者表示攻击取决于系统配置和运行时的特定条件,FIRST 说这类攻击可能要对同一目标发起多次才能成功。
综合这些因素,PHP 官方给两个漏洞的评分都是 9.2(满分 10),属于“严重”(Critical)一档。CNCERT 的公告说,国家信息安全漏洞共享平台(CNVD)对它的综合评级是“高危”。
如果我运营网站,RCE 意味着什么?
意味着如果网站用的是受影响的 PHP 版本,更新很急。PHP 公告说,它认为 Apache 的 mod_php 风险最高,已经有攻击演示,未经身份验证的请求在任何应用代码运行之前就能触发攻击。换句话说,在 mod_php 上,攻击可能在 WordPress 或任何网站程序运行之前就起作用。修复版本和该做的事,见PHP 漏洞 PHP2Shell 解读。
先看如何查看网站的 PHP 版本。如果 PHP 由主机商替你管理,你这边还要做什么,见主机商说 PHP 已修复,我还要做什么。
如果我只是浏览网站,RCE 意味着什么?
PHP 里的 RCE 漏洞是服务器上的漏洞。PHP 公告列出的风险对象是服务器软件,比如 PHP-FPM 和 Apache 的 mod_php,没有提到浏览器或访客的设备。截至 2026 年 10 月 23 日,美国 CISA 10 月 21 日的警报(10 月 23 日修订)说,截至发布时,它没有观察到这些漏洞在实际环境中被成功利用。两个相关的问题有专门的文章:打开被黑的网站会中毒吗和PHP 漏洞会泄露我的个人信息吗。
PHP2Shell 是怎样导致远程代码执行的?
PHP 公告按通往 RCE 的方式给两个漏洞命名。第一个是“通过内存不足造成的破坏实现 RCE”(RCE via OOM corruption,CVE-2026-109618):内存不足的处理可能在内部请求数据只初始化了一部分时打断 PHP。第二个是“通过过期的全局状态实现 RCE”(RCE via stale global state,CVE-2026-109619):属于请求的内部状态,可能在其背后的内存已被释放后仍然留存。
CNCERT 的分析说法相近:PHP 解释器内核在内存管理环节存在逻辑处理缺陷,攻击者可以构造特定 HTTP 请求触发异常处理流程,导致内部数据状态异常或已释放内存被再次访问,引发内存破坏。CSA 把 CVE-2026-109619 描述为一个释放后使用(use-after-free)漏洞。
更多问题
RCE 是哪几个词的缩写?
远程代码执行(remote code execution)。PHP 官方在两个 PHP2Shell 漏洞的名称里都用了这个缩写,“RCE via OOM corruption”和“RCE via stale global state”。CNCERT 的公告标题也用了“远程代码执行漏洞”这个说法。
远程代码执行和被黑是一回事吗?
不是。RCE 描述的是一个漏洞可能允许什么,被黑是指有人真的利用漏洞攻击了一个系统。截至 2026 年 10 月 23 日:CNCERT 说漏洞技术细节与 PoC 已广泛传播,CSA 在 10 月 23 日更新的警报中说已有大范围利用尝试的报告,但官方公告都没有给出被攻破网站的数量。如果你运营网站并发现异常,见网站被黑了怎么办。
公告里的“未经身份验证”是什么意思?
意思是攻击者不需要登录,也不需要在系统上有账户或密码。FIRST 的 CVSS 规范说,这样的攻击者在攻击前不需要访问漏洞系统的任何设置或文件。
所有 RCE 漏洞都是“严重”级别吗?
不是。评分取决于攻击有多容易、需要什么条件,也取决于影响,而且不同评分方可能看法不一:美国国家漏洞数据库(NVD)把 CVE-2026-109619 评为“高”(High),不是“严重”。各方评分的比较见CVE 编号和 CVSS 评分是什么。
RCE 是一种漏洞吗?
是。CVE 计划把漏洞定义为产品中一个或多个弱点的实例,它可以被利用,对机密性、完整性或可用性造成负面影响。RCE 描述的是这样一个弱点可能带来的一种后果。更宽泛的概念见漏洞是什么意思。
来源
- Security advisory: Critical remote code execution vulnerabilities, update now, PHP(2026 年 10 月 21 日)
- 关于PHP远程代码执行漏洞分析及修复建议的安全公告, 国家互联网应急中心 CNCERT(2026 年 10 月 22 日)
- Critical Vulnerabilities in PHP (PHP2Shell), Cyber Security Agency of Singapore
- Critical vulnerabilities in PHP require immediate patching, CISA
- CVSS v4.0 Specification Document, FIRST
- RCE via OOM corruption, GHSA-w8hw-w9fx-j79w, PHP
- RCE via stale global state, GHSA-6wmf-4rv5-p3rp, PHP
- CVE-2026-109619, National Vulnerability Database, NIST
- Glossary, CVE Program