漏洞信息详情
MIT Kerberos 5管理库libkadm5srv远程堆溢出漏洞
- CNNVD编号:CNNVD-200412-725
- 危害等级: 高危
- CVE编号: CVE-2004-1189
- 漏洞类型: 边界条件错误
- 发布时间: 2003-07-18
- 威胁类型: 本地
- 更新时间: 2005-10-20
- 厂 商: mit
- 漏洞来源: Tom Yu※ [email protected]...
漏洞简介
Kerberos是美国麻省理工学院(MIT)开发的一套网络认证协议,它采用客户端/服务器结构,并且客户端和服务器端均可对对方进行身份认证(即双重验证),可防止窃听、防止replay攻击等。 MIT Kerberos 5管理库在密码历史处理代码中存在一个堆溢出,远程攻击者可以利用这个漏洞以进程权限执行任意指令。 溢出发生在\'\'src/lib/kadm5/srv/svr_principal.c\'\'中的add_to_history()函数中,密码历史存储在一个缓冲区中,即adb->old_keys指向的osa_pw_ent_rec数组,adb->old_key_next是数组的一个索引,数组长度存在adb->old_key_len中,数组动态可调整大小并且没有独立头指针。 策略历史计数存储在pol->pw_hist_num中,但是实际KEYS的最大值存在于adb->old_keys的是pol->pw_hist_num-1,因为当密码更改发生时,\"current\" key数据也用于历史的对比。 如果adb->old_key_next小于pol->pw_hist_num-1,adb->old_key_next索引值允许指向adb->old_keys数组最后的一个位置。当后续调用add_to_history()增加数组时需要解决越界索引。 在密码更改后如果pol->pw_hist_num递减为adb->old_key_next,就会引起adb->old_key_next索引越界,后续的密码更改将不会调用调整大小代码,add_to_history()函数就会写密码条目到adb->old_keys数组之后的位置。 精心构建提交数据可能以进程权限执行任意指令。 一般管理者需要执行部分密码更改操作才会建立这个受此漏洞影响的状态。
漏洞公告
厂商补丁: MIT --- * 后续发行的krb5-1.4 release会包含此漏洞的补丁,krb5-1.4-beta3 release同样包含此问题的修正。
* 后续的krb5-1.3.6 patch release补丁将修正此问题。
* 对src/lib/kadm5/srv/svr_principal.c采用如下补丁,并重新编译库和程序,此补丁针对krb5-1.3.5:
http://web.mit.edu/kerberos/advisories/2004-004-patch_1.3.5.txt
相关PGP签名可从如下地址获得:
http://web.mit.edu/kerberos/advisories/2004-004-patch_1.3.5.txt.asc
相关补丁内容:
Index: svr_principal.c
===================================================================
RCS file: /cvs/krbdev/krb5/src/lib/kadm5/srv/svr_principal.c,v
retrieving revision 1.26.2.1
diff -c -r1.26.2.1 svr_principal.c
*** svr_principal.c 2 Sep 2003 18:58:56 -0000 1.26.2.1
- --- svr_principal.c 20 Dec 2004 19:47:29 -0000
***************
*** 1017,1022 ****
- --- 1017,1025 ----
memset(&adb->old_keys[adb->old_key_len],0,sizeof(osa_pw_hist_ent));
adb->old_key_len++;
+ for (i = adb->old_key_len - 1; i > adb->old_key_next; i--)
+ adb->old_keys[i] = adb->old_keys[i - 1];
+ memset(&adb->old_keys[adb->old_key_next],0,sizeof(osa_pw_hist_ent));
} else if (adb->old_key_len > pol->pw_history_num-1) {
/*
* The policy must have changed! Shrink the array.
***************
*** 1039,1048 ****
histp[i] = adb->old_keys[j];
}
/* Now free the ones we don't keep (the oldest ones) */
! for (i = 0; i < adb-="">old_key_len - (pol->pw_history_num - 1); i++)
for (j = 0; j < adb-="">old_keys[KADM_MOD(i)].n_key_data; j++)
krb5_free_key_data_contents(context,
&adb->old_keys[KADM_MOD(i)].key_data[j]);
free((void *)adb->old_keys);
adb->old_keys = histp;
adb->old_key_len = pol->pw_history_num - 1;
- --- 1042,1053 ----
histp[i] = adb->old_keys[j];
}
/* Now free the ones we don't keep (the oldest ones) */
! for (i = 0; i < adb-="">old_key_len - (pol->pw_history_num-1); i++) {
for (j = 0; j < adb-="">old_keys[KADM_MOD(i)].n_key_data; j++)
krb5_free_key_data_contents(context,
&adb->old_keys[KADM_MOD(i)].key_data[j]);
+ free(adb->old_keys[KADM_MOD(i)].key_data);
+ }
free((void *)adb->old_keys);
adb->old_keys = histp;
adb->old_key_len = pol->pw_history_num - 1;
***************
*** 1052,1061 ****
- --- 1057,1070 ----
}
}
+ if (adb->old_key_next + 1 > adb->old_key_len)
+ adb->old_key_next = 0;
+
/* free the old pw history entry if it contains data */
histp = &adb->old_keys[adb->old_key_next];
for (i = 0; i < histp-="">n_key_data; i++)
krb5_free_key_data_contents(context, &histp->key_data[i]);
+ free(histp->key_data);
/* store the new entry */
adb->old_keys[adb->old_key_next] = *pw;
参考网址
来源: web.mit.edu 链接:http://web.mit.edu/kerberos/advisories/MITKRB5-SA-2004-004-pwhist.txt 来源: BUGTRAQ 名称: 20041220 MITKRB5-SA-2004-004: heap overflow in libkadm5srv 链接:http://marc.theaimsgroup.com/?l=bugtraq&m=110358420909358&w=2 来源: XF 名称: kerberos-libkadm5srv-bo(18621) 链接:http://xforce.iss.net/xforce/xfdb/18621 来源: TRUSTIX 名称: 2004-0069 链接:http://www.trustix.org/errata/2004/0069 来源: REDHAT 名称: RHSA-2005:045 链接:http://www.redhat.com/support/errata/RHSA-2005-045.HTML 来源: REDHAT 名称: RHSA-2005:012 链接:http://www.redhat.com/support/errata/RHSA-2005-012.HTML 来源: OVAL 名称: oval:org.mitre.oval:def:11911 链接:http://oval.mitre.org/repository/data/getDef?id=oval:org.mitre.oval:def:11911 来源: BUGTRAQ 名称: 20050110 [USN-58-1] MIT Kerberos server vulnerability 链接:http://marc.theaimsgroup.com/?l=bugtraq&m=110548298407590&w=2 来源: CONECTIVA 名称: CLA-2005:917 链接:http://distro.conectiva.com.br/atualizacoes/?id=a&anuncio=000917 来源: MANDRAKE 名称: MDKSA-2004:156 链接:http://www.mandriva.com/security/advisories?name=MDKSA-2004:156 来源: CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple 名称: CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple-SA-2005-08-15 链接:http://lists.CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple.com/archives/security-announce/2005/Aug/msg00000.HTML 来源: CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple 名称: CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple-SA-2005-08-17 链接:http://lists.CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple.com/archives/security-announce/2005//Aug/msg00001.HTML 来源:NSFOCUS 名称:7259※6179※7899※6992※7907※7594※7695※6178※7199※7492※7087※7493※7883 链接:http://www.nsfocus.net/vulndb/7259※6179※7899※6992※7907※7594※7695※6178※7199※7492※7087※7493※7883
受影响实体
- Mit Kerberos:5-1.3.5
- Mit Kerberos:5-1.3.1
- Mit Kerberos:5-1.2
补丁
暂无
![weinxin](http://zone.ci/zone_ci_images/zone.ci.png)
评论