当前位置: 首页 > news >正文

北京中御建设公司网站wordpress网站设计

北京中御建设公司网站,wordpress网站设计,每个网站都有服务器吗,wordpress搭建ctfJava语言是最为流行的面向对象编程语言之一#xff0c; Java运行时环境#xff08;JRE#xff09;拥有着非常大的用户群#xff0c;其安全问题十分重要。近年来#xff0c;由JRE漏洞引发的JVM逃逸攻击事件不断增多#xff0c;对个人计算机安全造成了极大的威胁。研究JRE安… Java语言是最为流行的面向对象编程语言之一 Java运行时环境JRE拥有着非常大的用户群其安全问题十分重要。近年来由JRE漏洞引发的JVM逃逸攻击事件不断增多对个人计算机安全造成了极大的威胁。研究JRE安全机制、JRE漏洞及其挖掘、JVM逃逸攻防技术逐渐成为软件安全领域的热门研究方向。 针对Java层API与原生层API, JRE安全机制分别包括JRE沙箱与JVM 类型安全机制。本文针对JRE沙箱组件及其工作原理进行剖析总结其脆弱点分析调研JVM安全机制提出其脆弱点在于Java原生层漏洞为JRE漏洞挖掘工作提供理论基础。 对于JRE漏洞本文进行漏洞分类研究提取Java API设计缺陷、Java原生层漏洞两种JRE漏洞类型的典型漏洞进行分析总结漏洞特征为漏洞挖掘工作建立漏洞模型。 根据JRE漏洞分析中建立的漏洞模型本文采用源代码审计的方法开展Java API设计缺陷类型的漏洞挖掘工作发现了数个Oracle JRE、OpenJDK和Apple JRE 的 Java API 设计缺陷问题。在 Java原生层漏洞挖掘工作中出于Java原生层漏洞的特殊性本文基于程序分析领域的符号执行技术提出一种寄存器符号化监控方法选取开源符号执行平台S2E作为漏洞挖掘工具并且基于其实现了针对JRE原生层漏洞挖掘的辅助插件 SymJava 和 SymRegMonitor基于 OpenJDK 和 Oracle JRE逆向代码进行源代码白盒审计并构建了用于进行漏洞挖掘的 Java 测试用例最后对36个调用Java原生层API的Java测试用例进行实际测试发现了共计6 个 JRE原生层安全隐患其中2 个可被攻击者恶意利用并给出漏洞分析和 PoC。 针对 JVM 逃逸攻防问题本文分别从攻击和防御角度提出 JVM逃逸攻击的5 个关键元素针对每个元素进行攻防技术研究并通过绕过杀毒软件静态检测的实验证明了本文提出的 JVM 逃逸攻击技术。最后本文从多角度给出JVM逃逸攻击的防御策略。 目录 4.2.2  寄存器符号化监测方法 4.2.3  SymJava 与 SymRegMonitor 设计与实现 4.2.4  源代码审计与 Java 测试用例构建 4.2.5  漏洞挖掘测试实验 4.3  漏洞挖掘研究成果展示与分析 4.3.1  Sun Toolkit 导致系统属性泄漏 4.3.2  SecuritySupport 导致系统属性泄漏 4.3.3  Mac OS X 本地文件探针漏洞 4.3.4  任意类对象获取漏洞 4.3.5  利用 JRE 原生层漏洞实现远程代码执行 4.3.6  其他JRE原生层安全问题 4.4  本章小结 4.2.2  寄存器符号化监测方法 首先给出寄存器符号化的定义 假设有一段代码函数foo有一个int类型的参数a通过S2E的符号标记API可以将其标记为符号值记为x然后编译该代码拷贝进入Qemu加载的镜像中执行。在执行过程当中遇到与x相关的任何运算时都记作一个算术表达式。执行到某处时从Klee的指令解析模块中发现寄存器R的值等于bxcb和c为常量或其他符号值或其他算术表达式就称符号x的扩展覆盖寄存器R或称寄存器 R 符号化。 寄存器符号化证明存在一条 source-and-sink32路线攻击者通过精心构造参数a覆盖ESP可以让程序跳转到自己想要的位置比如一段具备攻击性质的shellcode。针对这样的寄存器覆盖问题本文提出寄存器符号化监控方法。 4.2.3  SymJava 与 SymRegMonitor 设计与实现 S2E 原生的符号标记 API 只能针对 Linux 下的 C代码因此我们开发了插件SymJava以JNI的方式标记Windows平台下Java代码中的变量。SymJava的工作原理如图4-2 所示。 SymJava可以标记的变量类型和API如表4-3所示。 通过调用表4-3 中的 API可以得到相应类型的符号值。例如要将一个 Java代码中的int型变量标记为符号值伪代码如表4-4所示。 S2E 除了三大模块之外还提供给开发者良好的扩展性开发者基于 S2E 开发了一些用于程序分析的辅助插件【33】例如用于监控Windows平台指定进程运行状态的WindowsFunctionMonitor用于生成样本数据的TestcaseGenerator用于驱动程序漏洞挖掘的SymDrivel341等等。为了实现寄存器符号化的监控我们开发了SymRegMonitor。其架构如图4-3所示。 以寄存器EAX的监控为例 SymRegMonitor的伪代码如表4-5所示。 4.2.4  源代码审计与 Java 测试用例构建 使用符号执行平台进行漏洞挖掘工作之前需要筛选出可以构建测试用例并符合S2E符号标记规则的Java Native API。本研究采取源代码人工审计的方法来进行该筛选工作并选取 OpenJDK 7 作为源代码审计对象。 相对的进行漏洞挖掘的目标API可分为以下两类 第Ⅰ类可以被直接调用的公有 Native API 第II类存在 API 调用链的可被外界干扰的私有 Native API。 在第 Ⅰ 类当中static 关键字修饰的静态 Native API 调用起来更加简单一旦存在漏洞其利用就变得非常简单。所以在本项研究中特别提出第1类第I 类的子集即ICI 第IIcI类static 关键字修饰的公有 Native API. 本文的源代码审计工作基于寻找上述第Ⅰ类与第II类目标 API而展开由于Oracle JRE 并不开源需要通过 jad 等 class 文件逆向工具进行反编译工作量较大。本文进行的研究针对开源的OpenJDK7-b147版本源代码进行审计确认发现第Ⅰ类或第II类 API之后再逐一对 Oracle JRE 的同一 class 文件进行反编译并作比对最终确定所有进行漏洞挖掘的目标API其类型和数量如表4-7所示。 本研究选取了 com.sun.org.apache.xalan.internal.utils.ObjectFactory.findProvideClass 这一缺陷 API。该 API 通过传入一个字符串类型的参数指定要获取 class 的全限定名可以获取任意包中的class对象继而可以通过构造Expression表达式调用任意第1类API详细分析见4.3.4小节。该过程伪代码如表4-8所示。 4.2.5  漏洞挖掘测试实验 本实验使用了开源符号执行平台 S2E基于插件 SymJava 和 SymRegMonitor对36个Native API构造的测试用例进行了测试。由于符号执行是计算资源密集型的方法本实验选取了配置有12核24线程Intel Xeon处理器和72GB内存的计算机作为测试机器系统环境为Ubuntu 12.04 Server。 4.3  漏洞挖掘研究成果展示与分析 本小节给出4.1 小节以及4.2小节中漏洞挖掘工作的研究成果并作分析。 4.3.1  Sun Toolkit 导致系统属性泄漏 漏洞存在于 sun.awt.SunToolkit.getSystemProperty在白盒审计版本 OpenJDK7-b147 时发现。该方法的源代码如表4-10 所示。 这个方法具备缺陷 API 的所有特征存在信任调用链——可以构造表达式Expression 间接调用参数可控——可以控制系统属性字符串参数关键代码被doPrivileged 代码块包裹——获取系统参数的方法 System.getProperty从而造成系统属性隐私信息泄露。利用方法也很简单通过构造一个Expression来执行该方法与 CVE-2012-4681 类似。不过在 Oracle JRE 7 中的 SunToolkit 类删除了这个方法修补方式也跟 CVE-2012-4681 一样。 4.3.2  SecuritySupport 导致系统属性泄漏 漏洞存在于如下类中 com.sun.org.apache.xalan.internal.utils.SecuritySupport.getSystemProperty 在审计版本Apple JRE 6u27时发现该方法源码如表4-11所示由Windows下的 jad 反编译得到。 这里再补充一点可以获取到的系统属性是 System.getProperty 所提供的主要包括系统用户名、主目录、操作系统类型和版本、JRE版本、JRE安装路径、JVM 版本号等等如表4-12所示。 4.3.3  Mac OS X 本地文件探针漏洞 漏洞存在于类 com.apple.eio.FileManager.moveToTrash 中在审计版本 Apple JRE 6u27时发现。该方法的源代码如表4-13所示。 4.3.4  任意类对象获取漏洞 漏洞存在于如下类中 com.sun.org.apache.xalan.intemal.utils.ObjectFactory. findProviderClass. 在审计版本Apple JRE 6u27时发现该方法源码如表4-14所示由Windows下的 jad 反编译得到。 该方法的逻辑为若securityManager不为null就直接返回Class.forName的结果。通过控制字符串参数s可以获取到任意类的class对象。假如获取的目标类含有public static的存在漏洞的API就可以配合这个缺陷API构造一个Expression来调用这个存在漏洞的API. 4.3.5 小节将详细介绍这一漏洞利用思路。 4.3.5  利用 JRE 原生层漏洞实现远程代码执行 该原生层漏洞所在位置 sun.java2d.DefaultDisposerRecord.invokeNativeDispose. 该方法声明如下所示 public static native void invokeNativeDisposelong disposerMethodPointer, long dataPointer 通过查看OpenJDK的Native Code源码可知这个native方法的具体实现为将disposerMethodPointer和dataPointer两个长整型参数转化为指针其中disposerMethodPointer被转化为函数入口指针相当于call这个指针指向的地址所以disposerMethodPointer的值可以覆盖EIP dataPointer指向的是被“call方法所需的参数会覆盖EAX地址这样以来结合堆喷射技术可以执行shellcode 由于这个类位于sun.包是在访问限制列表中的。但通过4.3.4小节提到的Java API设计缺陷可以得到该类的一个class对象再通过构造Expression可以调用到缺陷方法invokeNativeDispose。 4.3.6  其他JRE原生层安全问题 SymRegMonitor发现的6个安全问题所在的API、寄存器符号化情况以及可造成的影响如表4-15所示。 4.4  本章小结 本章申明JRE漏洞挖掘研究的背景和意义针对Java API设计缺陷和Java原生层漏洞分别制定不同的漏洞挖掘方案通过白盒审计和历史漏洞规则制定相结合审计了若干版本的JRE发现了数个Java API设计缺陷而针对原生层漏洞的挖掘工作则引入符号执行理论基于开源框架S2E开发了用于检测寄存器符号化的插件SymJava和SymRegMonitor结合白盒审计、测试用例构建最终通过实验发现了数个Java原生层安全问题。在本章4.3 小节对本研究中的漏洞挖掘工作发现的安全问题作了总结和分析。
http://www.sadfv.cn/news/113183/

