Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 220

代码注入

审核人Cybersecurity entrepreneur & security researcher

代码注入 是什么?

代码注入一类漏洞,攻击者提供的数据被应用作为代码解释并执行,导致在应用上下文中实现任意执行。


代码注入(CWE-94)是一个广义漏洞类别:不受信任的输入被纳入应用程序后续作为程序代码处理的内容,从而被运行时执行。与命令注入(触达操作系统 shell)不同,代码注入在应用自身的解释器内运行。具体形式包括 JavaScript 与 Python 的 eval 注入、服务端模板注入、表达式语言注入(OGNL、SpEL)、触发 gadget 链的不安全反序列化,以及基于用户数据的动态类加载。成功利用通常获得以应用身份运行的远程代码执行,常成为接管主机或集群的跳板。

三个标志性案例说明其危害。Apache Struts CVE-2017-5638 允许在畸形的 Content-Type 头中执行 OGNL 表达式;一个未打补丁的实例导致了 2017 年 Equifax 泄露事件,约 1.47 亿条记录外泄。Log4Shell(CVE-2021-44228),CVSS 10.0,使任何包含 JNDI 查找的被记录字符串触发远程 Java 类加载。Spring4Shell(CVE-2022-22965) 滥用 Spring 的数据绑定操纵 ClassLoader,植入 Web Shell。

flowchart TD
  A[不受信任的输入] --> B{是否到达执行代码的汇聚点?}
  B -->|eval / 模板 / OGNL / 反序列化| C[解释器执行攻击者代码]
  B -->|已校验 / 参数化| D[作为惰性数据处理]
  C --> E[以应用身份实现 RCE]
  E --> F[主机 / 集群沦陷]
  D --> G[安全]

防御措施:绝不从输入构建代码、模板或表达式;使用参数化与白名单化的 API;禁用或沙箱化动态求值与反序列化;及时修补框架;并以最小权限运行,使 RCE 的波及范围尽可能小。

示例

  1. 01

    eval(request.body.expr) 在 Node 服务中执行攻击者控制的 JavaScript。

  2. 02

    Java 应用对用户提供的脚本调用 ScriptEngine.eval。

常见问题

代码注入 是什么?

一类漏洞,攻击者提供的数据被应用作为代码解释并执行,导致在应用上下文中实现任意执行。 它属于网络安全的 攻击与威胁 分类。

代码注入 是什么意思?

一类漏洞,攻击者提供的数据被应用作为代码解释并执行,导致在应用上下文中实现任意执行。

如何防御 代码注入?

针对 代码注入 的防御通常结合技术控制与运营实践,详见上方完整定义。

代码注入 还有哪些其他名称?

常见的别称包括: 远程代码执行, 任意代码执行。

相关术语

另见