安全研究

安全漏洞
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
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://www.milw0rm.com/exploits/8352

建议:
厂商补丁:

W3C
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.w3.org/Amaya/

浏览次数:2302
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障