网络安全 频道

FLAC音频格式被发现14个安全漏洞!

  【IT168 资讯】据国外媒体报道,eEye数字安全公司近日在FLAC(无损音频编码)文件的处理中发现了多达14个安全漏洞,影响不同的应用程序。根据操作系统不同,在一个易受攻击的应用程序内处理一个恶意的FLAC文件可能导致任意代码的执行。

  在.FLAC文件格式中的安全漏洞是由于没有正确的处理来自一些畸形文件的元数据值所导致的。这种文件格式可以从以下网站查看:http://flac.sourceforge.net/format.html.

  漏洞#1 元数据块大小堆溢出

  当使用FLAC库的有漏洞软件打开或处理畸形FLAC文件时,会使用大小字段引用指针分配内存(malloc)并将文件内容写入到这些内存缓冲区。如果将该值设置为很大(如0xFFFFFFFF)的话,就会触发堆溢出。

  漏洞#2 VORBIS标注字符串大小字段堆溢出

  如果将VORBIS标注字符串大小字段设置为很大值(如0xFFFFFFF)的话,在解析该值时就会触发堆溢出。

  漏洞#3 VORBIS标注字符串大小长度栈溢出

  使用FLAC库的应用程序在处理VORBIS标注元数据块中的数据时使用了预先确定的缓冲区大小,如果在超大的VORBIS标注数据字符串大小值中注入了超长的VORBIS标注数据字符串的话(如0x000061A8后跟随25,050个A),就会触发栈溢出。

  漏洞#4 图片MIME类型大小堆溢出

  图片元数据块允许在FLAC文件中为嵌入式相册封面注入MIME类型。当支持FLAC相册封面的应用程序试图处理超长的MIME类型大小字段时,就可能触发堆溢出。

  漏洞#5 图片MIME类型栈溢出

  如果对图片MIME类型设置了大约5000字节的大小值(具体取决于有漏洞的应用程序)和很大的字符串值,就可以触发栈溢出。

  漏洞#6 图片维度大小堆溢出

  攻击者可以通过修改图片元数据块的宽度和高度值触发堆溢出。当支持FLAC图形的应用程序试图渲染超大图形时,应用程序会根据维度字段分配内存,这可能导致用任意值覆盖内存值和指针。

  漏洞#7 图片描述大小堆溢出

  如果应用程序支持图片元数据块的话,超大的描述大小值(如0xFFFFFFFF)可能导致堆内存破坏并执行任意代码。

  漏洞#8 图片描述长度栈溢出

  这个漏洞类似于VORBIS标注字符串长度栈溢出漏洞,输入了超大的描述大小值和描述字符串值就可以触发栈溢出。

  漏洞#9 图片数据长度堆溢出

  远程攻击者可以通过将图片数据长度字段设置为超大的值(如0xFFFFFFFF)触发堆溢出。当支持图片元数据块的应用程序处理相册封面图形时,会使用这个字段确定嵌入图形文件的字节数,但没有执行边界检查便分配了内存,导致用FLAC文件中的任意值覆盖内存和指针。

  漏洞#10 图片URL栈溢出

  如果FLAC文件的MIME类型设置为“-->”,这个标记就表示Data的值不是图形文件的内容,而是图形文件所在的URL。如果将这个值设置为很大的字符串值的话,就会在支持FLAC图形的应用程序中触发栈溢出。

  漏洞#11 畸形图形/文件下载漏洞

  如果应用程序在下载文件之前没有确认文件类型的话,使用“-->”MIME类型标记可能导致下载任意文件。结合GDI+或其他图片渲染漏洞,这还可能导致代码执行。

  漏洞#12 填充长度堆溢出

  如果将填充长度字段值设置为很大值(如0xFFFFFFFF)的话,畸形的FLAC文件就会导致堆溢出。

  漏洞#13 查询表越界双重释放

  如果在畸形FLAC文件中对查询表值设置了无效的数据指针的话,就会触发双重释放的情况。此外所释放指针的位置可由FLAC文件中的任意值控制,这可能导致执行任意代码。

  漏洞#14 畸形查询表双重释放

  将多个查询表数据偏移设置为很大的值(如0x41414141)然后将查询表点(Seektable Point)设置为相互引用的话,就可能导致多个双重释放的情况。

  libFLAC 1.2.1版在今年9月份已经发布,修复了大多数易受攻击应用程序中的这些漏洞。不幸的是,许多厂商在它们的媒体应用程序中使用了libFLAC库,或者有的厂商使用了自制的FLAC文件分析器,它们并没有被通知自己的FLAC文件分析器存在安全缺陷。因此,在所有这些存在安全隐患的厂商与美国计算机紧急响应小组(US-CERT)联系上之前,安全建议的发布一直在被延期。

  建议

  临时解决方法:

  * 从播放器中卸载FLAC插件。

  厂商补丁:

  Gentoo已经为此发布了一个安全公告(GLSA-200711-15)以及相应补丁:GLSA-200711-15:FLAC: Buffer overflow

  链接:http://security.gentoo.org/glsa/glsa-200711-15.xml

  所有FLAC用户都应升级到最新版本:

  # emerge --sync

  # emerge --ask --oneshot --verbose ">=media-libs/flac-1.2.1-r1"

  还应运行revdep-rebuild重新编译所有依赖于旧版FLAC的软件包:

  # revdep-rebuild --library=libFLAC.*

  目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

  http://downloads.sourceforge.net/flac/flac-1.2.1.tar.gz?modtime=1189961849&big_mirror=0

0
相关文章