安全研究
安全漏洞
W3C Amaya ParseCharsetAndContentType()函数栈溢出漏洞
发布日期:2009-04-06
更新日期:2009-04-07
受影响系统:
W3C Amaya 11.1描述:
BUGTRAQ ID: 34389
Amaya是W3C出品的所见即所得的网页编辑/浏览器。
Amaya的XHTML解析器函数ParseCharsetAndContentType()在处理特制HTML页面的charset类型时存在栈溢出漏洞。以下是/amaya/XHTMLbuilder.c中有漏洞的代码段:
68 void ParseCharsetAndContentType (Element el, Document doc)
69
70 {
71 AttributeType attrType;
72 Attribute attr;
73 ElementType elType;
74 CHARSET charset;
75 char *text, *text2, *ptrText, *str; XXX
76 char charsetname[MAX_LENGTH];
77 int length;
78 int pos, index = 0;
79
...
125
126 if (charset == UNDEFINED_CHARSET)
127 {
128 /* the charset is not already defined by the http header */
129 str = strstr (text2, "charset=");
130 if (str)
131 {
132 pos = str - text2 + 8;
133 while (text2[pos] != SPACE &&
134 text2[pos] != TAB && text2[pos] != EOS)
135 charsetname[index++] = text2[pos++]; XXX
136 charsetname[index] = EOS;
137 charset = TtaGetCharset (charsetname);
138 if (charset != UNDEFINED_CHARSET)
139 TtaSetDocumentCharset (doc, charset, FALSE);
140 }
141 }
142 TtaFreeMemory (text2);
143 }
144 }
145 }
146 TtaFreeMemory (text);
147 }
148 }
Amaya创建了长度为1024字节的charsetname缓冲区,然后未经任何长度检查便试图使用charset类型名称填充该缓冲区。如果HTML页面包含有类似于以下内容的话,就会触发栈溢出:
<meta http-equiv="Content-Type" content="text/html; charset="AAAAAAAAAAAAAAAAAAAAAAAA...x1922" />
<*来源:cicatriz (c1c4tr1z@voodoo-labs.org)
链接:http://marc.info/?l=bugtraq&m=123903520019620&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
建议:
厂商补丁:
W3C
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.w3.org/Amaya/
浏览次数:2302
严重程度:0(网友投票)
绿盟科技给您安全的保障
