Xref: utzoo comp.unix.wizards:25181 alt.security:2324 Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!wuarchive!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!linac!unixhub!stanford.edu!rutgers!cmcl2!kramden.acf.nyu.edu!brnstnd From: brnstnd@kramden.acf.nyu.edu (Dan Bernstein) Newsgroups: comp.unix.wizards,alt.security Subject: BSD tty security, part 4: What You Can Look Forward To Message-ID: <3600:Apr2614:04:4391@kramden.acf.nyu.edu> Date: 26 Apr 91 14:04:43 GMT Organization: IR Lines: 90 To close this series of postings, I'd like to briefly survey the state of tty security. I'm sorry I haven't been able to respond personally or quickly to everyone's mail on this issue. Just a few years ago I was exploring the depths of an old Ultrix system. It didn't take a genius to notice the occasional background jobs gone astray---obviously any user could affect any other user's tty, despite vhangup(). Soon I had ``blip'', a reasonably powerful tty mode mangler that could act both as a concise stty and as a tty security breaker. With it I could write arbitrary text to anyone's tty, TIOCSTI terminal input, change tty mode settings, send tty signals, and so on. So I sent copies of the code and documentation to the sysadmin at that site, and posted a 300-line analysis to comp.unix.wizards. As I recall, there were three responses. One asked what I was talking about. One was from the admin describing what I now know to be only a partial fix. One was from Steve Bellovin referring me to his then-new Session Tty paper for descriptions of a few of the bugs as well as a complete (but complex) fix for System V which, to my knowledge, has never been implemented. blip still works on every BSD UNIX machine I can find. It is trivial to adapt to POSIX. And it has, unfortunately, been spreading slowly around the net under the name of ``factor.'' That's right. Every available BSD UNIX machine allows any user to write or type arbitrary characters on the tty of another user. With good timing the attacker can even make his attack invisible---the moment a sysadmin types a root command, someone could be piggybacking a command like cp /bin/sh /tmp/sh; chmod 4755 /tmp/sh. And it gets worse. How many people know how to exploit these bugs? Far too many, I'm sure, but not enough to shock other admins into seeing the magnitude of this problem. And this pales beside the examples set by vendors. I tell Sun how insecure ttys are, and offer a bandaid: Sun tells me that POSIX fixes everything, and refuses to admit that a bandaid is necessary. Convex is finally waking up, but is still under the delusion that one kernel kludge after another (from vhangup() to POSIX sessions and beyond) will solve the fundamental problems of statically allocated, world-usable ttys. Berkeley is finally showing some interest in fixing the bugs, but it will be years before vendors have picked up the changes, and several years before the average machine on the net is safe. Sorry, but I'm not going to wait that long. I am sick of constantly wondering whether my users know enough to break security. I am sick of hearing that POSIX fixes the problems. I am sick of seeing vendors blind themselves to such a fundamental set of holes. You should be sick of it too. So here's what I'm doing about it. 1. In part 3 of this series I outlined a reasonably simple set of fixes. If you have a BSD-derived system where something in the plan doesn't work, please post your comments here and we'll see what has to be done. If you don't have source, and you want to be notified as soon as binary patches are available, tell CERT your hardware type and OS version at cert@cert.sei.cmu.edu. 2. I will dedicate some of my free time to working with vendors and established authorities like CERT interested in tightening up tty security. 3. So that programmers are insulated from these changes in the pty subsystem, I commit myself to porting my pty manager to any platform I have access to. 4. I will attempt to outline a minimal set of (optional) changes to the POSIX standard to keep the standard from interfering with tty security. I would be interested in hearing from POSIX committee members interested in helping with this. 5. On or around October 29, 1992, I will publish a set of tiger programs that test for and exploit the failures in BSD tty security that I have described. 6. I will give further details on the security holes to anyone who convinces me that he has a legitimate interest. That means I want a verifiable chain of people and phone numbers from the contact for a major network down to whoever wants the information, plus a better excuse than ``I haven't read Bellovin's paper or your paper yet.'' If you simply want someone other than me to tell you that the holes exist, ask bostic@okeeffe.berkeley.edu. (That's Keith Bostic, the guy in charge of BSD; don't be surprised if he doesn't get to your message immediately.) Please don't believe vendor assurances that the holes have been fixed---they haven't. I hope I've yelled enough about these bugs now. I hope that soon there won't be anything to yell about. ---Dan