小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(一)

这篇具有很好参考价值的文章主要介绍了小研究 - JVM 逃逸技术与 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逃逸攻击的防御策略。

目录

1  绪论

1.1  背景介绍

1.2  研究意义

1.3  研究现状

1.4  本文所做工作

1.5  文章结构


1  绪论

在互联网技术飞速发展的现代社会,互联网的规模正在快速增长,接入互联网的计算机也越来越多。对于个人计算机用户乃至企业、政府计算机用户,其信息安全问题也逐渐成为计算机互联网领域中的研究热点。浏览器作为接入互联网的窗口应用,其本身安全问题及其插件安全问题也备受重视。Java Applet作为浏览器的一种插件,在丰富浏览器功能、提升用户体验的同时,也引入了一些值得关注的安全问题。本文着眼于JRE漏洞引发的安全攻防问题,针对几种特定类型的JRE漏洞展开分析、研究与挖掘。本章内容将简要介绍JVM逃逸技术, JRE漏洞研究背景、意义、现状,文章组织结构等等。

1.1  背景介绍

Java语言是世界上最为流行的面向对象编程语言之一,被广泛应用于Web开发、嵌入式设备、手机应用(如BlackBerry和Android)、个人计算机乃至大型服务器之中。作为Java开发人员会经常接触到JDK、JRE和JVM等概念。JDK是Java Development Kit的缩写,意为Java语言开发工具,作为Java程序的开发人员,是必须安装这个软件包的。而作为仅需要运行Java程序的用户,只需安装JRE (即Java Runtime Environment, Java运行时环境), JVM (Java Virtual Machine)代表 Java 虚拟机,是 JRE 的重要组成部件,主要用于解释和执行 Java字节码文件。JDK以及JRE几经变迁,目前的主流版本是由Oracle公司提供的。除了官方提供的之外,还有开源的OpenJDK项目1,以及Apple、 IBM等公司基于官方JRE开发的一些JRE程序。由于Java语言优越的跨平台特性,Windows、Linux/Unix、 Mac OS等几乎所有主流操作系统都可以找到适合的JRE版本。

在HTML语言中,有一个"applet"标签2,用于指定所要运行的Java Applet小程序,现在几乎所有常见的浏览器都会支持这个标签。Applet由Java语言编写,其main class需要继承java.applet.Applet类。由于Java语言功能上的丰富性,所编写的Java Applet程序可以极大地丰富Web页面的功能,提供更好的用户体验。不过,在Web技术飞速发展的现代, Adobe Flash, Microsoft Sliverlight等技术的出现,逐渐替代了Java Applet技术在Web页面中的应用。但大多数浏览器仍然支持 Java Applet扩展,在 html文件中写入如下代码:

<applet code=”MyApplet.class”></applet>

用户访问这个页面的时候,会将Java Applet程序MyApplet.class下载到本地,由本地的 JVM 加载并执行。

这样以来,对于攻击者而言,便产生了一个攻击面(Attack Surface):攻击者利用JRE漏洞,编写恶意的Java Applet,挂载到Web页面中,将URL发送给受害者;若安装了JRE的受害者访问了恶意页面,便执行了Applet,触发本地JRE漏洞,发起了逃逸出本地JVM而针对操作系统的攻击,从而使受害者的计算机被恶意控制,造成远程代码执行、隐私信息泄露等安全问题。本文将这样一个过程称为“JVM逃逸”,其中利用的漏洞为“JRE漏洞”。

1.2  研究意义

近年来,以浏览器及其插件作为攻击面的安全事件不断增多,典型的安全问题包括Internet Explorer, FireFox等浏览器本身的漏洞(如处理JavaSeript代码不当而产生的Use-After-Free漏洞21)、Adobe Flash的解析漏洞、JRE漏洞等等。在众多安全事件中,利用JRE漏洞发起的 Java Applet 攻击事件近年来占据了重要地位。2011年的调查数据显示, 37%的Windows操作系统攻击事件是由JRE漏洞引起的,如图1-1所示。

小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(一),# 小研报,jvm,JRE 漏洞,JVM 逃逸,JRE 沙箱,漏洞挖掘,寄存器符号化

这些漏洞在利用手段上有着较大的相似性,然而在利用技术门槛上却有所不同。为了对抗漏洞利用技术,现如今的操作系统如Windows 7、 Windows 8都开启了ASLR和DEP等防御功能3.如图1-2所示,攻击者在挖掘到浏览器或其插件的漏洞之后,还需编写exploit代码绕过安全防护机制,这样就大大提升了攻击技术的门槛。

