Sun JDK是一个流行的Java软件开发工具包。 Sun JDK在处理畸形包含畸形内容的JPG/BMP图形文件时存在整数溢出漏洞,远程攻击者可能利用此漏洞通过诱使用户处理恶意文件控制用户机器。 Sun JDK捆绑了一个基于javax.imagio.ImageIO类的图形解析API,程序以如下方式执行这个API: import javax.imageio.ImageIO; import javax.imageio.ImageReader; import java.util.Iterator; import java.io.InputStream; import java.io.FileInputStream; import java.io.ByteArrayInputStream; import javax.imageio.stream.MemoryCacheImageInputStream; import javax.imageio.stream.ImageInputStream; public class ImgReader { public static void main(String[] args) throws Exception { InputStream is = new FileInputStream(args[0]); ImageInputStream iis = new MemoryCacheImageInputStream(is); Iterator it = ImageIO.getImageReaders(iis); ImageReader reader = it.next(); reader.setInput(iis); int width = reader.getWidth(0); } } 程序将第一个命令行参数用作图形文件名并传送给JDK图形解析API。JPEG和BMP解析器支持嵌入的ICC配置文件,如果用户受骗打开了设置有恶意的嵌入ICC配置文件的JPG和BMP图形的话,就可能触发整数溢出,导致JVM崩溃或执行任意指令。 此外BMP文件解析器在解析BMP文件时试图打开本地文件(/dev/tty),这个过程可能导致图形解析线程挂起。
Sun JDK是一个流行的Java软件开发工具包。 Sun JDK在处理畸形包含畸形内容的JPG/BMP图形文件时存在整数溢出漏洞,远程攻击者可能利用此漏洞通过诱使用户处理恶意文件控制用户机器。 Sun JDK捆绑了一个基于javax.imagio.ImageIO类的图形解析API,程序以如下方式执行这个API: import javax.imageio.ImageIO; import javax.imageio.ImageReader; import java.util.Iterator; import java.io.InputStream; import java.io.FileInputStream; import java.io.ByteArrayInputStream; import javax.imageio.stream.MemoryCacheImageInputStream; import javax.imageio.stream.ImageInputStream; public class ImgReader { public static void main(String[] args) throws Exception { InputStream is = new FileInputStream(args[0]); ImageInputStream iis = new MemoryCacheImageInputStream(is); Iterator it = ImageIO.getImageReaders(iis); ImageReader reader = it.next(); reader.setInput(iis); int width = reader.getWidth(0); } } 程序将第一个命令行参数用作图形文件名并传送给JDK图形解析API。JPEG和BMP解析器支持嵌入的ICC配置文件,如果用户受骗打开了设置有恶意的嵌入ICC配置文件的JPG和BMP图形的话,就可能触发整数溢出,导致JVM崩溃或执行任意指令。 此外BMP文件解析器在解析BMP文件时试图打开本地文件(/dev/tty),这个过程可能导致图形解析线程挂起。