Mozilla NSS库证书正则表达式解析堆溢出漏洞

admin 2022-07-23 14:55:51 CNNVD漏洞 来源:ZONE.CI 全球网 0 阅读模式

漏洞信息详情

Mozilla NSS库证书正则表达式解析堆溢出漏洞

  • CNNVD编号:CNNVD-200908-533
  • 危害等级: 超危
  • CVE编号: CVE-2009-2404
  • 漏洞类型: 缓冲区溢出
  • 发布时间: 2009-07-30
  • 威胁类型: 远程
  • 更新时间: 2009-09-26
  • 厂        商: mozilla
  • 漏洞来源: Moxie Marlinspike

漏洞简介

网络安全服务(NSS)是一套用于跨平台开发启用了安全功能的客户端和服务器应用的库,用NSS编译的应用可以支持SSLv2、SSLv3、TLS等安全标准。 Firefox等浏览器所使用的用于匹配证书中公用名的NSS库正则表达式解析器中存在堆溢出。恶意网站可以提供特制的证书触发堆溢出,导致崩溃或以运行浏览器用户的权限执行任意指令。 以下是NSS库中的有漏洞代码段: security/nss/lib/util/portreg.c: 141 static int 142 _handle_union(const char *str, const char *exp, PRBool case_insensitive) 143 { 144 char *e2 = (char *) PORT_Alloc(sizeof(char)*strlen(exp)); 145 register int t,p2,p1 = 1; 146 int cp; 147 148 while(1) { 149 for(cp=1;exp[cp] != \'\')\'\';cp++) 150 if(exp[cp] == \'\'\\\'\') 151 ++cp; 152 for(p2 = 0;(exp[p1] != \'\'|\'\') & & (p1 != cp);p1++,p2++) { 153 if(exp[p1] == \'\'\\\'\') 154 e2[p2++] = exp[p1++]; 155 e2[p2] = exp[p1]; 156 } 157 for (t=cp+1; ((e2[p2] = exp[t]) != 0); ++t,++p2) {} 158 if(_shexp_match(str,e2, case_insensitive) == MATCH) { 159 PORT_Free(e2); 160 return MATCH; 161 } 162 if(p1 == cp) { 163 PORT_Free(e2); 164 return NOMATCH; 165 } 166 else ++p1; 167 } 168 } 基于144行的strlen()执行malloc,但在154行\")\"之前一直进行拷贝。可通过在传送给两级之上父函数的字符串中包含\"~\"来替换这个字符串中的\"\0\"字符: 263 static int 264 port_RegExpMatch(const char *str, const char *xp, PRBool case_insensitive) { 265 register int x; 266 char *exp = 0; 267 268 exp = PORT_Strdup(xp); 269 270 if(!exp) 271 return 1; 272 273 for(x=strlen(exp)-1;x;--x) { 274 if((exp[x] == \'\'~\'\') & & (exp[x-1] != \'\'\\\'\')) { 275 exp[x] = \'\'\0\'\'; 276 if(_shexp_match(str, &exp[++x], case_insensitive) == MATCH) 277 goto punt; 278 break; 279 } 280 } 281 if(_shexp_match(str,exp, case_insensitive) == MATCH) { 282 PORT_Free(exp); 283 return 0; 284 } 285 286 punt: 287 PORT_Free(exp); 288 return 1; 289 } 类似于(foo~bar)的字符串会分配strlen(foo),然后在所分配的内存后覆盖bar个字节。

漏洞公告

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: https://bugzilla.mozilla.org/show_bug.cgi?format=multiple&id=504456

参考网址

来源: VUPEN 名称: ADV-2009-2085 链接:http://www.vupen.com/english/advisories/2009/2085 来源: BID 名称: 35891 链接:http://www.securityfocus.com/bid/35891 来源: www.mozilla.org 链接:http://www.mozilla.org/security/announce/2009/mfsa2009-43.HTML 来源: bugzilla.redhat.com 链接:https://bugzilla.redhat.com/show_bug.cgi?id=512912 来源: UBUNTU 名称: USN-810-2 链接:http://www.ubuntulinux.org/support/documentation/usn/usn-810-2 来源: UBUNTU 名称: USN-810-1 链接:http://www.ubuntu.com/usn/usn-810-1 来源: REDHAT 名称: RHSA-2009:1207 链接:http://www.redhat.com/support/errata/RHSA-2009-1207.HTML 来源: MANDRIVA 名称: MDVSA-2009:216 链接:http://www.mandriva.com/security/advisories?name=MDVSA-2009:216 来源: MANDRIVA 名称: MDVSA-2009:197 链接:http://www.mandriva.com/security/advisories?name=MDVSA-2009:197 来源: DEBIAN 名称: DSA-1874 链接:http://www.debian.org/security/2009/dsa-1874 来源: MISC 链接:http://www.blackhat.com/presentations/bh-usa-09/MARLINSPIKE/BHUSA09-Marlinspike-DefeatSSL-SLIDES.pdf 来源: SECUNIA 名称: 36434 链接:http://secunia.com/advisories/36434 来源: SECUNIA 名称: 36157 链接:http://secunia.com/advisories/36157 来源: SECUNIA 名称: 36139 链接:http://secunia.com/advisories/36139 来源: SECUNIA 名称: 36125 链接:http://secunia.com/advisories/36125 来源: SECUNIA 名称: 36102 链接:http://secunia.com/advisories/36102 来源: SECUNIA 名称: 36088 链接:http://secunia.com/advisories/36088 来源: REDHAT 名称: RHSA-2009:1185 链接:http://rhn.redhat.com/errata/RHSA-2009-1185.HTML

受影响实体

  • Mozilla Network_security_services:3.12.3  

补丁

    暂无

weinxin
特别声明
本站(ZONE.CI)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
评论:0   参与:  0