代码注入
代码注入 是什么?
代码注入一类漏洞,攻击者提供的数据被应用作为代码解释并执行,导致在应用上下文中实现任意执行。
代码注入是一个广义漏洞类别:不受信任的输入被纳入应用程序后续作为程序代码、配置或标记处理的内容,从而被运行时执行。具体形式包括 JavaScript 与 Python 的 eval 注入、服务端模板注入、表达式语言注入(OGNL、SpEL)、触发 gadget 链的不安全反序列化,以及基于用户数据的动态类加载。成功利用通常获得以应用身份运行的远程代码执行,常成为接管主机或集群的跳板。防御方法包括绝不从输入构建代码、使用参数化 API、限制动态特性,以及最小权限运行与沙箱化。
● 示例
- 01
eval(request.body.expr) 在 Node 服务中执行攻击者控制的 JavaScript。
- 02
Java 应用对用户提供的脚本调用 ScriptEngine.eval。
● 常见问题
代码注入 是什么?
一类漏洞,攻击者提供的数据被应用作为代码解释并执行,导致在应用上下文中实现任意执行。 它属于网络安全的 攻击与威胁 分类。
代码注入 是什么意思?
一类漏洞,攻击者提供的数据被应用作为代码解释并执行,导致在应用上下文中实现任意执行。
代码注入 是如何工作的?
代码注入是一个广义漏洞类别:不受信任的输入被纳入应用程序后续作为程序代码、配置或标记处理的内容,从而被运行时执行。具体形式包括 JavaScript 与 Python 的 eval 注入、服务端模板注入、表达式语言注入(OGNL、SpEL)、触发 gadget 链的不安全反序列化,以及基于用户数据的动态类加载。成功利用通常获得以应用身份运行的远程代码执行,常成为接管主机或集群的跳板。防御方法包括绝不从输入构建代码、使用参数化 API、限制动态特性,以及最小权限运行与沙箱化。
如何防御 代码注入?
针对 代码注入 的防御通常结合技术控制与运营实践,详见上方完整定义。
代码注入 还有哪些其他名称?
常见的别称包括: 远程代码执行, 任意代码执行。
● 相关术语
- attacks№ 392
Eval 注入
代码注入的一种具体形式,起因于将不受信任的输入传递给动态求值原语(如 JavaScript eval() 或 Python eval/exec)。
- attacks№ 202
命令注入
用户输入未经过滤就传入操作系统 shell,导致应用程序执行攻击者提供命令的攻击。
- attacks№ 1084
SQL 注入
一种代码注入攻击,将攻击者控制的 SQL 语句植入数据库查询,以读取、篡改或破坏数据。
- attacks№ 1009
服务端模板注入
将模板引擎语法注入到不可信输入中,导致模板渲染时在服务器上执行代码的攻击。
- vulnerabilities№ 539
不安全反序列化
应用对不可信数据进行反序列化的漏洞,攻击者可借此实例化任意对象,常常实现远程代码执行。
● 参见
- № 808PDF 漏洞利用