brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (04/26/91)
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
subbarao@phoenix.Princeton.EDU (Kartik Subbarao) (04/28/91)
In article <3600:Apr2614:04:4391@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >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. ``An old Ultrix system'', he says. >So I sent copies of the code and documentation to the sysadmin at that >site, ``Site.'' Another nice word. Gee, Dan likes to forget history quickly ;-). -Kartik -- internet# rm `df | tail +2 | awk '{ printf "%s/quotas\n",$6}'` subbarao@phoenix.Princeton.EDU -| Internet kartik@silvertone.Princeton.EDU (NeXT mail) SUBBARAO@PUCC.BITNET - Bitnet
erc@Apple.COM (Ed Carp) (04/29/91)
In article <3600:Apr2614:04:4391@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >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 Um, what IS this bullshit? Who the hell are you to set yourself up as some sort of net.god and tell us that you will "bless" us with all your neat little hacks and info only if we satisfy your little set of rules? Your pathetic excuses about protecting the information from "black hats" is unmitigated bullshit. The only thing you are doing is concealing any valuable information that you may have from the people who have a genuine need for your information. The folks who already care about cracking into systems already know about this stuff anyway. Get real. You sound like Gene Spafford when the baloon went up on the Internet virus/Morris stuff. He, too, wanted to "protect" the unwashed from knowing what was going on. I'm glad to see that he has a more enlightened point of view. -- Ed Carp N7EKG/6 erc@khijol.UUCP ...uunet!khijol!erc UUWEST Consulting Alameda, CA 415/814-0550 Computers HAVE caused a revolution in how much information we can safely ignore! --robs@ux1.cso.uiuc.edu (Rob Schaeffer) -- Absolutely unabashed Gates McFadden groupie! --
paul@uxc.cso.uiuc.edu (Paul Pomes - UofIllinois CSO) (04/30/91)
erc@Apple.COM (Ed Carp) writes: >Um, what IS this bullshit? Who the hell are you to set yourself up as some sort >of net.god and tell us that you will "bless" us with all your neat little hacks >and info only if we satisfy your little set of rules? Your pathetic excuses >about protecting the information from "black hats" is unmitigated bullshit. Did you wake up on the wrong side of the bed this morning? Dan is free to send information to whoever he chooses on whatever basis he chooses. If you don't like, don't play. Better yet, show off YOUR knowledge and post the information yourself. So flame away and enlarge kill files everywhere with your name. The audience will be that much smaller the next time you need help. /pbp -- Paul Pomes UUCP: {att,iuvax,uunet}!uiucuxc!paul Internet, BITNET: paul@uxc.cso.uiuc.edu US Mail: UofIllinois, CSO, 1304 W Springfield Ave, Urbana, IL 61801-2910
kdenning@pcserver2.naitc.com (Karl Denninger) (04/30/91)
In article <13218@goofy.Apple.COM> erc@Apple.COM (Ed Carp) writes: >In article <3600:Apr2614:04:4391@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: > >>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 > >Um, what IS this bullshit? Who the hell are you to set yourself up as some sort >of net.god and tell us that you will "bless" us with all your neat little hacks >and info only if we satisfy your little set of rules? (lots more flamage deleted) I have to agree. I am in charge of Internet and external security here. There is another group which is in charge of internal security. Both of us, I'm sure, would like to have some FACTS on this stuff. TIOCSTI is well known as a problem, but I thought that was supposed to be restricted to use by root (unless it's your control terminal....). I think I just heard you say that was all malarkey, that anyone could TIOCSTI my root session while logged in over a pty, and that you could exploit those items to gain control of my session. From the manual pages, I believe it shouldn't work. If this is not true, I would like details. Not just "fixes", or pontificating, but details. I can patch around lots of things, and replace system code if necessary. Without some DETAILS it's difficult at best. -- Karl Denninger - AC Nielsen, Bannockburn IL (708) 317-3285 kdenning@nis.naitc.com "The most dangerous command on any computer is the carriage return." Disclaimer: The opinions here are solely mine and may or may not reflect those of the company.
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (04/30/91)
In article <13218@goofy.Apple.COM> erc@Apple.COM (Ed Carp) writes: > In article <3600:Apr2614:04:4391@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: > >6. I will give further details on the security holes to anyone who > >convinces me that he has a legitimate interest. > Um, what IS this bullshit? I'm sorry if you find this too restrictive. I also advise you to read the articles that you claim to be responding to: in item 5 I set a date upon which I will disclose full details of the security holes. While I understand that people without a legitimate interest in the security holes (you, for instance?) don't want to wait that long, I'd feel guilty if I didn't give vendors a grace period to clean up their act. > Your pathetic excuses > about protecting the information from "black hats" is unmitigated bullshit. I have never made any such excuses. I must add, sir, that the accuracy, originality, and sophistication of your rhetoric are matched only by its grammatical brilliance. > The only thing you are doing is concealing any valuable information that you > may have from the people who have a genuine need for your information. If you had a genuine need for the information, then you'd be explaining that need to me rather than blathering all over netnews. > The > folks who already care about cracking into systems already know about this > stuff anyway. An NCSC trusted systems reviewer, among others, has told me that he is unfamiliar with the holes in question. Have you heard of the NCSC? You remind me of the people who say (without knowing, of course) that sendmail's debug hole was widely known before RTM made a fool of himself. Does it make you feel wizardly to pretend that you know what you're talking about? ---Dan
smb@ulysses.att.com (Steven Bellovin) (04/30/91)
In article <1991Apr29.222139.21284@pcserver2.naitc.com>, kdenning@pcserver2.naitc.com (Karl Denninger) writes: [mostly deleted] Dan is caught between a rock and a hard place here. He knows of certain security problems in many existing systems. What should he do with the information? One answer is to post and be damned. Lots of people advocate that. I sometimes do, myself -- as noted, the crackers often know the problems, too. In this case, the bug is very widespread. Another answer is to tell vendors and CERT. This is a favorite of folks who don't like the first answer. He's tried that; according to his earlier postings, some vendors, at least, aren't interested. Robert Morris had his answer to the problem of how you get vendors to fix security problems, but it bought him a felony conviction. Most people consider that too high a price to pay. Face it, there's no satisfying everyone. What Dan has done -- offered details to anyone who can prove his or her legitimacy -- is certainly defensible as an answer. Your and I may not (or may) agree with it, but it's as reasonable a choice as either of the first two. > From the manual pages [on TIOCSTI], I believe it shouldn't work. I believe you're barking up the wrong termite-infested tree. Although I haven't seen a detailed report on the problem, there were sufficient clues in the first three parts that I'm fairly certain I know what rock these bugs are hiding under. To be sure, I'm already predisposed to think in those terms -- Dan did cite my paper as relevant. (For those who are interested, the citation is ``The "Session Tty" Manager'' Bellovin, S.M., Proceedings of USENIX Conference, San Francisco, CA, Jun 30, 1988, P339-354.) > If this is not true, I would like details. Not just "fixes", or > pontificating, but details. I can patch around lots of things, and > replace system code if necessary. Without some DETAILS it's > difficult at best. To annouce the details now would be to opt for choice 1. Dan has already rejected that approach. For those who don't believe the bugs exist, he has offered Keith Bostic as a reference. You can't do better than Keith, but if the network wants, I'll offer myself as another reference -- Dan and I have corresponded enough that I'm sure he'll trust me with the info... Not that I really need to see it -- as I said, I think I know where the bodies are buried. (Gee -- that's my third metaphor for the same problem, and all in one posting...) Incidentally, offering (threatening?) to post programs that exploit the bugs is in itself a pretty good warrantee. Dan wouldn't risk his reputation if he didn't have those programs written already, I suspect. --Steve Bellovin
kdenning@pcserver2.naitc.com (Karl Denninger) (04/30/91)
In article <14683@ulysses.att.com> smb@ulysses.att.com (Steven Bellovin) writes: >In article <1991Apr29.222139.21284@pcserver2.naitc.com>, kdenning@pcserver2.naitc.com (Karl Denninger) writes: > >[mostly deleted] > >Dan is caught between a rock and a hard place here. He knows of >certain security problems in many existing systems. What should he do >with the information? > >One answer is to post and be damned. Lots of people advocate that. I >sometimes do, myself -- as noted, the crackers often know the problems, >too. In this case, the bug is very widespread. > >Another answer is to tell vendors and CERT. This is a favorite of >folks who don't like the first answer. He's tried that; according to >his earlier postings, some vendors, at least, aren't interested. Neither was Interactive with their u_area bug (it was world-writable!) until someone posted code which exploited the bug. CERT wasn't even interested (I guess they consider ISC's offering not to be of any importance). I am on the CERT list -- there was no notice of that problem at all. It got fixed in about two weeks once the code to exploit it was posted. ISC put their head in the sand until outrageous users started flooding their phone lines. Nothing like hitting someone over the head with a baseball bat to get their attention with these kinds of things. >Face it, there's no satisfying everyone. What Dan has done -- offered >details to anyone who can prove his or her legitimacy -- is certainly >defensible as an answer. Your and I may not (or may) agree with it, >but it's as reasonable a choice as either of the first two. Well, I've sent him mail, and he sent back some "hints". That is not details. And I'm as real, and as legitimate, as anyone on the net. I'm responsible for the wide-area network security here at this facility. Now I'm stuck with trying to justify hacking at a problem on the strength of someone's word from the net. This doesn't work in industry where you have real work to get done! Unfortunately, the powers that be here (and I suspect at lots of other companies) disagree strongly with people spending their time hacking while looking for bugs in the pty drivers (or elsewhere). I can EASILY make a business case for fixing the stuff -- IF I can show where the problem is, and show a hard example. So far my probing has been futile on terminals with "mesg n" set. >> From the manual pages [on TIOCSTI], I believe it shouldn't work. > >I believe you're barking up the wrong termite-infested tree. Although >I haven't seen a detailed report on the problem, there were sufficient >clues in the first three parts that I'm fairly certain I know what rock >these bugs are hiding under. To be sure, I'm already predisposed to >think in those terms -- Dan did cite my paper as relevant. (For those >who are interested, the citation is ``The "Session Tty" Manager'' >Bellovin, S.M., Proceedings of USENIX Conference, San Francisco, CA, >Jun 30, 1988, P339-354.) I've got a few ideas too, but most of them rely on the pty being world-writable. I normally run with "mesg n"; if these bugs get through >that< then I really do want to hear about it, and exactly what he's talking about. Now if the manual pages are wrong (ie: they're lying) with regards to the restrictions on some of those ioctl calls...... >Incidentally, offering (threatening?) to post programs that exploit >the bugs is in itself a pretty good warrantee. Dan wouldn't risk his >reputation if he didn't have those programs written already, I suspect. > > --Steve Bellovin This is true. So assume that the crackers already know about this. Where does this leave you? 1) The bad guys already know what is broken, and how to exploit it. They WILL exploit it given the chance. They have as good an information distribution system than we do, and aren't afraid to use it -- unlike some of us. 2) The good guys, on the other hand, have to hunt around looking for the problems and devise proof for the "bean counters" before we can get any time allocated to work on a REAL fix. -- Karl Denninger - AC Nielsen, Bannockburn IL (708) 317-3285 kdenning@nis.naitc.com "The most dangerous command on any computer is the carriage return." Disclaimer: The opinions here are solely mine and may or may not reflect those of the company.
russotto@eng.umd.edu (Matthew T. Russotto) (05/01/91)
In article <1991Apr29.222139.21284@pcserver2.naitc.com> kdenning@pcserver2.naitc.com (Karl Denninger) writes: > >I have to agree. > >I am in charge of Internet and external security here. There is another >group which is in charge of internal security. > >Both of us, I'm sure, would like to have some FACTS on this stuff. TIOCSTI >is well known as a problem, but I thought that was supposed to be restricted >to use by root (unless it's your control terminal....). The trick is to grab control of the next unused terminal. Then, the next sucker to log in is vulnerable. It works. >I think I just heard you say that was all malarkey, that anyone could >TIOCSTI my root session while logged in over a pty, and that you could >exploit those items to gain control of my session. > >From the manual pages, I believe it shouldn't work. It worked on certain Ultrix revisions-- can't say anything about any other systems. -- Matthew T. Russotto russotto@eng.umd.edu russotto@wam.umd.edu .sig under construction, like the rest of this campus.
dave@jato.jpl.nasa.gov (Dave Hayes) (05/01/91)
erc@Apple.COM (Ed Carp) writes: >In article <3600:Apr2614:04:4391@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >>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 >Um, what IS this bullshit? What indeed? Methinks it IS just that. > Who the hell are you to set yourself up as some sort >of net.god and tell us that you will "bless" us with all your neat little hacks >and info only if we satisfy your little set of rules? Your pathetic excuses >about protecting the information from "black hats" is unmitigated bullshit. THANK YOU for saying this! I'm glad someone out there has sense. >The only thing you are doing is concealing any valuable information that you >may have from the people who have a genuine need for your information. The >folks who already care about cracking into systems already know about this >stuff anyway. Get real. Hear, hear! -- Dave Hayes - Network & Communications Engineering - JPL / NASA - Pasadena CA dave@elxr.jpl.nasa.gov dave@jato.jpl.nasa.gov ames!elroy!dxh There is a saying: "I believe it because it is impossible" If you make any study of people in a state of what they are pleased to call belief, you will find that you can usually best describe them by the saying: "My belief has made me impossible."
dave@jato.jpl.nasa.gov (Dave Hayes) (05/01/91)
smb@ulysses.att.com (Steven Bellovin) writes: >In article <1991Apr29.222139.21284@pcserver2.naitc.com>, kdenning@pcserver2.naitc.com (Karl Denninger) writes: >Dan is caught between a rock and a hard place here. He knows of >certain security problems in many existing systems. What should he do >with the information? In my opinon (for whatever that's worth) he should publish it widely and loudly. (here I go again being flame bait...) >Face it, there's no satisfying everyone. This is all TOO true. *sigh* >What Dan has done -- offered >details to anyone who can prove his or her legitimacy -- is certainly >defensible as an answer. Your and I may not (or may) agree with it, >but it's as reasonable a choice as either of the first two. I see what you are saying, but I have to disagree. Why has Dan even POSTED that such holes exist, if he is not willing to disclose the details to us system admins that are going to be of necessity interested in the problem? WOuldn't it have been better to just report this to CERT and vendors and leave it go at that? That way, those of us who he claims have no justification for the details wouldn't even know to ask him, right? Personally, I would like to know exactly what his criterion is. I believe I have extremely valid reasons for knowing these details...my paycheck happens to refelct these reasons. Naturally I responded to his #6 item...believing full well that he could validate my legitimacy. He hasn't even tried. It would appear, (if I may evaluate for him) that his whole purpose stems from some need to have a secret that you don't. Nyahhh. 8) I think he shouldn't have said a damn thing. -- Dave Hayes - Network & Communications Engineering - JPL / NASA - Pasadena CA dave@elxr.jpl.nasa.gov dave@jato.jpl.nasa.gov ames!elroy!dxh There is a saying: "I believe it because it is impossible" If you make any study of people in a state of what they are pleased to call belief, you will find that you can usually best describe them by the saying: "My belief has made me impossible."
kdenning@pcserver2.naitc.com (Karl Denninger) (05/01/91)
In article <3600:Apr2614:04:4391@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >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. MIPS has apparently fixed most of the ways this can be exploited. The most obvious attempts, taking over "unused" ptys slave ends, result in the system skipping them when assignment time comes around. This prevents the most obvious ways to exploit this hole. I believe MIPS may be using some form of "O_EXCL" to prevent multiple access.... The RS/6000 dynamically creates ptys, and thus doesn't suffer from the problem at all. ISC, Apple (A/UX), and Sun, DO have the problem. KUDOS TO MIPS ON THIS ONE. They got it right. -- Karl Denninger - AC Nielsen, Bannockburn IL (708) 317-3285 kdenning@nis.naitc.com "The most dangerous command on any computer is the carriage return." Disclaimer: The opinions here are solely mine and may or may not reflect those of the company.
rickert@mp.cs.niu.edu (Neil Rickert) (05/01/91)
In article <1991Apr30.224740.17040@pcserver2.naitc.com> kdenning@pcserver2.naitc.com (Karl Denninger) writes: > >The most obvious attempts, taking over "unused" ptys slave ends, result in >the system skipping them when assignment time comes around. This prevents > >The RS/6000 dynamically creates ptys, and thus doesn't suffer from the >problem at all. And what exactly is there to stop somebody running a daemon which grabs access to a pty immediately after it has been assigned, or immediately after it has been dynamically created, but before public write access has been turned off. -- =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Neil W. Rickert, Computer Science <rickert@cs.niu.edu> Northern Illinois Univ. DeKalb, IL 60115 +1-815-753-6940
sef@kithrup.COM (Sean Eric Fagan) (05/01/91)
In article <1991Apr30.231235.7874@mp.cs.niu.edu> rickert@mp.cs.niu.edu (Neil Rickert) writes: > And what exactly is there to stop somebody running a daemon which grabs >access to a pty immediately after it has been assigned, or immediately >after it has been dynamically created, but before public write access has >been turned off. Who says they get created with public access turned *on*? -- Sean Eric Fagan | "I made the universe, but please don't blame me for it; sef@kithrup.COM | I had a bellyache at the time." -----------------+ -- The Turtle (Stephen King, _It_) Any opinions expressed are my own, and generally unpopular with others.
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/01/91)
In article <1991Apr30.164646.11693@pcserver2.naitc.com> kdenning@pcserver2.naitc.com (Karl Denninger) writes: > In article <14683@ulysses.att.com> smb@ulysses.att.com (Steven Bellovin) writes: > >Face it, there's no satisfying everyone. What Dan has done -- offered > >details to anyone who can prove his or her legitimacy -- is certainly > >defensible as an answer. Your and I may not (or may) agree with it, > >but it's as reasonable a choice as either of the first two. > Well, I've sent him mail, and he sent back some "hints". That is not > details. And I'm as real, and as legitimate, as anyone on the net. I'm > responsible for the wide-area network security here at this facility. Let me be more explicit. I consider vendors to have a legitimate interest by default. I probably should have said just vendors, but there are organizations like CERT that I consider to have a legitimate interest but that aren't vendors. There are also individuals who can and have convinced me that they should see the code, for various reasons. I do not consider someone to have a legitimate interest in security-breaking code merely by virtue of being a system administrator. If I did, then I should be sending the code to practically everyone--- there's no fine line between the manager of a major site and the ``manager'' of a personal workstation. And that is an unacceptable risk. > 2) The good guys, on the other hand, have to hunt around looking for > the problems and devise proof for the "bean counters" before we can > get any time allocated to work on a REAL fix. Sorry if you don't consider the detailed fixes I've posted to be a REAL fix. I'd love to hear from anyone who can propose a simpler set of fixes that can still be proven to work. As for explaining this to your boss: I'm sorry I can't be any help here. I note that it is a lot more cost effective for FooBar Computer Co. to make fixes once and distribute them to 1000 admins than to have 1000 admins each make fixes for themselves. ---Dan
scs@lokkur.dexter.mi.us (Steve Simmons) (05/01/91)
smb@ulysses.att.com (Steven Bellovin) writes: >Another answer is to tell vendors and CERT. This is a favorite of >folks who don't like the first answer. He's tried that; according to >his earlier postings, some vendors, at least, aren't interested. kdenning@pcserver2.naitc.com (Karl Denninger) writes: >Neither was Interactive with their u_area bug (it was world-writable!) >until someone posted code which exploited the bug. CERT wasn't even >interested (I guess they consider ISC's offering not to be of any >importance). I am on the CERT list -- there was no notice of that >problem at all. Some CERT person may correct me, but I believe that CERT only makes public announcements when a fix or workaround is already available. -- "FACT: less than 10% of the psychiatrists in the US are actually practicing cannibals." Rod Johnson
kdenning@genesis.Naitc.Com (Karl Denninger) (05/01/91)
In article <1991Apr30.231235.7874@mp.cs.niu.edu> rickert@mp.cs.niu.edu (Neil Rickert) writes: >In article <1991Apr30.224740.17040@pcserver2.naitc.com> kdenning@pcserver2.naitc.com (Karl Denninger) writes: >> >>The most obvious attempts, taking over "unused" ptys slave ends, result in >>the system skipping them when assignment time comes around. This prevents >> >>The RS/6000 dynamically creates ptys, and thus doesn't suffer from the >>problem at all. > > And what exactly is there to stop somebody running a daemon which grabs >access to a pty immediately after it has been assigned, or immediately >after it has been dynamically created, but before public write access has >been turned off. Well, one could open it with O_EXCL turned on. One and only ONE process can get to that pty until it releases the exclusive flag. The process can do that well after it's turned off public write access. Heck, leave it set exclusive. Most things that have to open a terminal again would use /dev/tty, which shouldn't get in trouble with this scheme. If that is implemented for ptys, that should fit the requirement nicely. -- Karl Denninger - AC Nielsen, Bannockburn IL (708) 317-3285 kdenning@nis.naitc.com "The most dangerous command on any computer is the carriage return." Disclaimer: The opinions here are solely mine and may or may not reflect those of the company.
jkp@cs.HUT.FI (Jyrki Kuoppala) (05/01/91)
In article <1991Apr30.164646.11693@pcserver2.naitc.com>, kdenning@pcserver2 (Karl Denninger) writes: >I've got a few ideas too, but most of them rely on the pty being >world-writable. I normally run with "mesg n"; if these bugs get through >>that< then I really do want to hear about it, and exactly what he's talking >about. The program doing the stuffing can just open the pty before you say 'mesg n' on it. Looking at what Dan has posted, I wouldn't be surprised if there were other ways also, but I don't have more information on that >Now if the manual pages are wrong (ie: they're lying) with regards to the >restrictions on some of those ioctl calls...... I don't think they are lying, just that at least some of the restrictions can be gotten around. //Jyrki
russotto@eng.umd.edu (Matthew T. Russotto) (05/02/91)
In article <1991Apr30.224740.17040@pcserver2.naitc.com> kdenning@pcserver2.naitc.com (Karl Denninger) writes: > >The most obvious attempts, taking over "unused" ptys slave ends, result in >the system skipping them when assignment time comes around. This prevents >the most obvious ways to exploit this hole. I believe MIPS may be using >some form of "O_EXCL" to prevent multiple access.... > >The RS/6000 dynamically creates ptys, and thus doesn't suffer from the >problem at all. > >ISC, Apple (A/UX), and Sun, DO have the problem. > >KUDOS TO MIPS ON THIS ONE. They got it right. With Sun and Ultrix, you seem to be able to affect telnets while the 'login' and 'passwd:' prompts are up-- once the session starts, Ultrix stops the TIOCSTI process, and Sun hangs up both the incoming telnet and the TIOCSTI process. A/UX doesn't even have TIOCSTI-- am I missing something? -- Matthew T. Russotto russotto@eng.umd.edu russotto@wam.umd.edu .sig under construction, like the rest of this campus.
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/02/91)
In article <1991May1.010657.281@lokkur.dexter.mi.us> scs@lokkur.dexter.mi.us (Steve Simmons) writes: > Some CERT person may correct me, but I believe that CERT only > makes public announcements when a fix or workaround is already > available. May I remind you that a fix *is* available? It's not a plug 'n' play patch, but it does the job, and I'm perfectly willing to help people implement it if something isn't clear in the original description. I went to quite a bit of effort to put part 3 together, so it's rather depressing to see someone say that the fixes don't exist. I expect that CERT will announce when binary patches are available to fix these holes on some machine. Sites that want to speed this process should complain to their vendors. Sites that have modified their systems can still apply the fixes I've explained. ---Dan
jdarcy@seqp4.ORG (Jeff d'Arcy) (05/02/91)
kdenning@pcserver2.naitc.com (Karl Denninger) writes: >ISC put their head in the sand until outrageous users started flooding ^^^^^^^^^^^^^^^^ I've met a few of these. 8] >>Incidentally, offering (threatening?) to post programs that exploit >>the bugs is in itself a pretty good warrantee. Dan wouldn't risk his >>reputation if he didn't have those programs written already, I suspect. >> >> --Steve Bellovin > >This is true. So assume that the crackers already know about this. Where >does this leave you? Risk his what? Sorry, couldn't resist. As much as I enjoy Bernstein-bashing, that's not my purpose here. The fact is that Dan would hardly be the first person to make such an offer without having the goods to back it up. Maybe he will have them when the time comes; maybe he won't. In any case, I think *posting* them would be irresponsible since, as Dan points out himself, it will be *years* before the number of vulnerable vendors becomes small enough to be discounted. I think sending the programs to "responsible individuals" (whoever they are) would be much better.
wrwalke@rsi.UUCP (William Walker) (05/02/91)
In article <1991Apr30.224235.2459@jato.jpl.nasa.gov>, dave@jato.jpl.nasa.gov (Dave Hayes) writes: > smb@ulysses.att.com (Steven Bellovin) writes: > > >What Dan has done -- offered > >details to anyone who can prove his or her legitimacy -- is certainly > >defensible as an answer. Your and I may not (or may) agree with it, > >but it's as reasonable a choice as either of the first two. > > I see what you are saying, but I have to disagree. Why has Dan even POSTED > that such holes exist, if he is not willing to disclose the details to > us system admins that are going to be of necessity interested in the problem? ^^^^^^^^^^^^^ ok, so you *are* a system admin with a legit need to know. so what's the big deal with sending him a set of references?? do you want every bored CS major between here and australia finding out about those holes a week or so before you get your patch tapes from the vendor? > > Personally, I would like to know exactly what his criterion is. I believe I > have extremely valid reasons for knowing these details...my paycheck happens > to refelct these reasons. Naturally I responded to his #6 item...believing > full well that he could validate my legitimacy. > so what do you do if you find a nifty little bug?? you tell the vendor and CERT, CERT makes it known to it's brain/talent trust, contacts the vendor who says "BFD". what about the guy *without* source?? how is he ever going to get the hole patched? unless the customers pressure the vendor, NO changes will ever be made unless it is the old "fixed in the next release" line, send us a check.... this "approval" arrangement also sounds kinda hokey to me, but i can't think of a better medium between leaving gaping holes under the carpet and posting potentially dangerous code on a public forum accessible to thousands of bored hacker wannabe's. just another $.02 bill. -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Bill Walker - Overlord of Gateway Traffic, Keeper of all that is PD, Maintainer of the Almighty Source Tree, Worshipper of K+R, Altar-boy at the Temple of "Bob", Resource in Residence, Patcher of Perl, Configurer of the Holy Sendmail... wrwalke@rsi.prc.com -- PRC, a wholly owned subsidiary of Black+Decker Inc. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
erc@Apple.COM (Ed Carp) (05/02/91)
In article <26844:May100:59:2591@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >Let me be more explicit. I consider vendors to have a legitimate Oh? I do consulting for a vendor, notably Apple. I also do consulting for a number of very large companies in the bay area, notably a very large public utility. They also have a vested interest in anything that would enhance their security. >I do not consider someone to have a legitimate interest in >security-breaking code merely by virtue of being a system administrator. >If I did, then I should be sending the code to practically everyone--- >there's no fine line between the manager of a major site and the >``manager'' of a personal workstation. And that is an unacceptable risk. Well, then ... post it in alt.sources or alt.security.sources. Calls for votes, anyone? IMHO, your attitude is irrational. How many sites do I have to administer to qualify? One? Five? A hundred? You haven't addressed the issue of whether I'm a cracker or not. Being a system administrator of a hundred systems doesn't prove you're a good guy, any more than being the administrator of one makes you a bad guy. System administrators of a few sites face many (not ALL) of the same headaches of a large site. Backups, security, user management and disk management, just to name a few. >As for explaining this to your boss: I'm sorry I can't be any help here. >I note that it is a lot more cost effective for FooBar Computer Co. to >make fixes once and distribute them to 1000 admins than to have 1000 >admins each make fixes for themselves. Yes, but FooBar Co. (as you yourself have stated) just doesn't have any interest in fixing the bugs! Besides, do you have any idea how many different computer systems you're talking about impacting? There's NO WAY that you're going to get all vendors to distribute fixes, let alone distribute them FOR FREE. -- Ed Carp N7EKG/6 erc@khijol.UUCP ...uunet!khijol!erc UUWEST Consulting Alameda, CA 415/814-0550 Computers HAVE caused a revolution in how much information we can safely ignore! --robs@ux1.cso.uiuc.edu (Rob Schaeffer) -- Absolutely unabashed Gates McFadden groupie! --
kdenning@genesis.Naitc.Com (Karl Denninger) (05/02/91)
In article <26844:May100:59:2591@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: > >Let me be more explicit. I consider vendors to have a legitimate >interest by default. I probably should have said just vendors, but there >are organizations like CERT that I consider to have a legitimate >interest but that aren't vendors. There are also individuals who can and >have convinced me that they should see the code, for various reasons. You have spoken with vendors about this in the past however, no? I believe there was a reference in your earlier posting about this (and how Sun wasn't interested in it). >I do not consider someone to have a legitimate interest in >security-breaking code merely by virtue of being a system administrator. >If I did, then I should be sending the code to practically everyone--- >there's no fine line between the manager of a major site and the >``manager'' of a personal workstation. And that is an unacceptable risk. I disagree. But that's ok -- I have figured out most (I think) of what you're alluding to. And I think I have a fix -- actually, two different fixes, both of which should be easily implemented. Both ARE implemented on two different machines from different manufacturers here. Now all I have to do is find source code I can hack on to implement one of these for our Sun systems, and I'm set. >> 2) The good guys, on the other hand, have to hunt around looking for >> the problems and devise proof for the "bean counters" before we can >> get any time allocated to work on a REAL fix. > >Sorry if you don't consider the detailed fixes I've posted to be a REAL >fix. I'd love to hear from anyone who can propose a simpler set of fixes >that can still be proven to work. Ok, how about this: 1) PTYs are either: a) Allocated dynamically, and have NO entry in /dev to try to pick at. (this is how the RS/6000 does it). The entire slave side is one /dev node, and the system knows which is which internally. This is undesirable for a couple of reasons, not the least of which is that write(1) to a pty probably won't work. b) Allocated statically, but two restrictions are enforced: 1) The pty open routine is changed to handle the O_EXCL flag on the open properly if it doesn't already. That is, if the reference count is not zero, the open fails (ie: only one open at a time when this is on!) 2) The system code affected is changed to always use O_EXCL on open for the slave side of the pty when doing the allocation. Thus, if someone has the slave open, the pty in question will be skipped. This leaves a denial of service attack possibility (tie up all the slaves) but does not allow someone to "sit" on a pty until someone comes along. 3) All pty slave ends are opened by the system as mode 700, or chmod'd 700 before being opened. Does this not solve the problem? It appears that this is what MIPS has done, and it appears to be effective. What I was able to do on other machines here didn't work on our M3260 RiscOS machine running RiscOS 4.52. The RS/6000 doesn't have visible slave pty ends in the /dev directory at all. >As for explaining this to your boss: I'm sorry I can't be any help here. >I note that it is a lot more cost effective for FooBar Computer Co. to >make fixes once and distribute them to 1000 admins than to have 1000 >admins each make fixes for themselves. IF "FooBar" Computer Company (I could name a few of these "Foobar"s) bothers to do anything at all. There is no guarantee they will. -- Karl Denninger - AC Nielsen, Bannockburn IL (708) 317-3285 kdenning@nis.naitc.com "The most dangerous command on any computer is the carriage return." Disclaimer: The opinions here are solely mine and may or may not reflect those of the company.
kdenning@genesis.Naitc.Com (Karl Denninger) (05/02/91)
In article <1991May1.170641.17086@eng.umd.edu> russotto@eng.umd.edu (Matthew T. Russotto) writes: >In article <1991Apr30.224740.17040@pcserver2.naitc.com> kdenning@pcserver2.naitc.com (Karl Denninger) writes: >> >>The most obvious attempts, taking over "unused" ptys slave ends, result in >>the system skipping them when assignment time comes around. This prevents >>the most obvious ways to exploit this hole. I believe MIPS may be using >>some form of "O_EXCL" to prevent multiple access.... >> >>The RS/6000 dynamically creates ptys, and thus doesn't suffer from the >>problem at all. >> >>ISC, Apple (A/UX), and Sun, DO have the problem. >> >>KUDOS TO MIPS ON THIS ONE. They got it right. > >With Sun and Ultrix, you seem to be able to affect telnets while the 'login' >and 'passwd:' prompts are up-- once the session starts, Ultrix stops the >TIOCSTI process, and Sun hangs up both the incoming telnet and the TIOCSTI >process. A/UX doesn't even have TIOCSTI-- am I missing something? Ultrix and MIPS are only related in that MIPS supplies DEC with the chips. We have a MIPS RISCserver here, model 3260. Runs Risc/OS 4.52. Darn nice implementation. I keep finding more and more things to like about it, and only a few I don't like. DEC's porting base for Ultrix is not related to RiscOS as far as I know. -- Karl Denninger - AC Nielsen, Bannockburn IL (708) 317-3285 kdenning@nis.naitc.com "The most dangerous command on any computer is the carriage return." Disclaimer: The opinions here are solely mine and may or may not reflect those of the company.
sblair@upurbmw.dell.com (Steve Blair) (05/02/91)
Ed Carp sez: |> Being a |> system administrator of a hundred systems doesn't prove you're a good guy, I can agree in at least one case, that someone who apparently seemed on paper a good sysadmin, was using sites' to break into other sites. This person had a choice at the unnamed employer - leave or be terminated. That doesn't imply prosecution/lack therof. |> Yes, but FooBar Co. (as you yourself have stated) just doesn't have any interest There's NO WAY that you're going to |> get all vendors to distribute fixes, let alone distribute them FOR FREE. |> -- |> Ed Carp N7EKG/6 erc@khijol.UUCP ...uunet!khijol!erc |> UUWEST Consulting Alameda, CA 415/814-0550 While I agree with several posters, SOME companies DO CARE, and do insure that fixes get distributed. Size of the company, &/or any arguments about the customer bas is ILLOGICAL. If the >customer< chooses not to RTFM(bug list), or call about something then that's his choice. But the vendors who DO DISTRIBUTE SECURITY fixes will be remembered, in things such as customer loyalty!! The small 1 or even 2 time cost of the fix, regardless of media to achieve *satisfaction* of being "supported right" will always far outweigh the minor cost associated with distribution. The possibilities of legal action in lawyer costs substantiate this!! That will be a decisive factor, as wel become more and more 'lectronic !!!!! -- Steve Blair DELL UNIX DIVISION sblair@upurbmw.dell.com ================================================================
dave@jato.jpl.nasa.gov (Dave Hayes) (05/02/91)
wrwalke@rsi.UUCP (William Walker) writes: >In article <1991Apr30.224235.2459@jato.jpl.nasa.gov>, dave@jato.jpl.nasa.gov (Dave Hayes) writes: >> I see what you are saying, but I have to disagree. Why has Dan even POSTED >> that such holes exist, if he is not willing to disclose the details to >> us system admins that are going to be of necessity interested in the problem? > ^^^^^^^^^^^^^ >ok, so you *are* a system admin with a legit need to know. so what's the big >deal with sending him a set of references?? I did. That didn't seem to help matters much. He claims I have no legitimate reason to know. My paycheck claims differently. >do you want every bored CS major between here and australia finding out >about those holes a week or so before you get your patch tapes from the >vendor? What patch tapes from the vendor? We'll be damn lucky to see patches from vendors in 1995! I don't trust vendors any farther than I can throw them, see my previous stuff in comp.sys.apollo for a good example of that (about the time of the HP buyout). They have no incentive to fix these holes...yet. In that sense it would be good for a few bored CS majors to get into it on the net...that'd make everybody wake up and smell the coffee. >so what do you do if you find a nifty little bug?? you tell the vendor >and CERT, CERT makes it known to it's brain/talent trust, contacts the >vendor who says "BFD". what about the guy *without* source?? how is >he ever going to get the hole patched? unless the customers pressure >the vendor, Which rarely works anyway. What are you trying to say here? >NO changes will ever be made unless it is the old "fixed >in the next release" line, send us a check.... this "approval" arrangement >also sounds kinda hokey to me, but i can't think of a better medium >between leaving gaping holes under the carpet and posting potentially >dangerous code on a public forum accessible to thousands of bored hacker >wannabe's. I don't know that posting the details of these hacks wouldn't do all of us a lot of good... These "approval" arrangements are always hokey. I personally believe that this behaivor is something left over from childhood...8) It's a cooperative universe. I help people all the time...if I was in the same position, I'd want every other sysadmin to know exactly what was broken and how to fix it (not just the latter). And that's my $2e-02. -- Dave Hayes - Network & Communications Engineering - JPL / NASA - Pasadena CA dave@elxr.jpl.nasa.gov dave@jato.jpl.nasa.gov ames!elroy!dxh You possess only what will not be lost in a shipwreck.
jim@segue.segue.com (Jim Balter) (05/02/91)
In article <13218@goofy.Apple.COM> erc@Apple.COM (Ed Carp) writes:
[idiotic garbage insulting Dan Bernstein and Gene Spafford]
I've seen plenty of rude and stupid Net postings, and am responsible for a few
myself, but this has got to be the most pointless I've seen. You've merely
guaranteed that you'll be the last to hear about this stuff, and made yourself
unpopular with a lot of people who have never heard of you before because,
unlike Dan and Gene, you have nothing to contribute. Dan has provided a large
amount of information and solutions, worked with developers, communicated with
others known to have knowledge in this area, and come up with a concrete plan
for solving the problem permanently. You may disagree with his particular
approach, but what could possibly make you think that you are in any way
*superior* to Dan, such that it could justify the arrogance of your post?
I suggest that you apologize and then find another line of work.
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/02/91)
In article <13266@goofy.Apple.COM> erc@Apple.COM (Ed Carp) writes: > In article <26844:May100:59:2591@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: > >Let me be more explicit. I consider vendors to have a legitimate > Oh? I do consulting for a vendor, notably Apple. Fine. So tell someone working on A/UX to get in touch with me. > I also do consulting > for a number of very large companies in the bay area, notably a very large > public utility. [ ... ] > IMHO, your attitude is irrational. How many sites do I have to administer > to qualify? One? Five? A hundred? [ ... ] > You haven't addressed the issue of whether I'm a cracker or not. Being a > system administrator of a hundred systems doesn't prove you're a good guy, > any more than being the administrator of one makes you a bad guy. Somehow certain people have formed the mistaken impression that I have been treating large sites differently from small sites. As I have tried to explain, I do *not* see a fine line between the administrator of one machine and the manager of a network of ten thousand machines. I have not made and will not make a policy of sending break code to anyone who asks---exactly *because* wide distribution of the code will eventually reach the ``bad guys'', will affect practically every UNIX machine on the Internet, and won't be traceable. So (as Dave Hayes can assure you) I haven't been sending code to people merely because they manage a ``large enough'' network. Would you like to reevaluate my ``irrational'' position, now that you have some idea of what my position actually is? > There's NO WAY that you're going to > get all vendors to distribute fixes, let alone distribute them FOR FREE. If a vendor doesn't react by October 1992, its systems will be open to attack by any novice with rn and cc. Don't get the idea that I trust vendors to fix problems; I just want to give the more sensible ones a chance to clean up their act. I suspect that at least some will react. I'd like to request once again that people read my articles before spouting off about the proper distribution of security information. I *have* posted fixes, not just complained about these holes. I have *not* indicated that large sites are getting any special treatment, nor have I been giving them any special treatment. I *have* set a date for distributing code---a date far enough in the future that any concerned vendor can fix its systems. This may not be the optimal policy for handling a security hole, but it's the best policy I've come up with, and I'm not going to listen to complaints from people who can neither formulate a consistent alternative policy nor think through its effects. The intelligent man does not criticize what he cannot improve. ---Dan
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/02/91)
In article <1991May1.201408.16204@pcserver2.naitc.com> kdenning@genesis.Naitc.Com (Karl Denninger) writes: > And I think I have a fix -- actually, two different > fixes, both of which should be easily implemented. Both ARE implemented on > two different machines from different manufacturers here. [ 1. dynamic ptys, as on the RS/6000 ] These are rather difficult to implement. They are an excellent long-term solution, but it's much easier to apply my fixes to a typical BSD machine than to radically reorganize and rewrite many parts of the kernel for dynamic ttys. [ 2. something with O_EXCL on the MIPS ] Um, O_EXCL does not have the semantics you describe on a standard BSD machine, nor on any of the variants with which I'm familiar. MIPS may have added something to have O_EXCL pay attention to reference counts, but that solution simply won't work under SunOS or Ultrix or any similar system. (Of course, with my TIOCOPENCT you can simulate the same thing.) ---Dan
tneff@bfmny0.BFM.COM (Tom Neff) (05/02/91)
In article <11974:May214:00:3691@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: > I again invite you and everyone else to stop >spouting the same tired old rhetoric and start paying attention to this >case on its own merits. I suggest this invitation would not have been needed if 'brnstnd' had been somewhat more professional in his original announcement. I can't be the only one who found it a bit annoying. If we really want to help the net, we should remember it's made up of *people* who will have human reactions to what they read. It is, for instance, pretty easy to apply 'need to know' criteria when people ask for bug details, without going out of your way to trumpet the fact beforehand and p*** people off unnecessarily in the process. It's also a good idea to try and keep factual discussions of specific security problems separate from editorializing about who ought to know what, when, etc. There's already too much of a tendency to combine these threads in ordinary followups. A new, primary posting that deliberately combines security facts and editorializing is guaranteed to fan the flames! And my point is that experienced posters can and should know this up front. It's a question of how you want the discussion to proceed. If you WANT to start a brawl, it's not hard to do. I don't think the net is best served that way. In this case it would probably have been enough to say "I seem to have found a security bug in BSD ttys; the following vendors and versions are known to be affected; the following are known to be OK; for further details mail me at <address>." No big fuss, no cause celebre, just quiet, effective response.
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/02/91)
In article <721@seqp4.UUCP> jdarcy@seqp4.ORG (Jeff d'Arcy) writes: > The fact is that Dan would hardly be the first > person to make such an offer without having the goods to back it up. As Steve Bellovin, Gene Spafford, Tom Christiansen, various BSD folks including Marc Teitelbaum and Keith Bostic, CERT, and a couple of other people can attest, I *do* have the goods: a program that compiles, runs, and breaks tty security sufficiently well to invisibly execute a command under other people's sessions. I've had the program since before my first article here about tty security a few years back, and it's required only minor changes to work on systems through the latest BSD. While in some alternate universe I might conceivably ``make such an offer without having the goods to back it up,'' in reality I *do* have what I have claimed. That's the fact, Jeff. I again invite you and everyone else to stop spouting the same tired old rhetoric and start paying attention to this case on its own merits. I don't expect to post further articles in this thread, as I find all these counterfactual arguments remarkably counterproductive. I will continue to watch for questions and complaints about the fixes, and if necessary I will post comments about the security of specific machines. In late 1992 we'll see how many vendors have woken up. ---Dan
rickert@mp.cs.niu.edu (Neil Rickert) (05/03/91)
In article <83658694@bfmny0.BFM.COM> tneff@bfmny0.BFM.COM (Tom Neff) writes: >In article <11974:May214:00:3691@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >> I again invite you and everyone else to stop >>spouting the same tired old rhetoric and start paying attention to this >>case on its own merits. > >I suggest this invitation would not have been needed if 'brnstnd' had >been somewhat more professional in his original announcement. I can't >be the only one who found it a bit annoying. I didn't find anything annoying in the original announcement. I thought Dan explained the situation quite clearly. Sure there was plenty of room to disagree with some of his opinions, but it was easy to distinguish fact from opinion. >In this case it would probably have been enough to say "I seem to have >found a security bug in BSD ttys; the following vendors and versions are >known to be affected; the following are known to be OK; for further >details mail me at <address>." No big fuss, no cause celebre, just >quiet, effective response. Sorry for the "grammatical" correction, but didn't you intend that last sentence to read: No big fuss, no cause celebre, just quiet, INeffective NONresponse. -- =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Neil W. Rickert, Computer Science <rickert@cs.niu.edu> Northern Illinois Univ. DeKalb, IL 60115 +1-815-753-6940
kdenning@genesis.Naitc.Com (Karl Denninger) (05/03/91)
In article <7363:May202:45:0591@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >If a vendor doesn't react by October 1992, its systems will be open to >attack by any novice with rn and cc. Don't get the idea that I trust >vendors to fix problems; I just want to give the more sensible ones a >chance to clean up their act. I suspect that at least some will react. You're giving them WAY too much slack. I suggest 90 days. That's enough time to fix a hole of this magnitude and ship tapes to anyone who needs them. Then let 'em have it. Of course, someone else might do it for 'ya too... (post the nasty code that is). -- Karl Denninger - AC Nielsen, Bannockburn IL (708) 317-3285 kdenning@nis.naitc.com "The most dangerous command on any computer is the carriage return." Disclaimer: The opinions here are solely mine and may or may not reflect those of the company.
entropy@wpi.WPI.EDU (Lawrence C Foard) (05/03/91)
In article <11974:May214:00:3691@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >In article <721@seqp4.UUCP> jdarcy@seqp4.ORG (Jeff d'Arcy) writes: >> The fact is that Dan would hardly be the first >> person to make such an offer without having the goods to back it up. > >As Steve Bellovin, Gene Spafford, Tom Christiansen, various BSD folks >including Marc Teitelbaum and Keith Bostic, CERT, and a couple of other >people can attest, I *do* have the goods: a program that compiles, runs, >and breaks tty security sufficiently well to invisibly execute a command [rest deleted] I agree: With the information already posted here, it took me about 20 minutes to make a program that could execute commands on other people terminals (80% of the time spent in man). I briefly described how it worked to one of the people I tested it on, they made a similar program by the time I walked across campus. I think it is safe to assume that any one who has read this group and has minimal unix programming knowledge could duplicate it easily. Clearly security through obscurity isn't an option in this case. One other possible attack occurs to me, and I don't think the fixs I have seen posted would prevent it: 1) Make an unused tty device into your controlling terminal, 2) Close it. 3) You currently have no open files. 4) Wait for a victim to log in on the tty, open /dev/tty and use TIOCSTI on it.
dave@jato.jpl.nasa.gov (Dave Hayes) (05/03/91)
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >Somehow certain people have formed the mistaken impression that I have >been treating large sites differently from small sites. As I have tried >to explain, I do *not* see a fine line between the administrator of one >machine and the manager of a network of ten thousand machines. I have >not made and will not make a policy of sending break code to anyone who >asks---exactly *because* wide distribution of the code will eventually >reach the ``bad guys'', will affect practically every UNIX machine on >the Internet, and won't be traceable. So (as Dave Hayes can assure you) >I haven't been sending code to people merely because they manage a >``large enough'' network. Yes, I can vouch for that. Dan has persisted in an arrogant and counter-survival attitude which affects the lives of nearly every damn sys admin responsible for computer security. Consider...good computer crackers can find out exactly how to exploit these holes from the information Dan has "graciously" (read 'teasingly') given us all. Why NOT distribute the code involved? The damage is already done. In fact, Dan has made a whole LOT of people 'wrong' in a sense of giving out a potential hole, and then proposing some long and tired hack to a system to patch it. Does this work? Has anyone tried it? Is it comphrehensive? Personally, I don't trust anyone that doesn't trust me. (COmmon sense) There's no way I would trust the integrity and completeness of Dan's patch...even though he may be competant enough to have provided the correct information. So that 'patch' he posted is basically worthless to me. (Yes, I could waste a good week figuring these things out for myself...this is neither desireable or the real point.) How many other sys admins out there feel like I do? I'd really like to know. >This may not be the optimal policy for handling a security hole, but >it's the best policy I've come up with, and I'm not going to listen to >complaints from people who can neither formulate a consistent >alternative policy nor think through its effects. The intelligent man >does not criticize what he cannot improve. Well, to "improve" something has different meaning to different people. I can not only criticize, I can supply you with an alternative. Provide enough details to enable someone to write a comprehensive program that can check for the existence of the holes that you specify on any system... then publish it. It's that simple. >---Dan -- Dave Hayes - Network & Communications Engineering - JPL / NASA - Pasadena CA dave@elxr.jpl.nasa.gov dave@jato.jpl.nasa.gov ames!elroy!dxh There is no greater calamity for a nation or individual than not finding contentment in one's sufficiency.
mjr@hussar.dco.dec.com (Marcus J. Ranum) (05/03/91)
kdenning@genesis.Naitc.Com (Karl Denninger) writes: > brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >>If a vendor doesn't react by October 1992, its systems will be open to >>attack[...] > >You're giving them WAY too much slack. I agree - that's giving the vendors a lot of slack. But, bear in mind that not only are you (hopefully) going to embarrass vendors into patching broken code - by posting the keys you are leaving a lot of sites wide open to attack, sites that are not "guilty" and therefore deserve some slack themselves. This is a tricky issue, and it's not, I respectfully submit, as simple as bashing a vendor. mjr.
muller@sdcc10.ucsd.edu (Keith Muller) (05/03/91)
In article <1991May2.202847.15537@wpi.WPI.EDU>, entropy@wpi.WPI.EDU (Lawrence C Foard) writes: > One other possible attack occurs to me, and I don't think the fixs I have seen > posted would prevent it: > > 1) Make an unused tty device into your controlling terminal, > 2) Close it. > 3) You currently have no open files. > 4) Wait for a victim to log in on the tty, open /dev/tty and use TIOCSTI on it. If #4 restores access to a previous controlling terminal, then there is a good arguement that the semantics of /dev/tty are broken (the fact you have a tty listed as you controlling terminal should give you no special access rights to it unless MAYBE you also have a current fd that references it). I would tend to want an open of /dev/tty to always check the current access to the controlling terminal. Keith Muller University of California kmuller@ucsd.edu
jdarcy@seqp4.ORG (Jeff d'Arcy) (05/03/91)
brnstnd@kramden.acf.nyu.edu (Dan Bernstein): >In article <721@seqp4.UUCP> jdarcy@seqp4.ORG (Jeff d'Arcy) writes: >> The fact is that Dan would hardly be the first >> person to make such an offer without having the goods to back it up. > >As Steve Bellovin, Gene Spafford, Tom Christiansen, various BSD folks >including Marc Teitelbaum and Keith Bostic, CERT, and a couple of other >people can attest, I *do* have the goods: That's a very nice piece of name-dropping there, but the fact remains that we mere mortals have no evidence of your claims. I have no reason to think this program will work on either of the systems I've worked on and, since I can't get a copy of the program without major headaches (despite the fact that I'm a professional kernel developer in as good a position as anyone to fix the bugs on both platforms), I just won't bother. Maybe I would if I had time, but I'm plenty busy without having to take any Bernstein bullshit. >That's the fact, Jeff. I again invite you and everyone else to stop >spouting the same tired old rhetoric and start paying attention to this >case on its own merits. Its own what? I see this as just another plea for attention by the net's most infamous glory-hound. The real hackers already know about this bug, and many others that I'm sure neither you nor I have figured out yet. I've seen several generations of pty-related security problems before you came along, and there will undoubtedly be more after your current crusade is only a memory. All your crowing about your intellectual and moral superiority won't get you the respect you so obviously crave. Your "amazing discoveries" are pretty mundane to those of us who make a living at this stuff. >I don't expect to post further articles in this thread I wish I could believe you. -- Jeff d'Arcy, Generic MTS, Sequoia Systems Inc. <jdarcy%seqp4@m2c.org> Time flies like an arrow; fruit flies like a banana
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/03/91)
In article <1991May2.202847.15537@wpi.WPI.EDU> entropy@wpi.WPI.EDU (Lawrence C Foard) writes: >One other possible attack occurs to me, and I don't think the fixs I have seen >posted would prevent it: >1) Make an unused tty device into your controlling terminal, >2) Close it. >3) You currently have no open files. >4) Wait for a victim to log in on the tty, open /dev/tty and use TIOCSTI on it. My fixes stop this attack in three ways. First, by closing all open files you prevent yourself from reopening the new /dev/tty. Technically, you still do have the same controlling terminal (p_ttyd), but you can't abuse that fact as the old /dev/tty driver is no longer accessible. That's the point of replacing /dev/tty. Second, you can't ``make an unused tty device into your controlling terminal'' by opening an unused tty device, because all unused tty devices are world-inaccessible. That's the point of protecting the files and making the tty-handling programs setuid pty. Third, you can't ``make an unused tty device into your controlling terminal'' by waiting for your ctty to become unused, because the tty-handling process keeps the master side open until nobody has the slave side open. That's the point of TIOCOPENCT. Note that without the new /dev/tty this protection would not be effective. There are more sophisticated attacks that are only stopped by one of these three measures. ---Dan
ian@pharaoh.UUCP (Ian Crocker) (05/03/91)
Maybe I am missing something here but I don't see where the security issue lies. Sure it is easy to knock up a program that disassociates itself from the controlling tty using TIOCNOTTY, then attach to another tty that you have write permission on. However when you try and do the TIOCSTI it fails on all the systems I have tried it on because you are not the owner of the device. I know that the manual says it should work as you are trying to do the ioctl on your control terminal, but this is not the case on my systems - you have to own the device or have an euid of 0. Ian. -- Ian Crocker NPW-mail : ian@pharaoh usenet : ian@cyborg.bt.co.uk
ian@pharaoh.UUCP (Ian Crocker) (05/03/91)
In article <438@pharaoh.UUCP>, ian@pharaoh.UUCP (Ian Crocker) writes: > > write permission on. However when you try and do the TIOCSTI it fails on > all the systems I have tried it on because you are not the owner of the > device. I know that the manual says it should work as you are trying > to do the ioctl on your control terminal, but this is not the case on my > systems - you have to own the device or have an euid of 0. > Further to my previous post I thought of a machine I hadn't tried it on and sure enough it worked. Complete control of the root terminal from an unprivileged userid. Seems this manufacturer is lagging behind the others - no prizes for guessing who it is! Ian. -- Ian Crocker NPW-mail : ian@pharaoh usenet : ian@cyborg.bt.co.uk
jfh@greenber.austin.ibm.com (John F Haugh II) (05/04/91)
In article <18954@sdcc6.ucsd.edu> muller@sdcc10.ucsd.edu (Keith Muller) writes: >In article <1991May2.202847.15537@wpi.WPI.EDU>, entropy@wpi.WPI.EDU (Lawrence C Foard) writes: >I would tend to want an open of /dev/tty to always check the current >access to the controlling terminal. The current implementations of /dev/tty don't cause the open to go through the filesystem. Nor would that always be possible - the "current access" can be completely meaningless if there are more than one (or even none) instances of that device. One of the advantages of "POSIX-like" tty subsystems is that /dev/tty operations can be restricted by "session id". Dan can tell you what is wrong with how POSIX works with regard to this feature ... -- John F. Haugh II | I've Been Moved | MaBellNet: (512) 838-4340 SneakerNet: 809/1D064 | AGAIN ! | VNET: LCCB386 at AUSVMQ BangNet: ..!cs.utexas.edu!ibmchs!auschs!snowball.austin.ibm.com!jfh (e-i-e-i-o)
fitz@mml0.meche.rpi.edu (Brian Fitzgerald) (05/05/91)
Gentlemen: - Please - This is another plea for restraint and courtesy. Some of us follow alt.security mainly to learn. IMHO, personal insults do not belong in this newsgroup. Thank you. Brian
jkp@cs.HUT.FI (Jyrki Kuoppala) (05/05/91)
In article <438@pharaoh.UUCP>, ian@pharaoh (Ian Crocker) writes: [TIOCNOTTY] >However when you try and do the TIOCSTI it fails on >all the systems I have tried it on because you are not the owner of the >device. I know that the manual says it should work as you are trying >to do the ioctl on your control terminal, but this is not the case on my >systems - you have to own the device or have an euid of 0. Hmm, I haven't checked lately and am not sure if I remember it correctly but are you sure after attaching to another tty you did open ("/dev/tty", O_RDWR) and then the TIOCSTI on that file descriptor ? That worked on a pretty generic bsd 4.3 system at least a couple of years ago. //Jyrki
jfh@rpp386.cactus.org (John F Haugh II) (05/06/91)
In article <729@seqp4.UUCP> jdarcy@sequoia.com (Jeff d'Arcy) writes: >brnstnd@kramden.acf.nyu.edu (Dan Bernstein): >>As Steve Bellovin, Gene Spafford, Tom Christiansen, various BSD folks >>including Marc Teitelbaum and Keith Bostic, CERT, and a couple of other >>people can attest, I *do* have the goods: > >That's a very nice piece of name-dropping there, but the fact remains that we >mere mortals have no evidence of your claims. Given that many of those people read this newsgroup, you don't have to verify his claims. Tom Christiansen regularly reads this group, along with Steve Bellovin. Perhaps they can verify what Dan is saying (they already have from what I've seen). Dan may be pompous and long winded, but he certainly isn't a fool or a liar. -- John F. Haugh II | Distribution to | UUCP: ...!cs.utexas.edu!rpp386!jfh Ma Bell: (512) 255-8251 | GEnie PROHIBITED :-) | Domain: jfh@rpp386.cactus.org "If liberals interpreted the 2nd Amendment the same way they interpret the rest of the Constitution, gun ownership would be mandatory."
paul@uxc.cso.uiuc.edu (Paul Pomes - UofIllinois CSO) (05/06/91)
From: jdarcy@seqp4.ORG (Jeff d'Arcy) >That's a very nice piece of name-dropping there, but the fact remains that we >mere mortals have no evidence of your claims. I have no reason to think this >program will work on either of the systems I've worked on and, since I can't >get a copy of the program without major headaches (despite the fact that I'm a >professional kernel developer in as good a position as anyone to fix the bugs >on both platforms), I just won't bother. Maybe I would if I had time, but I'm >plenty busy without having to take any Bernstein bullshit. From: ian@pharaoh.UUCP (Ian Crocker) >Further to my previous post I thought of a machine I hadn't tried it on and >sure enough it worked. Complete control of the root terminal from an >unprivileged userid. Seems this manufacturer is lagging behind the others - >no prizes for guessing who it is! Sequoia Systems? After all, they're too busy to check. /pbp -- Paul Pomes, Computing Services Office University of Illinois - Urbana
tchrist@convex.COM (Tom Christiansen) (05/07/91)
From the keyboard of jfh@rpp386.cactus.org (John F Haugh II): :>That's a very nice piece of name-dropping there, but the fact remains that we :>mere mortals have no evidence of your claims. : :Given that many of those people read this newsgroup, you don't have to :verify his claims. Tom Christiansen regularly reads this group, along :with Steve Bellovin. Perhaps they can verify what Dan is saying (they :already have from what I've seen). Dan's program does indeed compromise ConvexOS 9.0; I will vouch for no other system. (There's something terribly ironic about me having Dan for a customer, eh? :-) We've closed up the hole at least for rlogin, telnet, and xterm for the 9.1 release. It required a kernel change, so there aren't patched versions of these programs available. The script and window utilities will still be insecure as they can't chown and chmod their ttys. I'm personally hoping for a more complete long-term solution using a session manager, but there's no way to anticipate if or when this might occur. I think anybody who's been working on this stuff for a while already knows the scoop about the particular hole we've all been dancing around here. One poster mentioned he'd gotten working code exploiting the problem in about 20 minutes. That means the crackers can, too, and have probably already done so. The signal-to-noise ratio in this discussion is discouraging. Insults aren't going to buy anyone anything. They will neither persuade someone to your cause who was on the other side, nor do they invalidate Dan's working code, nor (I imagine) will they stop him from posting details a child (as opposed to professionals, who already understand) could follow come October. --tom -- Tom Christiansen tchrist@convex.com convex!tchrist "So much mail, so little time."
bombman@diku.dk (Hans-Henrik St{rfeldt) (05/09/91)
dave@jato.jpl.nasa.gov (Dave Hayes) writes: >erc@Apple.COM (Ed Carp) writes: >>In article <3600:Apr2614:04:4391@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >>>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 >>Um, what IS this bullshit? >What indeed? Methinks it IS just that. >> Who the hell are you to set yourself up as some sort >>of net.god and tell us that you will "bless" us with all your neat little hacks >>and info only if we satisfy your little set of rules? Your pathetic excuses >>about protecting the information from "black hats" is unmitigated bullshit. >THANK YOU for saying this! I'm glad someone out there has sense. >>The only thing you are doing is concealing any valuable information that you >>may have from the people who have a genuine need for your information. The >>folks who already care about cracking into systems already know about this >>stuff anyway. Get real. >Hear, hear! Interesting, i would just LOVE! to see your face, when some novice user make an 'rm -Rf /*' when YOU log in as root.... Huh?! i see you come from a '*.nasa.gov' i BET there is something secret there... somewhere... >-- >Dave Hayes - Network & Communications Engineering - JPL / NASA - Pasadena CA >dave@elxr.jpl.nasa.gov dave@jato.jpl.nasa.gov ames!elroy!dxh > There is a saying: "I believe it because it is impossible" >If you make any study of people in a state of what they are pleased to call >belief, you will find that you can usually best describe them by the saying: > "My belief has made me impossible." --Hans Henrik Staerfeldt ..The novice user.. -- ____________________________________________________________ DK_ | | Bombman the mad bomber | // .|{}| Bombman@freja.diku.dk | /-| |__| Hans Henrik Staerfeldt |
jdarcy@seqp4.ORG (Jeff d'Arcy) (05/10/91)
Paul-Pomes@uiuc.edu: > From: ian@pharaoh.UUCP (Ian Crocker) > >>Further to my previous post I thought of a machine I hadn't tried it on and >>sure enough it worked. Complete control of the root terminal from an >>unprivileged userid. Seems this manufacturer is lagging behind the others - >>no prizes for guessing who it is! > >Sequoia Systems? After all, they're too busy to check. This post gave me the incentive to check things out under TOPIX (Sequoia's UNIX-compatible OS) despite the fact that I'll probably get in trouble for taking the time away from my assigned tasks to do so. What I found was a very serious security bug involving TIOCSTI, but I don't think it's the same one people have been talking about here. It doesn't bother me to admit that the problem exists because: (a) I've barely been at Sequoia long enough to remember my boss's name, let alone take responsibility for day-one bugs; and (b) the existence of the problem in TOPIX does nothing to invalidate any of my earlier statements. Now it's on my list of things to fix. Big deal. Except for the publicity, there's nothing to distinguish this bug from the sort of stuff that I and thousands of other OS developers at dozens of companies have seen every day for years. Maybe Dan, Ian, and Paul's excitement can be explained by the observation that just about anything is exciting the first few times. Believe me, kids: there are dozens of bugs in *every OS in the world* that would horrify users and administrators alike if they were ever made known. Twiddle this, frobnicate that, and...BLAM...instant super-user, or system crash, or filesystem corruption, or whatever. Should I tell you about the SOCK_RAW crashes at one vendor, or the disappearing disk space at another, or the setuid bug at a third? Really, I got a million of 'em. Why don't you guys stop crowing because you found *one* bug in *one* OS, and think a little about how many you *don't* know about and never will? I'm sure there are plenty of scary bugs that I'll never hear about because they were fixed by my predecessors. Excuse me. I have bugs to fix. -- Jeff d'Arcy, Generic MTS, Sequoia Systems Inc. <jdarcy%seqp4@m2c.org> Time flies like an arrow; fruit flies like a banana
dave@jato.jpl.nasa.gov (Dave Hayes) (05/10/91)
bombman@diku.dk (Hans-Henrik St{rfeldt) writes: >Interesting, i would just LOVE! to see your face, when some novice user >make an 'rm -Rf /*' when YOU log in as root.... I'm sure you aren't as interested as Mr. Bernstein would be. -- Dave Hayes - Network & Communications Engineering - JPL / NASA - Pasadena CA dave@elxr.jpl.nasa.gov dave@jato.jpl.nasa.gov ames!elroy!dxh If your own vice happens to be the search for virtue, recognize that it is so.
mbk@jacobi.ucsd.edu (Matt Kennel;I11 CMRR;534-4511) (05/10/91)
jfh@rpp386.cactus.org (John F Haugh II) writes: > > Dan may be pompous and long winded, but he certainly isn't a fool or > a liar. I can assert that I've seen (ok ok, been the victim :-) ) of Dan's tty mangling programs--I believe the problems are real. On the other hand, nothing he inflicted on me ever seemed more capable than just being an irritant. > John F. Haugh II | Distribution to | UUCP: ...!cs.utexas.edu!rpp386!jfh Matt Kennel mbk@inls1.ucsd.edu
dsmythe@netcom.COM (Dave Smythe) (05/12/91)
Regarding the TIOCSTI problem, I can verify that it is real. It took about 20 minutes of poking around in man pages and that was it. For reference, I was able to reproduce the problem in SunOS 4.0.3 and 3.5, but not in 4.1. D
smb@ulysses.att.com (Steven Bellovin) (05/14/91)
The bug, or rather, bugs, that Dan is talking about do indeed exist, in many versions of the UNIX system. The root problem is that access to the user's tty is not adequately controlled. There are a number of manifestations of this problem; some are entirely innocent but annoying nevertheless. For every such manifestation, there has been an attempted fix over the years, it seems. Few have been notably successful; problems (including security problems) still show up. I won't recite here all of the issues; they're described at some length in my paper. (Btw, for those who are interested but haven't been able to locate a copy of the relevant Usenix proceedings, I've made the paper available for ftp on research.att.com, in dist/sessext.ps.Z) This problem has been bothering me for quite a number of years; I remember investigating it as early as 1979. I concluded that much of the problem was due to complexity -- it wasn't possible to revoke access in any clean, comprehensive fashion because the necessary information was spread out into too many different places. Furthermore, even if I did all the work necessary -- chasing down u.u_ttyp, looking for vagrant file descriptors pointing to a given tty, blocking race conditions, etc. -- I realized that I'd never feel confident that I'd found them all. Witness vhangup() -- for all its deficiencies, it is capable of doing much of the job, but there have been several application patches released over the years because there were unappreciated subtleties to the proper usage of the system call. What was needed, then, was not just a solution, but one that was demonstrably correct. (By ``correct'', btw, I mean that it accomplished my goals: that it unconditionally revoked all prior access to the tty.) The other focus of my work was the hangup/DTR problem. Many versions of the UNIX system could experience race conditions involving hangup. Perhaps the login shell would hang around waiting for a buggy application to finish, or some nohup'ed application still had some fd's open, so the close routine was never called. Or maybe there was another scenario -- I suspect that if all variations of the problem were ever identified, the problem might have been solved. But it wasn't. The manifestations were dead ports -- modems that didn't answer, or network daemons that tried to talk on wedged ptys. The two threads are tied together in hangup processing. Apart from getting the line properly re-enabled, the receipt of a hangup signal is when you really have to revoke access to the tty -- that's when the hardware or the network daemon have concluded that the connection no longer exists. But you can't call a close routine then -- HUP signals occur at interrupt time, and hence without a user context. The upshot of all that was the session manager. I implemented it for System V because streams and multiplexor devices provided a clean implementation technique. But I could have done it for 4.2bsd; I had an implementation sketched out around 1984 or thereabouts. I'm not claiming that my idea is the only way to do things, or even necessarily the best. But its complexity is all in one place (the user-level session manager process), and the kernel implementation was such that it would tend to ``fail secure'', as it were. I'm somewhat leary of Dan's solution because I think it's too complex in the wrong spots -- it puts too much of the onus on application programs (which one would like to have unprivileged, i.e., the script command). Keith Muller's generation number idea sounds intriguing, but I haven't analyzed it fully. In any event, it wouldn't solve the DTR problem. John Haugh's suggestion of a secure attention key tends to beg the point -- one can specify one, but there's still the problem of how you implement it. It's still hard to revoke all access to an open tty, especially given the indirect accesses through /dev/tty. (Obviously it can be done without the session manager, since several vendors have done it. I haven't examined any of these in detail, so I don't know how reliable their solutions are.) I'm *not* prepared to offer my own retrofit solution at this time. --Steve Bellovin
jfh@rpp386.cactus.org (John F Haugh II) (05/14/91)
In article <14768@ulysses.att.com> smb@ulysses.att.com (Steven Bellovin) writes: > John Haugh's >suggestion of a secure attention key tends to beg the point -- one can >specify one, but there's still the problem of how you implement it. I don't think this is even a problem. This issue with SAK implementation seems to be a trade-off between knowing it will always work, and wanting it to always work. The issue seems to be solved by having fixed-baud ports use fixed-key sequences that are unlikely to occur in real life, and having variable-baud ports use baud rate independent sequences (such as framing errors, hence Dan's <BREAK> key suggestion). If you allow it to always work, you have the problem I pointed out in the discussion with Dan - what do you do when something mimics the <BREAK> key, such as a framing error condition on a serial port. If you allow just anyone to turn it off, you get no assurance that whacking the SAK key really got you on the trusted path. Thus there is a struggle between security and usablity ... >It's still hard to revoke all access to an open tty, especially given >the indirect accesses through /dev/tty. (Obviously it can be done >without the session manager, since several vendors have done it. I >haven't examined any of these in detail, so I don't know how reliable >their solutions are.) I'm *not* prepared to offer my own retrofit >solution at this time. I wouldn't say it is "hard", simply as part of the nature of the beast, but rather it is "hard" because the information isn't collected in the right places (which you seem to allude to). There is no mapping from inode to process, and there is no easy collection of u_ttyd's all in one nice place. Fix those two problems, and the issue should evaporate. I do know that AT&T has managed to solve the problems with access revocation since their new MLS product is either been evaluated at B2 or is heading that way (their original MLS has already been through formal at B1). For IBM's current offering, AIX v3 has revoke() and frevoke() system calls which provide for all the needed assurance that you have a clean line, when combined with fchown() and fchmod(). As for "how reliable they are", in the case of the former, the NCSC has blessed it, and in the later, one customer found the notion of clean ports disgusting enough (I made sure the login port was really, really clean ;-) that we were forced to take out the code that made scrubbing the port prior to login mandatory. But it is very possible under Sys5/MLS and AIX v3 to get completely clean ports, without the changes Dan suggests are required. I know that the IBM, Apple, Sun, and SCO UNIX (as well as IBM's old Trusted XENIX) products all provide assurances that what you are talking is really what you think you are talking to, and that no one else has access to it. That is just the partial list ... -- John F. Haugh II | Distribution to | UUCP: ...!cs.utexas.edu!rpp386!jfh Ma Bell: (512) 255-8251 | GEnie PROHIBITED :-) | Domain: jfh@rpp386.cactus.org "If liberals interpreted the 2nd Amendment the same way they interpret the rest of the Constitution, gun ownership would be mandatory."
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/15/91)
In article <732@seqp4.UUCP> jdarcy@sequoia.com (Jeff d'Arcy) writes: > Now it's on my list of things to fix. Big deal. Except for the publicity, > there's nothing to distinguish this bug from the sort of stuff that I and > thousands of other OS developers at dozens of companies have seen every day > for years. Maybe Dan, Ian, and Paul's excitement can be explained by the > observation that just about anything is exciting the first few times. Maybe I found it exciting when I first found it and announced it a few years back, but by now it's simply tedious to see each vendor introduce one kludge after another, each of which is supposed to solve the problem and none of which actually does. > Believe me, kids: there are dozens of bugs in *every OS in the world* that > would horrify users and administrators alike if they were ever made known. Look, kid, I'm sure we all know our share of holes in each system. Holes that crash the machine, holes that aren't auditable, holes that break root, holes that have been known and complained about for years. But how many of those holes appear in over a million machines from dozens of vendors? How many of them have been ``fixed'' in at least nine different ways---five separate times in one system alone? This is not a minor problem, and it's not going to magically disappear. Most holes only appear in one system at a time, and are fixed rather quickly. To exploit this one I can run essentially the same code on week-old releases from all the major vendors as I had years ago. So can anyone else. Get a sense of perspective, Jeff! ---Dan
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/15/91)
In article <19271@rpp386.cactus.org> jfh@rpp386.cactus.org (John F Haugh II) writes: > I do know that AT&T has managed to solve the problems with access > revocation since their new MLS product is either been evaluated at B2 While this is a good indicator of security, it cannot be considered entirely accurate---apparently the ratings are based on tests rather than specifications, and one of the NCSC reviewers told me that he hadn't heard of the tty security problems (hence couldn't test them). > As for "how reliable they are", in the case of the former, the NCSC > has blessed it, See above. > I know that the IBM, Apple, Sun, > and SCO UNIX (as well as IBM's old Trusted XENIX) products all provide > assurances that what you are talking is really what you think you are > talking to, and that no one else has access to it. I don't have firsthand experience with the UNIX products from IBM and Apple, but Sun has never successfully closed the tty security holes. Comments from others indicate that A/UX is just as insecure. I've only been talking about BSD-derived systems so I don't want to discuss SCO in detail, but I'm told that it may have similar problems with /dev/tty. ---Dan
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/16/91)
In article <14768@ulysses.att.com> smb@ulysses.att.com (Steven Bellovin) writes: [ about his session manager ] > But its complexity is all in one place (the user-level > session manager process), and the kernel implementation was such that > it would tend to ``fail secure'', as it were. I'm somewhat leary of > Dan's solution because I think it's too complex in the wrong spots -- > it puts too much of the onus on application programs (which one would > like to have unprivileged, i.e., the script command). I have to agree with this. I find it absolutely ridiculous that so many different programs---telnetd, rlogind, script, emacs, xterm, expect, screen, mtty, Randal's chat2.pl, atty, etc.---are all responsible for managing a single resource. If even one of those programs fails, the whole system will fail. This *is* way too complex in the wrong spots. My previous solution to this problem was pty, my generic pseudo-tty session manager. Every single one of those programs can be modified to use pty---script, for example, becomes a tiny (unprivileged) shell script as included in the pty package. You can change the entire pseudo-tty interface by just changing that one program. In this respect pty is a lot like Bellovin's session manager (which it was partially modelled after). The problem is that it's hard to convince people to stop copying the pseudo-tty allocation code from one application to the next, and to use pty instead. If I thought people would accept this solution, then I'd gladly reorganize my tty fixes around pty, and Bellovin's objection would disappear. But people don't seem to understand why session managers---either Bellovin's or mine---are so useful. So I have no choice but to work within the existing complexity of the tty subsystem. (Side note: Remember that telnetd/rlogind patch announced by CERT? Well, at least under SunOS 4.0.3 and later as well as some other systems, pty will skip a tty with ``/dev/ttyp7 unopenable: I/O error'' in the same situations where Sun's new telnetd/rlogind will skip it. So anyone who's been using pty since last year is already safe against ``cover''. Is that any incentive to start using it?) ---Dan
jfh@rpp386.cactus.org (John F Haugh II) (05/16/91)
In article <1775:May1420:06:1291@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >While this is a good indicator of security, it cannot be considered >entirely accurate---apparently the ratings are based on tests rather >than specifications, and one of the NCSC reviewers told me that he >hadn't heard of the tty security problems (hence couldn't test them). The test cases are usually fairly exhaustive. The test suite for access() on IBM Secure Xenix had something like 1300 different tests that it performed. I coded some of the early tests for the revoke() and frevoke() system call while AIX v3 was in development, and access via /dev/tty was (as I recall, it's been 2 years now) one of the things I covered. I do know that backgrounded processes die painful deaths; customers weren't too pleased to see their jobs bite the big one, even when they were launched with nohup and so on. Talking about bugs in the specific sense ("do you know about TSTI") and having your NCSC reviewer stare back out you is not proof that the Orange Book requirement that the system provide for resource reuse where all previous, unauthorized accesses to the resource have been terminated. Given that object reuse is part of the specification for a secure system, I'd say you have some misconception about what the rating for a secure system entails. That doesn't mean there aren't bugs, but it certainly doesn't mean that access after logout isn't one of the criteria that are examined. AIX v3 originally handled it by killing every process that was anywheres near a tty device. Not exactly a popular approach, but it worked great ;-) >> As for "how reliable they are", in the case of the former, the NCSC >> has blessed it, > >See above. See above. These aren't little programmer weenies who don't know how UNIX works. This is why features like access revocation exist in the first place - think of all the ways you can get access to a device. Now think of a way to revoke all those ways. There are only so many system calls, it shouldn't be that hard to figure out which ones affect tty access. >I don't have firsthand experience with the UNIX products from IBM and >Apple, but Sun has never successfully closed the tty security holes. >Comments from others indicate that A/UX is just as insecure. I've only >been talking about BSD-derived systems so I don't want to discuss SCO in >detail, but I'm told that it may have similar problems with /dev/tty. I suspect that every system with some "revoke" concept doesn't have problems with its tty system. You scheme, for example, can't insure the passwd command that it isn't being run as part of a trojan horse. Mine can. Waving "physical security" at the problem doesn't free you of your responsiblity for "software security" either. This is why "Trusted Path" and "SAK" and "access revocation" are so much more useful than "don't ever let anyone talk to the hardwire tty." What can you do to prevent the trojan from ever being run, and once it is running, how can you get rid of it? -- John F. Haugh II | Distribution to | UUCP: ...!cs.utexas.edu!rpp386!jfh Ma Bell: (512) 255-8251 | GEnie PROHIBITED :-) | Domain: jfh@rpp386.cactus.org "If liberals interpreted the 2nd Amendment the same way they interpret the rest of the Constitution, gun ownership would be mandatory."
mrm@sceard.Sceard.COM (M.R.Murphy) (05/17/91)
In article <19280@rpp386.cactus.org> jfh@rpp386.cactus.org (John F Haugh II) writes: [...] > >See above. These aren't little programmer weenies who don't know >how UNIX works. This is why features like access revocation exist >in the first place - think of all the ways you can get access to >a device. Now think of a way to revoke all those ways. There are >only so many system calls, it shouldn't be that hard to figure out >which ones affect tty access. > Not when the number of system calls increases faster than you can read about 'em. This is not intended as a flame at jfh. It's a broad flame at lots of folks, me included, sometimes. I know that thinking about all the security stuff is fun. It also is or can be lucrative. Think of it as welfare for computer dweebs. But sometimes, just sometimes, I wish that I could use my home system for crystal structure refinement without all that security crap getting in my way. I also wonder from time to time how much of the security software, no, amend that to system software in general comes from people who, even if they RTFM, don't UTFM and certainly don't understand the philosophy behind TFM. You'd hope, if they did, that the solutions would be a whole lot simpler. Or wouldn't be needed in the first place. Oh, well. -- Mike Murphy mrm@Sceard.COM ucsd!sceard!mrm +1 619 598 5874
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/20/91)
In article <19280@rpp386.cactus.org> jfh@rpp386.cactus.org (John F Haugh II) writes: > I suspect that every system with some "revoke" concept doesn't have > problems with its tty system. BSD 4.2- and 4.3-derived systems have a ``revoke'' concept (viz., vhangup()) and have huge problems with the tty system. So much for that suspicion. The very latest version of BSD has a revoke() syscall which works just like you said. It still lets anyone take over a ``script'' session. Why do you have this religious fixation on revoke()? In contrast, the SVR4 tty system allocates ttys dynamically (in the sense that you get a tty that nobody else is using, not in the sense that there are arbitrarily many ttys). It doesn't revoke() anything; it just skips what's being used. The BSD 4.4 tty system will also have dynamic tty allocation. So will a future SunOS release. C'mon, John, why can't you point out the insecurity in SVR4 ttys? If, as you claim, skipping what's in use is so much less secure than attempting to revoke what's in use, then where's the attack that Steve Bellovin and Jonathan Shapiro somehow missed? Where's the danger? > You scheme, for example, can't insure > the passwd command that it isn't being run as part of a trojan horse. > Mine can. Bullshit. Have you ever heard of network logins? Have you ever heard of dialout modems? As I said before, unless you restrict use of passwd to the console, passwd will have absolutely no idea what it's talking to. Your claim is never true. Face it, John: revoke() does not solve any problems that avoiding a used tty entirely doesn't solve. The most revoke() can do is guarantee that the tty used for login is clean, and that's exactly what my proposals do. Stop pretending that there's some advantage to revoke(). > This is why > "Trusted Path" and "SAK" and "access revocation" are so much more > useful than "don't ever let anyone talk to the hardwire tty." So how come UNIX processes don't choose their own pids and revoke access by any other processes with the same pid? How come pid revocation isn't ``so much more useful'' than dynamic process allocation? How about memory use? How about inodes? How about pipes? How about disk space? Dynamic allocation appears everywhere in UNIX. It works. Access revocation is a pointless complexity. > What > can you do to prevent the trojan from ever being run, and once it is > running, how can you get rid of it? A Trojan Horse is ineffective unless it actually gets a chance to talk to someone. Under my suggestions, a normal user logging in will always be talking directly to a system process. No other processes can access the line. There's no reason to ``get rid of'' what you can just ignore. ---Dan
jfh@rpp386.cactus.org (John F Haugh II) (05/20/91)
In article <29167:May1918:13:2991@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >BSD 4.2- and 4.3-derived systems have a ``revoke'' concept (viz., >vhangup()) and have huge problems with the tty system. So much for that >suspicion. Then they obviously did it incorrectly. UNIX also has the concept of access right restrictions implemented via the iaccess() kernel service. If it had a bug allowing "jfh" to read and write any files owned by "root", it wouldn't disprove the concept of file access permissions. It would merely prove that the implementors of BSD didn't get vhangup() correct (if you want to claim its purpose is really to completely clean a line, that is). >The very latest version of BSD has a revoke() syscall which works just >like you said. It still lets anyone take over a ``script'' session. This has =nothing= to do with the discussion. 1). Does the revoke system call work? 2). Does the system protect the cleaned port from intrusion? If 1) and 2) are both true, and you can still take over the "script" session, I'll eat my shorts. Unless the revoke() system call removes all access to the port, and unless the system changes the access modes of the cleaned tty line to deny future attempts at accessing the system, there is no guarantee the line is protected. >Face it, John: revoke() does not solve any problems that avoiding a used >tty entirely doesn't solve. The most revoke() can do is guarantee that >the tty used for login is clean, and that's exactly what my proposals >do. Stop pretending that there's some advantage to revoke(). Sure there are. "Denial of service". If I manage to take up all the pty's, how are you ever going to get me off the port? Besides, the point about revoke() isn't to keep you from using a tty that is =in= use, but rather to get a program that has no business using the port off the port in the first place. That could be anything - including killing jobs that attached themselves to your port =after= you logged in. How do you get a job that has gained read/write access to your login port off of your login port once it is on there? >A Trojan Horse is ineffective unless it actually gets a chance to talk >to someone. Under my suggestions, a normal user logging in will always >be talking directly to a system process. No other processes can access >the line. There's no reason to ``get rid of'' what you can just ignore. I don't care what happens when you login. I want to know what happens =after= you login. Get it through you think skull. I don't care about login time. F*ck login time. What happens 15 or 20 minutes later when some proceess some how gets on your port and starts doing things to it? How does the Dan Bernstein Trusted Path Manager get that process off the line, other than arguing with it for 2 weeks before doing nothing? -- John F. Haugh II | Distribution to | UUCP: ...!cs.utexas.edu!rpp386!jfh Ma Bell: (512) 255-8251 | GEnie PROHIBITED :-) | Domain: jfh@rpp386.cactus.org "If liberals interpreted the 2nd Amendment the same way they interpret the rest of the Constitution, gun ownership would be mandatory."
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (05/22/91)
In article <19315@rpp386.cactus.org> jfh@rpp386.cactus.org (John F Haugh II) writes: > >Face it, John: revoke() does not solve any problems that avoiding a used > >tty entirely doesn't solve. The most revoke() can do is guarantee that > >the tty used for login is clean, and that's exactly what my proposals > >do. Stop pretending that there's some advantage to revoke(). > Sure there are. "Denial of service". If I manage to take up all > the pty's, how are you ever going to get me off the port? If a user opens all the ptys (which he can't under my proposal since they're protected), nobody will be able to open any of them again, and revoke() doesn't do diddly about that. If a user has access to all the ttys, then under my proposal not only will all those ttys will be accounted to him, but he'll have to be running under a telnetd or rlogind or whatever on each port, so all the ptys will be open anyway. Once again revoke() does absolutely nothing. > I don't care what happens when you login. I want to know what happens > =after= you login. Get it through you think skull. I don't care about > login time. F*ck login time. It's too bad you feel that way. Right now I'm focusing on tty security, and each login process runs under a tty. (This isn't how it should be: you should allocate as few resources as possible to someone who hasn't idenitifed himself. Wasting an entire tty is silly.) If the line is clean before login runs, it will remain clean unless the user does something stupid, like find / -user `whoami` -exec chmod {} 666 \;. > How does the Dan Bernstein Trusted Path Manager get that process off > the line, other than arguing with it for 2 weeks before doing nothing? It ignores it---and enforces security---by using another line. Which is what Dan Bernstein should probably be doing to you. ---Dan
mouse@thunder.mcrcim.mcgill.edu (der Mouse) (05/24/91)
In article <1991May17.142928.28492@sceard.Sceard.COM>, mrm@sceard.Sceard.COM (M.R.Murphy) writes: > I also wonder from time to time how much of the security software, > no, amend that to system software in general comes from people who, > even if they RTFM, don't UTFM and certainly don't understand the > philosophy behind TFM. You'd hope, if they did, that the solutions > would be a whole lot simpler. Or wouldn't be needed in the first > place. That's why the really good, elegant, clean systems (and I don't mean just UNIX) always spring from a very few minds. One, two, perhaps three, probably not more. The actual implementation may be the work of many, but the design must be the work of only a few, preferably only one. (It helps if the implementation is, too, but systems are getting a bit big for that nowadays.) Fred Brooks talks about this a bit (in The Mythical Man-Month, which I think everyone interested in any aspect of systems design should read). der Mouse old: mcgill-vision!mouse new: mouse@larry.mcrcim.mcgill.edu