yee@AMES.ARC.NASA.GOV (Peter E. Yee) (11/03/88)
We are currently under attack from an Internet VIRUS. It has hit UC Berkeley, UC San Diego, Lawrence Livermore, Stanford, and NASA Ames. The virus comes in via SMTP, and then is able to attack all 4.3BSD and SUN (3.X?) machines. It sends a RCPT TO that requests that its data be piped through a shell. It copies in a program, compiles and executes it. This program copies in VAX and SUN binaries that try to replicate the virus via connections to TELNETD, FTPD, FINGERD, RSHD, and SMTP. The programs also appear to have DES tables in them. They appear in /usr/tmp as files that start with the letter x. Removing them is not enough as they will come back in the next wave of attacks. For now turning off the above services seems to be the only help. The virus is able to take advantage of .rhosts files and hosts.equiv. We are not certain what the final result of the binaries is, hence the warning. I can be contacted at (415) 642-7447. Phil Lapsley and Kurt Pires at this number are also conversant with the virus. -Peter Yee yee@ames.arc.nasa.gov ames!yee
rick@SEISMO.CSS.GOV (Rick Adams) (11/03/88)
Please install this patch from Berkeley if you are running sendmail. ---rick From bostic@okeeffe.Berkeley.EDU Thu Nov 3 06:38:39 1988 Received: from okeeffe.Berkeley.EDU by beno.CSS.GOV (5.59/5.17) id AA03506; Thu, 3 Nov 88 06:38:26 EST Received: by okeeffe.Berkeley.EDU (5.61/1.29) id AA22190; Thu, 3 Nov 88 02:58:55 PST Date: Thu, 3 Nov 88 02:58:55 PST From: bostic@okeeffe.Berkeley.EDU (Keith Bostic) Message-Id: <8811031058.AA22190@okeeffe.Berkeley.EDU> To: rick@beno.CSS.GOV, spaf@purdue.edu Subject: Virus (READ THIS IMMEDIATELY) Status: RO Guys, if you could post this to whatever appropriate newsgroups, as soon as possible, we'd appreciate it. Thanks. --keith ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Subject: Fixes for the virus Index: usr.lib/sendmail/src/srvrsmtp.c 4BSD Description: There's a virus running around; the salient facts. A bug in sendmail has been used to introduce a virus into a lot of Internet UNIX systems. It has not been observed to damage the host system, however, it's incredibly virulent, attempting to introduce itself to every system it can find. It appears to use rsh, broken passwords, and sendmail to introduce itself into the target systems. It affects only VAXen and Suns, as far as we know. There are three changes that we believe will immunize your system. They are attached. Thanks to the Experimental Computing Facility, Center for Disease Control for their assistance. (It's pretty late, and they certainly deserved some thanks, somewhere!) Fix: First, either recompile or patch sendmail to disallow the `debug' option. If you have source, recompile sendmail after first applying the following patch to the module svrsmtp.c: *** /tmp/d22039 Thu Nov 3 02:26:20 1988 --- srvrsmtp.c Thu Nov 3 01:21:04 1988 *************** *** 85,92 **** "onex", CMDONEX, # ifdef DEBUG "showq", CMDDBGQSHOW, - "debug", CMDDBGDEBUG, # endif DEBUG # ifdef WIZ "kill", CMDDBGKILL, # endif WIZ --- 85,94 ---- "onex", CMDONEX, # ifdef DEBUG "showq", CMDDBGQSHOW, # endif DEBUG + # ifdef notdef + "debug", CMDDBGDEBUG, + # endif notdef # ifdef WIZ "kill", CMDDBGKILL, # endif WIZ Then, reinstall sendmail, refreeze the configuration file, using the command "/usr/lib/sendmail -bz", kill any running sendmail's, using the ps(1) command and the kill(1) command, and restart your sendmail. To find out how sendmail is execed on your system, use grep(1) to find the sendmail start line in either the files /etc/rc or /etc/rc.local If you don't have source, apply the following patch to your sendmail binary. SAVE A COPY OF IT FIRST, IN CASE YOU MESS UP! This is mildly tricky -- note, some versions of strings(1), which we're going to use to find the offset of the string "debug" in the binary print out the offsets in octal, not decimal. Run the following shell line to decide how your version of strings(1) works: /bin/echo 'abcd' | /usr/ucb/strings -o Note, make sure the eight control 'G's are preserved in this line. If this command results in something like: 0000008 abcd your strings(1) command prints out locations in decimal, else it's octal. The patch script for sendmail. NOTE, YOUR OFFSETS MAY VARY!! This script assumes that your strings(1) command prints out the offsets in decimal. Script started on Thu Nov 3 02:08:14 1988 okeeffe:tmp {2} strings -o -a /usr/lib/sendmail | egrep debug 0096972 debug okeeffe:tmp {3} adb -w /usr/lib/sendmail ?m 0 0xffffffff 0 0t10$d radix=10 base ten 96972?s 96972: debug 96972?w 0 96972: 25701 = 0 okeeffe:tmp {4} ^D script done on Thu Nov 3 02:09:31 1988 If your strings(1) command prints out the offsets in octal, change the line "0t10$d" to "0t8$d". After you've fixed sendmail, move both /bin/cc and /bin/ld to something else. (The virus uses the cc and the ld commands to rebuild itself to run on your system.) Finally, kill any processes on your system that don't belong there. Suspicious ones have "(sh)" or "xNNNNNNN" where the N's are random digits, as the command name on the ps(1) output line. One more thing, if you find files in /tmp or /usr/tmp that have names like "xNNNNNN,l1.c", or "xNNNNNN,sun3.o", or "xNNNNNNN,vax.o" where the N's are random digits, you've been infected.
jerry@TWG.COM (Jerry Scott) (11/04/88)
Peter, I guess I am not that familiar with the Unix mail systems of the Sun and Vax. Is this sendmail? Does sendmail have the ability of receiving mail for a process? If so, this is the biggest security hole I have heard about in a long time. Jerry
bostic@OKEEFFE.BERKELEY.EDU (Keith Bostic) (11/06/88)
> I guess I am not that familiar with the Unix mail systems > of the Sun and Vax. Is this sendmail? Yes. > Does sendmail have the ability > of receiving mail for a process? If so, this is the biggest security > hole I have heard about in a long time. The problem is the implementation, not the concept. Receiving mail for a process is extremely useful. Three examples, first, a daemon program that automatically files bug reports. Two, a program that replies that you've gotten the mail, but aren't reading it because you're on vacation. Three, a program that takes mail and gateways it to network news groups. --keith
guy@auspex.UUCP (Guy Harris) (11/08/88)
>> Does sendmail have the ability >> of receiving mail for a process? If so, this is the biggest security >> hole I have heard about in a long time. > >The problem is the implementation, not the concept. Receiving mail >for a process is extremely useful. Three examples, first, a daemon >program that automatically files bug reports. Two, a program that >replies that you've gotten the mail, but aren't reading it because >you're on vacation. Three, a program that takes mail and gateways >it to network news groups. Or, putting it another way, the hole exploited by the worm was not the mere ability of "sendmail" to deliver mail to a process; it was the fact that a remote host could force "sendmail" to deliver incoming mail to a process running a command *specified by the remote host*. There may well be some security hole caused by the ability of the *receiving* host to specify that mail to "4bsd-bugs" be sent to the "bugfiler" program, but that's a different matter.
dtynan@sultra.UUCP (Der Tynan) (11/08/88)
In article <8811052345.AA18501@okeeffe.Berkeley.EDU>, bostic@OKEEFFE.BERKELEY.EDU (Keith Bostic) writes: > > > Does sendmail have the ability > > of receiving mail for a process? If so, this is the biggest security > > hole I have heard about in a long time. > > The problem is the implementation, not the concept. Receiving mail > for a process is extremely useful. Three examples, first, a daemon > program that automatically files bug reports. Two, a program that > replies that you've gotten the mail, but aren't reading it because > you're on vacation. Three, a program that takes mail and gateways > it to network news groups. > > --keith I agree with the first poster. It is a BIG security hole. I can understand the justification for piping incoming mail to a process, but this should be done via the 'aliases' file, not the To: line. If I can send mail To: "|program" Then why have a /bin/login at all? This gives me ultimate access to the machine, without ever needing an account. If all I can do, is send mail to an alias, which is in turn, a process, then the final control is from the person who owns the '/usr/lib/aliases' file. Perhaps I'm missing something, but it seems to me, that this is the way the worm propagated. - Der -- dtynan@Tynan.COM (Dermot Tynan @ Tynan Computers) {apple,mips,pyramid,uunet}!zorba.Tynan.COM!dtynan --- God invented alcohol to keep the Irish from taking over the planet ---
guy@auspex.UUCP (Guy Harris) (11/10/88)
>I agree with the first poster. It is a BIG security hole. I can understand >the justification for piping incoming mail to a process, but this should be >done via the 'aliases' file, not the To: line. I suspect the second poster agrees with you; the example he gave is probably implemented via the "aliases" file. The notion of delivering mail to a program is not flawed; the problem is that this should only be at the discretion of the recipient, not the sender.
vixie@decwrl.dec.com (Paul Vixie) (11/10/88)
# I agree with the first poster. It is a BIG security hole. I can understand # the justification for piping incoming mail to a process, but this should be # done via the 'aliases' file, not the To: line. [...] And so it is. Try your example (To: "|foo") and you'll see. The "|programname" syntax is only supposed to work from /usr/lib/aliases and from ~/.forward. It will definitely not work in a header address -- it just doesn't go through the right part of the code at that point. And it would ordinarily not work in a RCPT TO command except that it was allowed to when debug mode was enabled. Berkeley's fix to sendmail turns off the DEBUG command; the proper thing to do is to stop allowing RCPT TO:<|sed -e ...> just because debug mode happens to be enabled. (Which is what I did to the version I run here.) -- Paul Vixie Work: vixie@decwrl.dec.com decwrl!vixie +1 415 853 6600 Play: paul@vixie.sf.ca.us vixie!paul +1 415 864 7013