FreeBSD libarchive畸形文档处理拒绝服务及缓冲区溢出漏洞

2007-07-22T00:00:00
ID SSV:2029
Type seebug
Reporter Root
Modified 2007-07-22T00:00:00

Description

FreeBSD就是一种运行在Intel平台上、可以自由使用的开放源码Unix类系统。

FreeBSD的libarchive库在处理畸形格式的TAR及PAX文件时存在漏洞,攻击者可能利用此漏洞通过诱使用户处理恶意文档控制用户系统。

FreeBSD中所捆绑的libarchive库提供灵活的接口用于读写tar和cpio之类的流文档文件,该库中用于解析tar和pax交换格式的代码中存在几个漏洞。如果pax扩展头中文档过早结束或pax扩展头中出现某种破坏的话,就会陷入死循环;如果pax扩展头后的tar头中文档过早结束的话,或如果pax扩展头中出现某种类型的破坏的话,就会引用空指针;如果pax扩展头中出现了某种破坏的话,错误的计算缓冲区长度会导致缓冲区溢出。

如果攻击者能够导致libarchive解析所选择的畸形文档,包括对文档运行tar -x(解压)或tar -t(列出项)命令,就会导致libarchive陷入死循环、出现core dump,或执行攻击者所提供的任意指令。

FreeBSD 临时解决方法:

  • 不要读取不可信任来源的tar或pax扩展文档。

厂商补丁:

FreeBSD

FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-07:05)以及相应补丁: FreeBSD-SA-07:05:Errors handling corrupt tar files in libarchive(3) 链接:<a href="ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-07:05.libarchive.asc" target="_blank">ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-07:05.libarchive.asc</a>

补丁下载:

执行以下步骤之一:

1) 将有漏洞的系统升级到5-STABLE或6-STABLE,或修改日期之后的RELENG_6_2、RELENG_6_1或RELENG_5_5安全版本。

2) 为当前系统打补丁:

以下补丁确认可应用于FreeBSD 5.5、6.1和6.2系统。

a) 从以下位置下载相关补丁,并使用PGP工具验证附带的PGP签名。

fetch <a href="http://security.FreeBSD.org/patches/SA-07:05/libarchive.patch" target="_blank">http://security.FreeBSD.org/patches/SA-07:05/libarchive.patch</a>

fetch <a href="http://security.FreeBSD.org/patches/SA-07:05/libarchive.patch.asc" target="_blank">http://security.FreeBSD.org/patches/SA-07:05/libarchive.patch.asc</a>

b) 以root执行以下命令:

cd /usr/src

patch < /path/to/patch

cd /usr/src/lib/libarchive

make obj && make depend && make && make install

cd /usr/src/rescue

make obj && make depend && make && make install