安全研究
安全漏洞
yaSSL多个远程溢出及无效内存访问漏洞
发布日期:2008-01-04
更新日期:2008-01-07
受影响系统:
yaSSL yaSSL <= 1.7.5描述:
BUGTRAQ ID: 27140
CVE(CAN) ID: CVE-2008-0226,CVE-2008-0227
yaSSL是用于实现SSL的开源软件包。
yaSSL实现上存在多个远程溢出及无效内存访问问题,远程攻击者可能利用此漏洞控制服务器。
-------------------------------------------
A] ProcessOldClientHello缓冲区溢出
-------------------------------------------
用于包含客户端所接收的Hello报文中的数据的缓冲区结构如下(源自yassl_imp.hpp):
class ClientHello : public HandShakeBase {
ProtocolVersion client_version_;
Random random_;
uint8 id_len_; // session id length
opaque session_id_[ID_LEN];
uint16 suite_len_; // cipher suite length
opaque cipher_suites_[MAX_SUITE_SZ];
uint8 comp_len_; // compression length
CompressionMethod compression_methods_;
...
这里ID_LEN长度为32个单元,MAX_SUITE_SZ为64,RAN_LEN (Random)为32。如果接收到了旧版的Hello报文的话,所调用的ProcessOldClientHello函数没有执行必要的检查来限制填充上述3个字段的数据数量,导致缓冲区溢出漏洞。
以下是handshake.cpp中的漏洞代码:
void ProcessOldClientHello(input_buffer& input, SSL& ssl)
...
ClientHello ch;
...
for (uint16 i = 0; i < ch.suite_len_; i += 3) {
byte first = input[AUTO];
if (first) // sslv2 type
input.read(len, SUITE_LEN); // skip
else {
input.read(&ch.cipher_suites_[j], SUITE_LEN);
j += SUITE_LEN;
}
}
ch.suite_len_ = j;
if (ch.id_len_)
input.read(ch.session_id_, ch.id_len_);
if (randomLen < RAN_LEN)
memset(ch.random_, 0, RAN_LEN - randomLen);
input.read(&ch.random_[RAN_LEN - randomLen], randomLen);
...
------------------------------------------------
B] input_buffer& operator>>缓冲区溢出
------------------------------------------------
用于处理Hello报文的函数中存在另一个缓冲区溢出,但基本不太可能利用这个溢出执行代码。以下是yassl_imp.cpp中的漏洞代码:
input_buffer& operator>>(input_buffer& input, ClientHello& hello)
...
hello.id_len_ = input[AUTO];
if (hello.id_len_) input.read(hello.session_id_, ID_LEN);
// Suites
byte tmp[2];
tmp[0] = input[AUTO];
tmp[1] = input[AUTO];
ato16(tmp, hello.suite_len_);
input.read(hello.cipher_suites_, hello.suite_len_);
...
-----------------------------------------------------
C] HASHwithTransform::Update无效内存访问
-----------------------------------------------------
在Hello报文中使用了过大的大小值会由于越界读取内存而导致函数库崩溃。以下是hash.cpp中的漏洞代码:
void HASHwithTransform::Update(const byte* data, word32 len)
{
// do block size increments
word32 blockSz = getBlockSize();
byte* local = reinterpret_cast<byte*>(buffer_);
while (len) {
word32 add = min(len, blockSz - buffLen_);
memcpy(&local[buffLen_], data, add);
...
<*来源:Luigi Auriemma (aluigi@pivx.com)
链接:http://marc.info/?l=bugtraq&m=119947165230177&w=2
http://marc.info/?l=bugtraq&m=119947352300598&w=2
http://secunia.com/advisories/28324/
http://secunia.com/advisories/28419/
http://www.debian.org/security/2008/dsa-1478
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
建议:
厂商补丁:
Debian
------
Debian已经为此发布了一个安全公告(DSA-1478-1)以及相应补丁:
DSA-1478-1:New mysql-dfsg-5.0 packages fix several
链接:http://www.debian.org/security/2008/dsa-1478
补丁下载:
Source archives:
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-dfsg-5.0_5.0.32.orig.tar.gz
Size/MD5 checksum: 16439441 f99df050b0b847adf7702b44e79ac877
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-dfsg-5.0_5.0.32-7etch5.diff.gz
Size/MD5 checksum: 165895 05351b7ac0547d3666828c7eba89ee18
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-dfsg-5.0_5.0.32-7etch5.dsc
Size/MD5 checksum: 1117 7d6a184cf5bda53d18be88728a0635c4
Architecture independent packages:
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client_5.0.32-7etch5_all.deb
Size/MD5 checksum: 45636 c2d87b9755088b3a67851dc4867a67f8
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server_5.0.32-7etch5_all.deb
Size/MD5 checksum: 47716 5c9311fc2072be8336424c648497303e
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-common_5.0.32-7etch5_all.deb
Size/MD5 checksum: 53944 3a16dd0a2c795cf7e906c648844a9779
alpha architecture (DEC Alpha)
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_alpha.deb
Size/MD5 checksum: 8912752 826f18c201582262ee622ed9e470a915
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_alpha.deb
Size/MD5 checksum: 1950712 47215338ef678adf7ca6f80d9d60613e
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_alpha.deb
Size/MD5 checksum: 8407802 e6e87a2edaf5f0405473fb3f5c859b3f
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_alpha.deb
Size/MD5 checksum: 27365718 f83e12f0f36c31b4dbd64ab7b1b6f01d
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_alpha.deb
Size/MD5 checksum: 47748 91489bb86084a9f6026c6156a4a5faa0
amd64 architecture (AMD x86_64 (AMD64))
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_amd64.deb
Size/MD5 checksum: 7376450 ba1c75fa6963352a0af68c4db08d0c12
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_amd64.deb
Size/MD5 checksum: 47708 4a3047795b3030063a47c969cfe4c324
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_amd64.deb
Size/MD5 checksum: 1830910 c24fc179d4fb37994b5af2cb8c405ff1
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_amd64.deb
Size/MD5 checksum: 25939846 8b0e047de274ed90f69a76f22866561a
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_amd64.deb
Size/MD5 checksum: 7547346 003c7231b81203a50ec563ff5142a010
arm architecture (ARM)
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_arm.deb
Size/MD5 checksum: 47756 0145e1aa5ec02b5c60c2d78bbcd334a0
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_arm.deb
Size/MD5 checksum: 25345622 2de813c86f1d10fb2df34d8b9de2336e
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_arm.deb
Size/MD5 checksum: 6929754 8a6b3351769b567a468bc7dcb97a2141
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_arm.deb
Size/MD5 checksum: 7204866 a8f69933d8081e753b76402e47e7a64a
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_arm.deb
Size/MD5 checksum: 1747880 8da665b5f04444dcde03321f24ca8e4b
hppa architecture (HP PA RISC)
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_hppa.deb
Size/MD5 checksum: 1920486 cb9a2e86902dc3f174926fbd8397a969
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_hppa.deb
Size/MD5 checksum: 8046116 1eb6b1199a2c0f6a8502008a2c6df376
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_hppa.deb
Size/MD5 checksum: 27055710 085b261bf2ec3820e21ec73bb59f6caa
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_hppa.deb
Size/MD5 checksum: 47708 c17ca051ebe8783fa120c4596e32d9c2
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_hppa.deb
Size/MD5 checksum: 8003914 59650ba346b2af0d77afbac64e93cca8
i386 architecture (Intel ia32)
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_i386.deb
Size/MD5 checksum: 25370152 d615311235c5a9e6d85e7e77b4927d5d
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_i386.deb
Size/MD5 checksum: 47746 1040540bc74e34b67d9606a4368162a7
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_i386.deb
Size/MD5 checksum: 6971870 90aae8d289cb3df24009c65b1af3b12d
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_i386.deb
Size/MD5 checksum: 7189880 6082aa213539a361cced40044161d108
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_i386.deb
Size/MD5 checksum: 1793974 ab7cbdd14a9bff04066a865634ef1ce2
ia64 architecture (Intel ia64)
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_ia64.deb
Size/MD5 checksum: 9736902 1e93082931f1055cd4c1436caa0020f3
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_ia64.deb
Size/MD5 checksum: 47710 3369d882bf2b99a05397aaeddf8bf864
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_ia64.deb
Size/MD5 checksum: 2115340 472e412113e7ae0bb76853cf0167cd57
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_ia64.deb
Size/MD5 checksum: 30408810 8c8982aae5e90c451b08f22bc2a5399d
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_ia64.deb
Size/MD5 checksum: 10341648 a5ef1b86109c465131ccfe5a9147bd74
mips architecture (MIPS (Big Endian))
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_mips.deb
Size/MD5 checksum: 7655576 b92c42fbbd64a377fcc4277a1696ccdd
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_mips.deb
Size/MD5 checksum: 1835994 2650808f606406336f55b31497bea015
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_mips.deb
Size/MD5 checksum: 7749018 db3eb1fb41084f7cda145ecc1f808402
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_mips.deb
Size/MD5 checksum: 47710 698fd659ef265c937dd045cfb2e9e28a
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_mips.deb
Size/MD5 checksum: 26338840 89c569b544aeb60ce6aae1c77d40965e
mipsel architecture (MIPS (Little Endian))
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_mipsel.deb
Size/MD5 checksum: 1789510 2501eed6aaa7143a89f13e4bd9658ecf
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_mipsel.deb
Size/MD5 checksum: 47718 ed3dc0fc53b78b2307dc4790ff82a174
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_mipsel.deb
Size/MD5 checksum: 7640356 5417137e8b9632964ea0d67e8cd96416
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_mipsel.deb
Size/MD5 checksum: 25845474 d379d4a5f900202d6244858d379aa46a
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_mipsel.deb
Size/MD5 checksum: 7561164 31fa1242af6a762a92486aa327469d1f
powerpc architecture (PowerPC)
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_powerpc.deb
Size/MD5 checksum: 1832312 c6ab2b2c70aed56a7748eb0a5dd04c8c
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_powerpc.deb
Size/MD5 checksum: 7573184 f43fb3a11284830b745346775073f92d
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_powerpc.deb
Size/MD5 checksum: 7511850 184e9e37e760f4bb3779385d134975db
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_powerpc.deb
Size/MD5 checksum: 47708 a76913df77b9f358f88a66875dc13a46
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_powerpc.deb
Size/MD5 checksum: 26164462 386da660c381925416238a51b0a847a4
s390 architecture (IBM S/390)
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_s390.deb
Size/MD5 checksum: 47714 7fa0b60bff0e106f6328b0b026566008
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_s390.deb
Size/MD5 checksum: 26763646 544f49b13f6207c1a104dc9eef9e6dd9
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_s390.deb
Size/MD5 checksum: 7413442 b70c6184c3b82ead175debdd569ab807
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_s390.deb
Size/MD5 checksum: 7507380 f9cecc1ace4fd2455516986637490930
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_s390.deb
Size/MD5 checksum: 1951732 d5eaad746a8db92889febd0da68f1ae5
sparc architecture (Sun SPARC/UltraSPARC)
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-client-5.0_5.0.32-7etch5_sparc.deb
Size/MD5 checksum: 7153228 566328488d67a3843b04689d76f0253d
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-4.1_5.0.32-7etch5_sparc.deb
Size/MD5 checksum: 47714 551a6f9a790b301d63c856ecab13be75
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15-dev_5.0.32-7etch5_sparc.deb
Size/MD5 checksum: 7013384 3915c6846d5ffce6e321b7e40006cb66
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.32-7etch5_sparc.deb
Size/MD5 checksum: 1797430 b0bd228090c8923d08c9b8ee84a1edb8
http://security.debian.org/pool/updates/main/m/mysql-dfsg-5.0/mysql-server-5.0_5.0.32-7etch5_sparc.deb
Size/MD5 checksum: 25425084 a9934459b8cde72354ffc463b2ec140f
补丁安装方法:
1. 手工安装补丁包:
首先,使用下面的命令来下载补丁软件:
# wget url (url是补丁下载链接地址)
然后,使用下面的命令来安装补丁:
# dpkg -i file.deb (file是相应的补丁名)
2. 使用apt-get自动安装补丁包:
首先,使用下面的命令更新内部数据库:
# apt-get update
然后,使用下面的命令安装更新软件包:
# apt-get upgrade
yaSSL
-----
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.yassl.com/
浏览次数:3571
严重程度:0(网友投票)
绿盟科技给您安全的保障
