Cyrus SASL库用户名堆破坏漏洞

漏洞信息详情

Cyrus SASL库用户名堆破坏漏洞

漏洞简介

Cyrus SASL库提供多个用于安全认证的函数集。
Cyrus SASL库由于在处理用户名时缺少充分的边界缓冲区检查,远程攻击者可以利用这个漏洞提交超长用户名而导致发生基于堆的破坏。
由于对用户名长度缺少检查,使用Cyrus SASL库的应用服务程序可能被攻击者触发基于堆缓冲区溢出,精心构建用户名数据可能以当前进程权限在系统上执行任意指令。客户端库也存在这个问题,但是由于用户名是从本地用户获得,就比较难利用这个漏洞,这个溢出只有在默认realm被设置的情况下才存在。
此问题在Cyrus上存在,但是其他使用了SASL库的应用程序也可能存在此漏洞。

漏洞公告

临时解决方法:
如果您不能立刻安装补丁或者升级,CNNVD建议您采取以下措施以降低威胁:

* Timo Sirainen <tss@iki.fi>提供如下第三方补丁:

diff -ru cyrus-sasl-2.1.9-old/lib/canonusr.c cyrus-sasl-2.1.9/lib/canonusr.c

— cyrus-sasl-2.1.9-old/lib/canonusr.c 2002-09-16 21:37:20.000000000 +0300

+++ cyrus-sasl-2.1.9/lib/canonusr.c 2002-12-05 06:18:36.000000000 +0200

@@ -306,6 +306,7 @@

/* Now copy! (FIXME: check for SASL_BUFOVER?) */

memcpy(out_user, begin_u, MIN(ulen, out_umax));

if(sconn && u_apprealm) {

+ if(ulen >= out_umax) return SASL_BUFOVER;

out_user[ulen] = ‘@’;

memcpy(&(out_user[ulen+1]), sconn->user_realm,

MIN(u_apprealm-1, out_umax-ulen-1));

diff -ru cyrus-sasl-2.1.9-old/saslauthd/lak.c cyrus-sasl-2.1.9/saslauthd/lak.c

— cyrus-sasl-2.1.9-old/saslauthd/lak.c 2002-08-01 22:58:24.000000000 +0300

+++ cyrus-sasl-2.1.9/saslauthd/lak.c 2002-12-05 07:43:34.000000000 +0200

@@ -279,7 +279,7 @@

char *buf;

char *end, *ptr, *temp;

– buf = malloc(strlen(s) * 2 + 1);

+ buf = malloc(strlen(s) * 3 + 1);

if (buf == NULL) {

return LAK_NOMEM;

}

@@ -358,7 +358,8 @@

if( *buf == ‘%’ ) percents++;

}

– buf=malloc(strlen(lak->conf->filter) + (percents * maxparamlength) +1);

+ buf=malloc(strlen(lak->conf->filter) +

+ (percents * maxparamlength * 3) + 1);

if(buf == NULL) {

syslog(LOG_ERR|LOG_AUTH, “Cannot allocate memory”);

return LAK_NOMEM;

diff -ru cyrus-sasl-2.1.9-old/lib/common.c cyrus-sasl-2.1.9/lib/common.c

— cyrus-sasl-2.1.9-old/lib/common.c 2002-09-19 01:07:54.000000000 +0300

+++ cyrus-sasl-2.1.9/lib/common.c 2002-12-05 08:11:49.000000000 +0200

@@ -1326,6 +1326,8 @@

}

}

+ result = _buf_alloc(&out, &alloclen, outlen+1);

+ if (result != SASL_OK) goto done;

out[outlen]=0; /* put 0 at end */

va_end(ap);

不过该补丁的有效性没有得到证实。
厂商补丁:
Carnegie Mellon University
————————–
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载最新版本:

Cyrus Upgrade SASL 2.1.10

ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.10.tar.gz

参考网址

来源: BUGTRAQ
名称: 20021209 Cyrus SASL library buffer overflows
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=103946297703402&w=2

来源: REDHAT
名称: RHSA-2002:283
链接:http://www.redhat.com/support/errata/RHSA-2002-283.html

来源: APPLE
名称: APPLE-SA-2005-03-21
链接:http://lists.apple.com/archives/security-announce/2005/Mar/msg00000.html

来源: XF
名称: cyrus-sasl-logwriter-bo(10812)
链接:http://xforce.iss.net/xforce/xfdb/10812

来源: XF
名称: cyrus-sasl-saslauthd-bo(10811)
链接:http://xforce.iss.net/xforce/xfdb/10811

来源: XF
名称: cyrus-sasl-username-bo(10810)
链接:http://xforce.iss.net/xforce/xfdb/10810

来源: BID
名称: 6349
链接:http://www.securityfocus.com/bid/6349

来源: BID
名称: 6348
链接:http://www.securityfocus.com/bid/6348

来源: BID
名称: 6347
链接:http://www.securityfocus.com/bid/6347

来源: GENTOO
名称: 200212-10
链接:http://www.securityfocus.com/advisories/4826

来源: DEBIAN
名称: DSA-215
链接:http://www.debian.org/security/2002/dsa-215

来源: CONECTIVA
名称: 000557
链接:http://distro.conectiva.com/atualizacoes/?id=a&anuncio=000557

来源: SUSE
名称: SuSE-SA:2002:048
链接:http://archives.neohapsis.com/archives/linux/suse/2002-q4/1275.html

受影响实体

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享