首页 -> 安全研究

安全研究

安全漏洞
mpg123不正确计算帧大小内存破坏漏洞

发布日期:2003-01-16
更新日期:2003-01-22

受影响系统:
mpg123 mpg123 pre0.59s
mpg123 mpg123 0.59r
描述:
BUGTRAQ  ID: 6629
CVE(CAN) ID: CVE-2003-0577

mpg123是一款使用于Linux和Unix操作系统下的MP3播放程序。

mpg123不正确计算帧大小(framesize),远程攻击者可以利用这个漏洞构建恶意MP3文件,当mpg123播放时导致程序崩溃,可能以mpg123进程权限在系统上执行任意指令。

mpg123在播放零字节大小的MP3文件时,会由于分配负的帧大小缓冲区而崩溃。可能以mpg123进程权限在系统上执行任意指令,不过没有得到证实。

<*来源:3APA3A (3APA3A@security.nnov.ru
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=104274357314340&w=2
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 3APA3A <3APA3A@SECURITY.NNOV.RU>提供如下第三方补丁:

--- common.old  2003-01-15 21:42:15.000000000 +0300
+++ common.c    2003-01-15 21:42:38.000000000 +0300
@@ -123,7 +123,7 @@
        return FALSE;
     if(!((head>>17)&3))
        return FALSE;
-    if( ((head>>12)&0xf) == 0xf)
+    if( ((head>>12)&0xf) == 0xf || (head>>12)&0xf) == 0)
        return FALSE;
     if( ((head>>10)&0x3) == 0x3 )
        return FALSE;

for pre0.59s:

--- common.old  2003-01-15 20:51:15.000000000 +0300
+++ common.c    2003-01-15 20:25:26.000000000 +0300
@@ -127,7 +127,7 @@
        return FALSE;
     if(!((head>>17)&3))
        return FALSE;
-    if( ((head>>12)&0xf) == 0xf || (head>>12)&0xf) == 0)
+    if( ((head>>12)&0xf) == 0xf)
        return FALSE;
     if( ((head>>10)&0x3) == 0x3 )
        return FALSE;
@@ -140,7 +140,7 @@
  *       -1: giving up
  *        1: synched
  */
-#define MAX_INPUT_FRAMESIZE 1920
+#define MAX_INPUT_FRAMESIZE 4096
#define SYNC_HEAD_MASK    0xffff0000
#define SYNC_HEAD_MASK_FF 0x0000f000
#define LOOK_AHEAD_NUM 3
@@ -237,6 +237,8 @@
         }
      }
      else {
+       if(frameInfo.framesize > MAX_INPUT_FRAMESIZE) return 0;
+
         if(!rds->read_frame_body(rds,dummybuf,frameInfo.framesize))
            return 0;

厂商补丁:

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

http://www.mpg123.de

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