相关文章:

  • 想做网站要学什么手机版oa
  • 用.net做视频网站的案例网站开发有哪些风险
  • wordpress 站群模板做企业网站设计与实现
  • 企业营销型网站的内容展示型网站建设标准
  • 青岛外贸建设网站制作装修设计图免费软件
  • 专业商城网站制作公司个人免费网站建站排名
  • 京东网站建设案例大气手机企业网站
  • 小说网站开发业务逻辑做wish如何利用数据网站
  • 如何做网站霸屏国外网站建设官网
  • 怎么做论坛的网站吗在屈臣氏做网站运营
  • 怎么建设自己淘宝网站电脑建立网站平台
  • 两学一做网站注册做网站还要维护吗
  • 网站seo优化方法中关村在线官网首页
  • 做ui的网站有哪些内容ico交易网站怎么做
  • 郑州网站设计多少钱广州档案馆建设网站
  • 网站成本费用设计页面图片
  • 对网站的赏析导入表格数据做地图网站
  • 桐城58网站在那里做wordpress 弹出视频播放
  • 网站建设中 动画百度推广收费标准
  • 企业官方网站开发如何入账廊坊手机网站建设
  • 自己编程做网站翡翠原石网站首页怎么做
  • 青海网站维护网络科技工作室起名
  • 发布企业信息的网站剪辑培训班一般学费多少
  • 网站的站点地图怎么做湖南视频网站建设
  • 自助建站免费搭建个人网站国内服务器做彩票网站安全吗
  • 做网站排名的公司有哪些app拉新渠道
  • 网站开发作为固定资产怎么摊销怎样推广小程序平台
  • 网站预约挂号怎么做平易云 网站建设
  • seo01网站设计网站策划书
  • 网站开发和后台维护微信开发网站开发未来前景