安全研究

安全漏洞
sredird LogMsg()格式串及HandleCPCCommand()缓冲区溢出漏洞

发布日期:2004-08-24
更新日期:2004-08-25

受影响系统:
sredird sredird 2.2.1
描述:
BUGTRAQ  ID: 11031

sredird是一款端口重定向服务程序。

sredird存在格式串问题和缓冲区溢出漏洞,远程攻击者可以利用这个漏洞以进程权限在系统上执行任意指令。

Max Vozeler报告在'sredird.c'文件中的LogMsg()函数里存在格式串问题,用户提供的数据没有任何处理直接传递给LogMsg()函数。精心构建提交数据可以破坏堆信息,可能以进程权限在系统上执行任意指令。

另外HandleCPCCommand()函数中的LogStr在处理sprintf()输出时没有进行正确边界检查,超长数据可触发基于堆栈的缓冲区溢出。

<*来源:Max Vozeler (max@hinterhof.net
  
  链接:http://www.securitytracker.com/alerts/2004/Aug/1011038.html
*>

建议:
临时解决方法:

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

* Max Vozeler <max@hinterhof.net>提供如下第三方补丁:

--- sredird.c.orig    2004-05-01 21:45:49.000000000 +0200
+++ sredird.c    2004-05-01 21:46:05.000000000 +0200
@@ -460,7 +460,7 @@
void LogMsg(int LogLevel, const char * const Msg)
   {
     if (LogLevel <= MaxLogLevel)
-      syslog(LogLevel,Msg);
+      syslog(LogLevel,"%s",Msg);
   }

/* Try to lock the file given in LockFile as pid LockPid using the classical

--- sredird.c.orig    2004-05-01 22:09:28.000000000 +0200
+++ sredird.c    2004-05-01 22:10:10.000000000 +0200
@@ -1390,7 +1390,7 @@
             {
               /* Received client signature */
               strncpy(SigStr,(char *) &Command[4],CSize - 6);
-              sprintf(LogStr,"Received client signature: %s",SigStr);
+              snprintf(LogStr,sizeof(LogStr)-1,"Received client signature: %s",SigStr);
               LogMsg(LOG_INFO,LogStr);
             }
         break;

厂商补丁:

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

http://www.ibiblio.org/pub/Linux/system/serial/

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