Java有缓冲区溢出吗?如果是的话你能给我一些场景吗?

有帮助吗?

解决方案

由于Java串是基于炭阵列和Java自动检查阵列边界,缓冲区溢出是只能在不寻常的情况:

  1. 如果你打电话给司机代码通过JNI
  2. 在JVM本身(通常是用C++编写)
  3. 口译员或JIT编译器不能正常工作(Java字节规定的边界检查)

其他提示

管理语言,如Java和C#不具有这些问题,但具体的虚拟机(JVM / CLR /等),其实际运行的代码可能。

出于所有意图和目的,不。

Java有数组 边界检查 这将检查是否无法从分配的数组之外的区域访问数据。当尝试访问超出数组大小的区域时, ArrayOutOfBounds 将抛出异常。

如果存在缓冲区溢出,则可能是 Java 虚拟机中的错误造成的,据我所知,这不是 Java 语言规范或 Java 虚拟机规范中编写的预期行为。

一个缓冲区溢出在严格意义上的复盖叠或堆本身将需要:

  1. 在一个错误的框架(这些都过去存在的和可再好)
  2. 使用JNI(基本上不再使用管理的代码)

一个缓冲区溢出在某种意义上说,你们的代码使用缓冲和你的代码是负责分析,它正确,但未能这样做是可能的。例如你可能会写XML parser和别人能为您提供一个错误格式(或合法的但是不常见)的请求,由于设计的分析器复盖先前经过验证的数据与一些有效载荷,这将会导致应用程序的行为,严重。

这后一种形式是不太可能但不佳的书面sql串的清洁能广泛地分发,有这样的问题,因为这将是一个迷人的目标。

是的,没有。不,你不能真正创造错误地将自己打开了一个缓冲区溢漏洞,因为它是一个管理存储器模型。然而,可以缓冲溢漏洞JVM和JAVA.看到这个选择咨询:

http://secunia.com/advisories/25295

或看到这些古老的报告在前面几JAVA和java运行环境漏洞:

  • 整和缓冲溢漏洞Java运行环境(java运行环境)"unpack200"罐子拆解的实用可能导致升级权限的 https://download.oracle.com/sunalerts/1020225.1.html

    整和缓冲溢漏洞在Java运行 环境(java运行环境)与拆程序和Java网页的开始 应用中使用的"unpack200"罐子拆解的实用可以允许 不可信的小程序或应用程序升级的权限。例如, 一个不可信的小程序可以给予自身的权限于阅读和写 地方文件或执行当地的应用程序访问 用户运行不受信任的程序。

    太阳承认谢谢,"regenrecht"工作与iDefense 译(http://labs.idefense.com/vcp/)和克里斯*埃文斯的歌对 把这些问题对我们的注意。

  • 多个漏洞已经确定,在太阳Java开发工具包(JAVA)和Java运行环境(java运行环境). https://security.gentoo.org/glsa/200705-23

    一个未指定的脆弱性涉及"错误使用的系统 课程"是报告的富士通安全小组。此外, Chris Evans从Google的安全小组报告的一个整数溢出 导致缓冲区溢出在国际刑事法院分析器使用JPG或BMP 文件和一个不正确的open()call to/dev/tty当处理 某些BMP文件。

的Java(和.NET)虚拟机赶上试图保留存储器以外编写代码。不正确地处理这个应用程序仍然可能会导致安全问题。如果恶意用户可以通过输入无效的输入触发的异常,他们可以做的例如拒绝服务攻击。

前面已经指出的那样,Java已经作为一种语言,边界上的所有内存访问检查的,如果这里有一个错误,JVM有过错,而不是程序。然而,更要注意,这是一个类似的说法在Java内存泄漏;而不可能破坏堆栈,在错误的地方的ArrayOutOfBoundsException,这是不正确的处理,仍然可以最终拧您的系统。

这是可能的方法来写入到阵列的有效条目,它不打算,通常通过整数溢出。

有关实例的以下不足以检查边界:

/* !! WRONG !! */ 0 <= off && 0 <= len && off+len <= buff.length /* !! WRONG !! */

IIRC,StringBuffer曾经有过这样的一个bug,但没有什么有趣的,你可以用它做什么。

您可以想见,导致在Java程序中的缓冲区溢出如果你使用Java本地Interace(JNI)工具来调用外部代码,外部代码有被利用的问题。这是相当罕见的,因为大多数的应用避免使用JNI,其中可能的。

一的JAVA的主要特点是安全。写在解释型语言程序不容易出现缓冲区溢出攻击,但你总是可以导致解释本身就是一个缓冲区溢出。 虽然这将是困难的。同样的Python也是一种解释语言,并且从缓冲区溢出的安全。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top