反调试-动态代码分析
1、动态解析代码
许多编程语言都允许动态解析源代码指令。这使得程序可以执行基于用户输入的动态指令。若不经过适当的验证,程序会错误地认为由用户直接提供的指令仅会执行一些无害的操作,会正常解析并执行该指令。远程用户可以提供特定URL以将任意代码传递给eval()语句,从而导致代码执行。该种攻击会使用与目标Web服务相同的权限执行代码,包括操作系统命令。本文以JAVA语言源代码为例,分析“动态解析代码”缺陷产生的原因以及修复方法。该缺陷的详细介绍请参见CWE ID 95: Improper Neutralizationof Directives in Dynamically Evaluated Code (‘Eval Injection’)(http://cwe.mitre.org/data/definitions/95.html)。
2、动态解析代码的危害
攻击者可以利用该漏洞注入恶意代码访问受限的数据和文件。几乎在所有情况下,注入恶意代码都可能导致数据完整性缺失,也有可能导致执行任意代码。
从2018年1月至2019年8月,CVE中共有1条漏洞信息与其相关。漏洞信息如下:
CVE 概述
CVE-2018-7046 DISPUTED Kentico 版本9到11中的任意代码执行漏洞允许远程认证用户通过页面 – >编辑 – >模板 ->编辑模板属性来动态解析上下文代码以执行任意操作系统命令 。注意:供应商修复该漏洞,授权用户可以编辑和更新ascx代码布局。
3、示例代码
3.1 缺陷代码