JRE中包含的原生API包括用Java语言编写的Java API和使用C/C++编写的原生层API (作为编译好的动态链接库而存在于JRE中)。对应的, JRE漏洞可分为Java API设计缺陷和Java原生层漏洞,其中Java API设计缺陷较其他类型漏洞更易于利用,利用代码更容易变种,同时可以绕过ASLR和DEP等底层防护手段。这就很好地解释了图1-1中出现的现象,也从侧面反映了JRE漏洞的分析与研究在近几年成为研究热点。

由上述内容可知, JRE漏洞由于其特殊的利用特性,成为无论攻击者还是安全研究人员所关注的热点问题。研究JRE漏洞的成因、特点, JVM逃逸技术中的攻防手段,以及从安全角度出发的JRE漏洞挖掘技术,显得十分有研究价值。

小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(一),# 小研报,jvm,JRE 漏洞,JVM 逃逸,JRE 沙箱,漏洞挖掘,寄存器符号化

1.3  研究现状

在本课题领域,国内外的研究方向更偏向于 JVM 逃逸手段也就是 JRE 漏洞的利用技术,例如2013年9月份的Syscan360安全会议上的议题【6】,就主要介绍了利用Java语言的特性配合JRE漏洞绕过Windows 7下ASLR以及DEP的一些方法。而对于JRE漏洞挖掘的研究,多集中于Java API设计缺陷的挖掘。波兰安全公司SE曾发布一份技术白皮书【7】,系统地介绍了JRE安全机制与Java API设计缺陷挖掘与利用技术。而Java原生层漏洞相对来说原理复杂,较难分析利用,一直是国内外Java安全研究的难点。再者,传统的JRE漏洞挖掘方法多采用静态源代码审计的白盒测试方法,颇费人力。对于Java原生层漏洞挖掘,一直缺乏一种自动化的挖掘方法。
针对上述研究现状,本文针对两种不同类型的JRE漏洞,分别制定漏洞挖掘方案,在针对Java原生层漏洞的挖掘工作中,本文引入符号执行技术,旨在提高漏洞挖掘的自动化程度,尽可能减少安全人员的分析工作,提高漏洞挖掘效率。在JVM逃逸手段的研究上,本文将集中于杀毒软件等防御工程的脆弱性,诸如ASLR和DEP这类操作系统级别的安全防护则不是本文讨论范围内的重点。

1.4  本文所做工作

本文的主要研究内容包括 Java安全机制探究, JRE漏洞分析, JRE漏洞挖掘技术与实现,JRE 漏洞的利用与防范。本文所做的研究工作如下:

1.探究Java安全机制, JRE沙箱组成部件,总结各关键组件特性,挖掘其潜在脆弱点。

2.总结现有JRE漏洞类型并作分类,对每种分类中具备代表性的漏洞,基于公开的PoC源代码进行分析与调研。

3.针对不同类型的JRE漏洞,制定漏洞挖掘方案,选择对应的漏洞挖掘技术,结合源代码审计与基于符号执行的灰盒测试技术进行漏洞挖掘工作,最终发现数个JRE安全问题,并给出成果展示。

4.分别从攻击者和防御者两种视角,分析并总结现有的JVM逃逸攻击与防御手段,研究并发现主流杀毒软件的脆弱性,并给出多维防御方案。

1.5  文章结构

本文共分为六章,各章标题及内容概要如下所示:

第一章:绪论。简要介绍本文内容相关的基本知识背景,解释JVM逃逸与JRE漏洞概念,给出JRE漏洞问题的研究意义与研究现状,并简要概括本文所做工作。

第二章:Java安全机制研究。根据Java安全机制的几大重要模块,分别深入剖析其安全逻辑设计的特点以及潜在安全问题,为后续内容提供知识背景。

第三章:JRE漏洞分析。针对第二章中的内容总结出JRE的潜在缺陷点,结合现有已知的JRE漏洞作分类研究,从Java API设计缺陷、Java原生层漏洞、类型混淆以及自签名问题等角度,深入分析对应漏洞类型的PoC代码,并分别总结其漏洞特征。

第四章:JRE漏洞挖掘研究。基于第三章的工作展开JRE漏洞挖掘工作,针对Java API设计缺陷型漏洞和Java原生层漏洞分别给出不同的漏洞挖掘解决方案,并通过白盒审计与灰盒测试实验发现数个JRE安全问题,最终给出分析。

第五章:JVM逃逸的利用与防范。分别从攻击者和防御者的角度,结合漏洞挖掘工作中的研究,指出当前杀毒软件防御策略的薄弱环节,总结漏洞利用技巧。最后分析和比对各软件厂商的防范措施,总结其优劣并提出防御策略。

第六章:总结与展望。总结本文出现的关键内容,根据当前研究形势提出未来的研究方向和策略。文章来源地址https://www.toymoban.com/news/detail-676409.html

到了这里,关于小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 003 JDK、JRE、JVM

    JDK的全称是Java Development Kit, 它是Java程序开发工具包,包含了JRE和编译器等开发工具。 JRE的全称是 Java Runtime Environment,它是Java程序的运行时环境,包含了JVM和运行时所需要的类库。 JVM的全称是Java Virtual Machine,它是Java虚拟机,Java程序在此容器内运行,这就是区别于C/C++语

    2024年01月22日
    浏览(40)
  • JVM 常量池、即时编译与解析器、逃逸分析

    常量池底层使用HashTable key 是字符串和长度生成的hashValue,然后再hash生成index, 该index就是key;Value是一个HashTableEntry; 1、key     hashValue = hash string(name, len)     index = hash to index(hashValue);     1、根据字符串(即 name)以及字符串的长度计算出hashValue     2、根据hashValue计算出

    2024年02月11日
    浏览(54)
  • JDK,JRE,JVM的区别

    JVM,也叫java虚拟机,用来运行字节码文件, 可将字节码翻译为机器码 ,JVM是实现java跨平台的关键,可以让相同的java代码在不同的操作系统上运行出相同的结果。 JRE,也叫 java运行时环境 ,包含JVM和java标准类库。 JDK,也叫 java开发工具包 ,能够 创建 和 编译java程序 (编译

    2024年02月13日
    浏览(53)
  • jvm、jre、jdk的关系

    jvm Java 虚拟机(JVM)是 运行 Java 字节码 的虚拟机。 jre JRE(Java Runtime Environment) 是 Java 运行时环境 。它是运行已编译 Java 程序所需的所有内容的集合,主要包括 Java 虚拟机(JVM)、Java 基础类库(Class Library)。 jdk JDK(Java Development Kit),它是功能齐全的 Java SDK,是提供给开

    2024年02月19日
    浏览(36)
  • JVM,JRE和JDK的区别

    Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。众所周知java.exe是java class文件的执行

    2024年02月11日
    浏览(45)
  • jdk、jre和jvm的关系

    JDK 是Java开发工具包,它提供了开发Java应用程序所需的工具和库。JDK包括JRE,以及用于编译、调试和运行Java代码的编译器(javac)、调试器(jdb)和其他开发工具。JDK还包含了Java标准类库和其他用于开发Java应用程序的工具。 JRE 是Java运行时环境,它是Jav1a程序在计算机上运行

    2024年02月16日
    浏览(39)
  • 【秒懂JDK,JRE,JVM的关系】

      🌠作者:@TheMythWS. 🎇座右铭:不走心的努力都是在敷衍自己,让自己所做的选择,熠熠发光。  ​ 先用一张图来直观感受 JDK JRE JVM之间的关系 : 先说JDK和JRE: 首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行

    2024年02月03日
    浏览(45)
  • 【论文阅读】 智能合约安全漏洞检测技术研究综述

    2016 年 6 月,黑客利用 DAO(decentralized autonomous organization)合约的 可重入漏洞 , 窃取了价值约 6000 万美元的以太币(即以太坊数字货币); 2017 年 7 月, 由于 Parity 多签名钱包合约的 Delegatecall 漏洞 (parity multi-sig wallet delegatecall), 价值近 3 亿美元的以太币被冻结; 2018 年 4 月, 恶意攻击者

    2024年03月14日
    浏览(63)
  • JDK、JRE 和 JVM 之间的区别

    虚拟机 JVM(Java Virtual Machine)是一个抽象机器。之所以称为虚拟机,是因为它在物理上并不存在。它是一个规范,它提供了一个可以在其中执行 Java 字节码的运行时环境。它还可以运行那些用其他语言编写并编译为 Java 字节码的程序。 JVM 可用于许多硬件和软件平台。JVM、J

    2024年02月03日
    浏览(48)
  • 简单介绍JDK、JRE、JVM三者区别

    文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光,等工作之后,你就会发现,想学习真的需要挤时间,厚积薄发啦! 1995年Sun公司在SunWorld大会上发布了Java1

    2024年01月17日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包