Solaris, AIX Login Hole 267
An anonymous submitter sent in: "A CERT Advisory describes a buffer overflow vulnerability in implementations of login derived from System V, which includes among Solaris 8 and earlier and AIX 4.3/5.1. "An exploit exists and may be circulating." Vendors are testing fixes." There's a Reuters story as well.
More info: (Score:5, Informative)
here's the shake down for those to lazy to go to the site and read the article:
The hole is located in the "login" program that allows people to sign on to the operating system remotely by entering a username and password, ISS said. The vulnerability can be exploited only if certain remote command protocols, such as Telnet, are enabled, which they usually are by default, the company said.
ISS discovered the loophole in October and has been working with Sun and CERT on a fix, said Ingevaldson.
"We're not aware of anyone experiencing a problem with this," said Sun spokesman Russ Castronovo.
The security hole is very serious because there are so many computers in corporations and universities that run Solaris and because of the amount of harm someone could do if they were to gain complete control over a vulnerable machine, he said.
"Once you have super-user access to a machine you can do anything you want, modify files, create them, sniff network traffic," Ingevaldson said.
A temporary software patch is available for download from http://sunsolve.sun.com/securitypatch and a fully supported and tested fix will be available next week, Ingevaldson said.
Fixes are pending for AIX, according to CERT.
Re:More info: (Score:3, Insightful)
Of course, it never hurts to reinforce this.
Re:More info: (Score:5, Insightful)
to the IT person, it would be a great pain to install ssh on thousands of machines, so to help this effort, i think it should be the responsibility of the server manufacturers to put forth the (small) effort and install ssh by defauly. why is this not being done? (exception that i know of is many linux distros install ssh by default. good for them).
Re:More info: (Score:2, Informative)
Re:More info: (Score:2)
I wonder how long it will be before there is a malicious Unix worm that teaches them the same lesson with telnet.
Re:More info: (Score:2, Informative)
That way you don't have to teach all your developers and administrators to type "ssh" instead of "telnet" which has been working for them for years.
More information is at http://web.mit.edu/kerberos/www/
Re:More info: (Score:2)
Untrue. (Score:2)
This buffer overflow bug is no different than those found in ssh previously...
so saying that 'You shouldn't be running telnet' is bullshit.
You shouldn't be USING telnet for anything you don't want sniffed is more accurate. Running it is only a problem in that it's yet one more available service.
Re:More info: (Score:5, Informative)
Re:More info: (Score:2)
Either Ingevaldson needs to check his facts, or I'm going blind in my advanced age, because the patch ain't there.
That takes you to the fully supported patches.
Let me guess... (Score:5, Funny)
Re:Let me guess... (moderators, read this) (Score:2, Informative)
Thus, the above comment is on topic, just over someone's head.
This IS, but, but ... (Score:4, Informative)
Since Telnet and Rlogin are insecure by design, they should only be allowed to be used in environments where you implicitly trust all parties. You should never deploy them where bad guys can get ahold of them - in those cases you should use (open)SSH.
Re:This IS, but, but ... (Score:2, Informative)
SSH helps, but isn't a complete solution to command-line vulnerabilities.
Re:This IS, but, but ... (Score:2)
Worse (Score:2)
If I only telnet over networking infrastructure I trust (e.g., there are secured switches on both ends, I trust that my ISP hasn't been hacked, etc.), then I am safe. All users must authenticate with passwords to gain access. With these holes, anyone can remotely log in as root. Yeah, telnet/rlogin/rsh might not be as secure as ssh, but they're no where near the category of vulnerability that this hole exposes.
The FBI is disappointed. . . (Score:5, Funny)
Re:The FBI is disappointed. . . (Score:4, Funny)
Re:The FBI is disappointed. . . (Score:3, Funny)
Re:The FBI is disappointed. . . (Score:2)
That's why the fundamental unit of computer logic is called the 'algorithm'.
'Another Gaping security hole goes unpatched?' (Score:3, Funny)
'Another gaping security hole goes unpatched by Microsoft... Uh, I mean, er, Sun' ?
Re:'Another Gaping security hole goes unpatched?' (Score:3, Informative)
Re:'Another Gaping security hole goes unpatched?' (Score:2, Insightful)
You will also see the comment: "An exploit exists and may be circulating.". This means that CERT and Sun have sat on this vulnerability for well over a month without telling anyone about the problem, despite an exploit being in use.
The story 2 days ago about Microsoft security was about a problem Microsoft had known about for 4 weeks (reported to them on Nov 19th).
Finally, the patch is available for IBM's AIX 4.3.3 and 5.2, but not as far as I can tell for Solaris 8.
However much you blindly hate Microsoft, they are not as bad as Sun in this particular situation.
Re:'Another Gaping security hole goes unpatched?' (Score:2)
Buffer overflows are inexcusable in 2001 (Score:5, Informative)
There are at least 3 sure-fire solutions for eliminating all stack-overwriting buffer overflows in security-critical programs:
None of these solutions (except maybe #1) are easy, but none of them are beyond the state of the art, either. Given this, I find it inexcusable that these buffer overflows keep popping up.
IMHO the rules are simple:
Solaris Sparc kernel-level stack protection. (Score:5, Informative)
With this in place, 'stack overflow' exploits don't execute.
RISC CPU feature. (OT) (Score:2, Informative)
Of course making the stack executable is not a miracle cure. You can still execute arbitrary code through another trampoline (like jumping into libc, rewriting/patching functions through trojaned libraries ($LD_LIBRARY_PATH and $LD_PRELOAD for example) or other tricks).
Sorry if this is a little offtopic, but stack smashes aren't the only way to skin a cat.
Re:RISC CPU feature. (OT) (Score:2)
That's not enough... (Score:3, Interesting)
Re:Solaris Sparc kernel-level stack protection. (Score:4, Insightful)
Also this does nothing to prevent heap overflows, which are often just as bad. If you'll remember the recent TSig bug in BIND 8 it exploited an off-by-one heap overflow which would in no way be stopped by this non-exec stack flag. The best prevention i've seen are using so-called "canary" values in between static buffers and saved return addresses, i.e. www.immunix.org
Re:Buffer overflows are inexcusable in 2001 (Score:2)
While one might argue that an intrepreted language like Java could still have problems and might still be succeptable to buffer overflows due to buggy intrepreters, the fact of the matter is that it is much less likely that a server written in Java will ever lead to a root compromise. I counter that those arguments promote the fallacy that since perfect security is impossible, one should be willing to accept the current completely insecure status quo.
I find it odd that many people take it as a personal insult when you suggest that various servers be coded in a language that makes it much harder to make a fatal mistake. It's pretty obvious that C's a security exposure and it's pretty obvious that C programmers will continue to make the kind of fatal mistakes that cause root exploits. Must we continue to take chances with our systems out of a misplaced loyalty to an aging language?
Re:Buffer overflows are inexcusable in 2001 (Score:2)
The RISKS of replacing existing code wholesale with new code that conforms to your idea of good practice are obvious.
Re:Buffer overflows are inexcusable in 2001 (Score:2)
1) NEVER use
char *gets(char *s);
in a program. Use
char *fgets(char *s, int n, FILE *stream);
2) Use one of the kernel patches that renders the
stack non-executable. Then, even if the bad
guys manage to overflow a buffer, they can't
do anything with it.
3) Write your own low-level character-by-character
i/o handlers that stop accepting input before
the buffer overflows (that's the easy way), or
reallocates the buffer to be larger (that's the
more user-friendly way.
Numbers 1 and 2 aren't difficult at all, number 3 can be VERY tedious, but it isn't difficult.
Re:Buffer overflows are inexcusable in 2001 (Score:2)
See: http://www.linux.com/howto/Secure-Programs-HOWTO/l ibrary-c.html [linux.com]
Re:Buffer overflows are inexcusable in 2001 (Score:2)
You are also forgetting that there are other ways to skin that cat. Rewriting functions, returning into libc or rewriting GOT entries are another way to wreak havoc.
There's only one thing that really works: Code Reviews. Heck, programmers are human, they can slip up and make mistakes, even if they are the most careful coders in the world (they are still human). More eyeballs catch more bugs. And the next random person can spot a problem in five minutes that you are trying for days to prevent.
Bugs happen. Deal with it. The advantage that we open source people have is that our code is open for peer review to a LOT of people, so these problems can be patched almost immediately.
Re:Buffer overflows are inexcusable in 2001 (Score:2, Informative)
I must be missing something (Score:2, Redundant)
News to me.
Another argument for open source (Score:5, Interesting)
But I am not an "average administrator." Months ago, I faxed Sun a really long contract that gave me the right to download their source distribution. This was a major PITA but I needed to modify some other parts of the OS at the time, so I had no choice.
I simply cannot believe that Sun is taking over two months to patch this very simple problem. It's an unchecked buffer, for God's sake. Most C coders can fix a problem like this in their sleep.
And that is why I believe that open source has a future and Sun does not. Regardless of what your stance is on the "many eyes makes all problems shallow" doctrine, it is beyond debate that fixing this sort of bug in Linux is extremely easy for the average C programmer. Unfortunately, that programmer may not have signed Sun's NDAs and sold their soul, and they would not have the source access that it takes to protect their machines.
I really wish I could post my patch here, but that is a violation of my NDA. Sun's absolutist stance on intellectual property may sell them a lot of copies of Solaris, but it leaves us administrators exposed and looking stupid. My group will be moving to Linux as soon as all of our applications are available for it, and we will be giving Sun the boot. The nicer machines and OS just aren't worth the risk of getting rooted.
Bill
Re:Another argument for open source (Score:2)
This hole proves that open source works, and that closed source forces you to go through a slow vendor.
Too bad that people will say "*nix is just as insecure as Windows!".
Re:Another argument for open source (Score:2)
-tim
Re:Are you kidding? (Score:2)
Re:Another argument for open source (Score:2)
Re:Another argument for open source (Score:2)
The smartass troll who was bragging about his 3733t coding skills would be in the same mess.
Actually, he'd probaly be in a worse mess if he introduced a bug on all of his organizations Sun servers that Sun wouldn't support.
Re:Another argument for open source (Score:2)
http://www.sun.com/software/solaris/source
Re:Another argument for open source (Score:3, Funny)
... which is good, since that's apparently where they're coding, too.
/bin/login - ssh (Score:5, Informative)
For details, see the 'UseLogin' option in your sshd config file.
DShield.org... fight back [dshield.org]
Re:/bin/login - ssh (Score:2)
man sshd
UseLogin defaults to "no" -- so unless you have
UseLogin yes
in sshd_config, then you don't have a problem.
It's hard to exploit buffer overflows in Solaris.. (Score:4, Informative)
The inability to execute is enabled by default in Solaris 8. Logging is not. However, you can explicity enable both by entering:
set noexec_user_stack=1
set noexec_user_stack_log=1
and rebooting. Not a huge deal. For FreeBSD, read the 'sysctl' man page.
Besides, if you're running telnet, you're just asking to get hax0red...
Re:It's hard to exploit buffer overflows in Solari (Score:5, Informative)
Re:It's hard to exploit buffer overflows in Solari (Score:3, Insightful)
And a second followup that the whole thing is moot since that "fix" has been hacked [decepticons.org].
Re:It's hard to exploit buffer overflows in Solari (Score:2)
In addition, a non-executable stack doesn't prevent all exploits. In many cases, specially crafted exploits (using return-into-libc techniques etc.) are still possible.
yay for CERT (Score:2, Informative)
It does make me wonder why the people at CERT don't ever pretend to be skript kiddies. I just found this little tid-bit on a well known site which serves a lot of exploits.
Description: A "feature" of most telnetd programs is that they will pass environmental variables (like TERM, DISPLAY, etc) for you. Unfortunately this can be a problem if someone passes LD_PRELOAD and causes /bin/login to load trojan libraries!
Author: Well known, squidge (squidge@onyx.infonexus.com) wrote this, but I doubt you can reach him. Isn't he in jail now?
Compromise: root REMOTELY!
Vulnerable Systems: Older Linux boxes, I think SunOS systems, probably others.
Date: January 1996 maybe? Quite old but lives forever like phf.
IBM has an efix posted (Score:5, Informative)
The tsm/login/getty program runs setuid root under AIX, this may be an increased vulnerability. Patch, patch, patch!
- The Mad Duke
Re:IBM has an efix posted (Score:2)
Not mentioning unsupported, vulnerable versions in security advisories is probably not a good idea.
Re:IBM has an efix posted (Score:2)
a version beyond what you're running almost
never works. Program hits a major library
incompatibility, falls down, goes boom. And, as
mentioned elsewhere, an IBM patch for 4.2 is
very unlikely; they stopped supporting 4.2 a
long time ago.
Chris Mattern
Oddly Tame vs. Zealously MS-Hating (Score:3, Insightful)
He was able to expand into about 8 paragraphs with "Another Gaping Microsoft Security Hole Goes Unpatched."
When it is *nix, its "developer notice", and when it is win* it is "microsoft wants to rape us of our rights"?
I'm probably missing something, like 'duh, you shouldn't use telnet'. Then again, I actually believe the vapid notion that you'll be okay if you download from trusted sources, so I'm not worried about IE. I will save people the time and tell myself that there is no such thing as a trusted source
Re:Oddly Tame vs. Zealously MS-Hating (Score:2)
Yeah, a more condemming story title, as far as Sun is concerned, would be to accuse them of being as sloppy and arrogant as MS.
OTOH, if the markets and positions of Sun and MS were reversed I would expect Bill Gates and Scott McNealy to be able to instantaneously play the reverse roles without so ever as missing a single beat.
Re:Oddly Tame vs. Zealously MS-Hating (Score:3, Insightful)
While I think you're correct that Slashdot is generally more tolerant of Unix problems than MS problems, there is some legitimacy. We see critical security problems fairly rarely from the major Unix players and we see them more often from MS. Also, the Unix players tend to get patches out a bit more quickly. Sun and IBM have temp. patches out which probably means they have a bunch of guys using the patch and banging on it mercilessly to see if they can break it. When they determine it's not breaking, they'll call the temp patch the patch.
Entirely fair? No. Somewhat fair? Probably.
Re:Oddly Tame vs. Zealously MS-Hating (Score:2)
I'm guessing you're reacting to "we see". By 'We' I meant the public at large. Other than that, I think it was pretty clear I was talking about my opinions.
When can we banish Telnet forever? (Score:3, Insightful)
I wish Unix/Linux would remove Telnet forever. Not just removed from default install, but removed from from the packages totally. If these things weren't installed by default, and people were forced to use ssh, we could come a long ways.
People are too lazy to use ssh instead of telnet. So, force them to use ssh. Even behind firewalls.
Old apps use telnet? Tough, if the company values security they'll convert. If not, they get the same sympathy that people who open unknown attachments get, none
Re:When can we banish Telnet forever? (Score:4, Insightful)
Does not affect things like
telnet locis.loc.gov
Re:When can we banish Telnet forever? (Score:2)
Re:When can we banish Telnet forever? (Score:2)
Some of us use telnet for other applications. Like, BBSes.
I run telnetd, but it doesn't give a shell. :)
Re:When can we banish Telnet forever? (Score:2)
Just like I use the telnet client, but never to log on to remote systems...
Re:When can we banish Telnet forever? (Score:3, Informative)
--Ben
Re:When can we banish Telnet forever? (Score:2, Informative)
From the appgate.org page:
MindTerm is available free of charge for personal and non-commercial use. MindTerm may be licensed for commercial use for a fee
Re:When can we banish Telnet forever? (Score:2)
However, have a look at my journal [slashdot.org] for some other similar packages, one of which is a fork of the original GPL'd Mindterm.
Re:When can we banish Telnet forever? (Score:2)
Rich
Re:When can we banish Telnet forever? (Score:2)
The fork appears to be under active development, so probably
Re:When can we banish Telnet forever? (Score:3, Informative)
There was much joy when they all decided to make this change over the last 18 months or so (not sure when OpenBSD did it).
I'd love to see Solaris 9 ship with OpenSSH, hopefully no pesky lawyers saying "But this country and their crypto!" will stop that from happening.
Every new machine deployed here not only has no cleartext protocols enabled, but only has ssh2. Sure, the end Oracle developers will scream cause they love their telnet app. But this is silly.
Since michael won't do it (Score:4, Insightful)
Unbelievable! Anybody notice how clear, concise and FUD free this post by michael was? It seems only yesterday that we had a full page rant by michael himself that deplored Microsoft for not revealing a GAPING secutiry hole until recently.
Microsoft has known about it since November 19; they refuse to provide any information about when a patch might be made available, if ever.
Now lets see... "ISS discovered the loophole in October" Hmm.... that's a whole month longer than Mircosoft held out...
Netscape and most other browsers have no problem with this.
This is a *serious* security hole, and it's all sun's fault. Macintosh, Windows and most other operating systems don't have a problem with this.
If you routinely browse with Internet Explorer or read mail with Outlook, keep in mind that any web page you visit or any email you open can take over your computer, steal sensitive files, destroy your machine, anything.
If you routinely use Solaris or AIX to login and do work, keep in mind that anybody can take over your computer, steal sensitive files, destroy your machine, anything.
Happy browsing!
Congrats! You've got Gaping Security Hole!
Hmm.. maybe we can do with a little more balanced reporting here on bash-Microdot.org
Sun et al aren't demanding silence, M$ is (Score:5, Flamebait)
Microsoft is.
What is more, Microsoft is trying to bribe [theregister.co.uk] security professionals and services into silence, requiring among other things that Microsoft be informed of problems before the securty firm's own paying customers are.
In short, Sun & Co. have done nothing improper or worthy of customer or professional outrage.
Microsoft has.
Biased or not, Slashdot and its readership are more than a little correct in bashing Microsoft's security policies, and in reporting security lapses of other firms as well, even though these other firms have behaved in a much more ethical and open manner.
Had it been otherwise, you doubtless would have been bashing slashdot and its readership for not reporting the vulnerabilities.
In short, Mr. Microsoft Flunky, get over yourself. If slashdot's pro-Free Software and pro-GNU/Linux bias upsets you so much, then go hang out in a pro-Microsoft forum where you can suck up as much Redmond marketing drivel as your heart desires, while leaving the rest of us in peace.
A different approach would help (Score:2)
But why not put it somewhere other than the front page article? Why not make the front page article concise, and let the rants come from others in the comments? Everyone can take their secret glee at the pains of MS, but when it's pointed out on the front page, it makes you sound insecure about your operating system's virtues. It's mudslinging.
After all, Linux isn't better because MS sucks, it's better because it's better.
Re:Sun et al aren't demanding silence, M$ is (Score:2)
Of course it is, and as many have said on other occasions Sun is a Micrisoft wannabe in many respects. No company is ever truly above anything, as its policies can change whenever management or corporate strategies change.
However, in the context of security, Sun (and IBM, who, lest we forget, was also an "evil empire" at one time) are generally both open and honest, and quite willing to be subjected to the open peer review process that is CERT and Bugtraq. Microsoft is not, and has used numerous unethical methods to silence technical review and criticism of the notoriously weak and vulnerable security of their operating systems, to the detriment of their customers, many industries (including the computer/software industry), and ultimately even themselves.
So, in the context of security Sun and IBM are, for the moment, not engaging in the unethical and harmful practice of silencing critics and whitewashing exploitable (and often laughable) security flaws in the way Microsoft is, nor are they likely to begin doing so anytime soon.
This does make them fundamentally different, and better, than Microsoft in the context of this discussion, and they will remain so until either Microsoft cleans up its act, or they themselves change in a negative manner down the road (possible but unlikely). In short, the criticisms (what Microsoft apologists call "bashing," despite their factual and verifiable basis) targeted at Microsoft WRT security don't even apply to Sun or IBM.
Indeed, the CERT advisory and resulting slashdot article are a very part of that open reporting process Micrisoft is trying to undermine and supressed. By reporting it, and owning up to it publicly, IBM and Sun are doing precisely the opposite of what Microsoft is doing, making the claim that they should be criticized in the same manner both ludicrious and indefensible.
Re:Since michael won't do it (Score:2)
Re:Since michael won't do it (Score:2)
Re:Since michael won't do it (Score:2)
You don't have a f*cking clue.
This is from CERT [cert.org]:
That does not at all translate into "anybody can take over your computer, steal sensitive files, destroy your machine, anything"
Go back to Redmond, M$ whore.
t_t_b
Re:Since michael won't do it (Score:2)
Re:Since michael won't do it (Score:2)
Last I checked, AIX is only sold by IBM. So there is a problem in the code of both of the two major "big iron" players OS's.
Another article from InfoWorld (Score:2, Informative)
Already patched on FreeBSD... (Score:4, Informative)
Of course, correct me when I'm wrong or off base on this here... I don't know about any Solaris patches or AIX fixes, since I don't generally use those platforms, but I bet they are either underway. See your local sunsolve outlet or your IBM patch repository.
Re:Already patched on FreeBSD... (Score:2)
A bug is a bug, and bugs need to be fixed. Period. You never now when this could end up in your face later. It's undesireable operation.
Best headline of the year... (Score:2)
Telnet? (Score:3, Informative)
This vulnerability can be remotely exploited to gain privileges of the invoker of login. In the case of a program such as telnetd, rlogind, or other suid root programs, root access is gained.
If the ssh server is configured the way a telnet server is (I'm guessing it is, although I could well be wrong since I've never run one) ssh would give you an identical vulnerability.
I think I could have resisted throwing in a jab about people who know three or four factoids about security deciding that this story must involve one of those three or four things if Michael himself hadn't jumped on the anti-telnet bandwagon. Of course, I'm also wondering why the FUD-packed rant he directed at Microsoft a couple of days ago wasn't thought be newsworthy here. This is a much more serious hole and much easier to exploit against an alert target.
The RTM worm patch that just renamed the hole (Score:5, Interesting)
The day after Robert T Morris unleashed his worm on the internet on November 2, 1988, Keith Baaaaaaaahstic distributed instructions from the "Experimental Computing Facility, Center for Disease Control" on how to patch the sendmail binary by replacing the "D" in the "DEBUG" command with a null, thus disabling the worm.
Unfortunately the effect was actually to change the name of the "DEBUG" command to the null string! So telnetting to port 25 and simply hitting CR to send a blank line would actually put sendmail into debug mode!
Of course Sun Microsystems immediately installed this bogus patch, which I accidentally discovered, and reported to Sun. More than a year later I discussed it on the security mailing list... I hope that gave them enough time to fix the bug in the source code and recompile.
-Don
====
Date: Sun, 11 Feb 90 01:02:15 -0500
From: don@cs.umd.edu (Don Hopkins)
Subject: Computer Abuse / Product Liability / Criminal Statutes / ECPA
To: blackcat@neuro.usc.edu
Cc: security@pyrite.rutgers.edu
>> [...] updating the old X10 server for the ibm/pc to work with X11R4, etc.
Yeah, right. Might as well have them fill in the Grand Canyon using a pair of tweezers. How about having Robert Morris implement the Gnu kernel? I'm sure he's bright enough to come up with a very secure system (much to rms's disgust). So secure that only he would know the loopholes.
Morris would be dead meat if his daddy didn't work for the NSA.
One of the first patches for sendmail that was sent around to keep the Internet worm out was to edit the sendmail binary changing the 'D' in "DEBUG" to '\0', so the DEBUG command wouldn't work any more. Well that stopped the worm, but it made the null string invoke the debug command. I noticed this a couple days after the worm, when I telneted to sun.com port 25, to EXPN a user name of somebody on a mailing list I run, hit CR a couple of times to make sure sendmail was listening, and did the EXPN. It spit back huge ammounts of debugging information! Of course I promptly notified the appropriate people at Sun so they could put the right fix in. Sheez.
-Don
====
Date: 3 Nov 88 10:54:57 GMT
From: bostic@OKEEFFE.BERKELEY.EDU (Keith Bostic)
Subject: Fixes for the virus
Approved: ucb-fixes@okeeffe.berkeley.edu
Subject: Fixes for the virus
Index: usr.lib/sendmail/src/srvrsmtp.c 4BSD
There's a virus running around; the salient facts. A bug in sendmail has been used to introduce a virus into a lot of Internet UNIX systems. It has not been observed to damage the host system, however, it's incredibly virulent, attempting to introduce itself to every system it can find. It appears to use rsh, broken passwords, and sendmail to introduce itself into the target systems. It affects only VAXen and Suns, as far as we know.
There are three changes that we believe will immunize your system. They are attached.
Thanks to the Experimental Computing Facility, Center for Disease Control for their assistance. (It's pretty late, and they certainly deserved some thanks, somewhere!)
Fix:
[...]
If you don't have source, apply the following patch to your sendmail binary. SAVE A COPY OF IT FIRST, IN CASE YOU MESS UP! This is mildly tricky -- note, some versions of strings(1), which we're going to use to find the offset of the string "debug" in the binary print out the offsets in octal, not decimal. Run the following shell line to decide how your version of strings(1) works:
Note, make sure the eight control 'G's are preserved in this line. If this command results in something like:
0000008 abcd
your strings(1) command prints out locations in decimal, else it's octal.
The patch script for sendmail. NOTE, YOUR OFFSETS MAY VARY!! This script assumes that your strings(1) command prints out the offsets in decimal.
Script started on Thu Nov 3 02:08:14 1988 /usr/lib/sendmail | egrep debug /usr/lib/sendmail
okeeffe:tmp {2} strings -o -a
0096972 debug
okeeffe:tmp {3} adb -w
?m 0 0xffffffff 0
0t10$d
radix=10 base ten
96972?s
96972: debug
96972?w 0
96972: 25701 = 0
okeeffe:tmp {4} ^D
script done on Thu Nov 3 02:09:31 1988
If your strings(1) command prints out the offsets in octal, change the line "0t10$d" to "0t8$d".
After you've fixed sendmail, move both /bin/cc and /bin/ld to
something else. (The virus uses the cc and the ld commands
to rebuild itself to run on your system.)
Finally, kill any processes on your system that don't belong there. Suspicious ones have "(sh)" or "xNNNNNNN" where the N's are random digits, as the command name on the ps(1) output line.
One more thing, if you find files in /tmp or /usr/tmp that
have names like "xNNNNNN,l1.c", or "xNNNNNN,sun3.o", or
"xNNNNNNN,vax.o" where the N's are random digits, you've been
infected.
====
Keith sent out the following addendum to the patch, which prevents the null string bug, but Sun obviously didn't pay attention to it.
====
Date: 3 Nov 88 16:12:19 GMT
From: bostic@OKEEFFE.BERKELEY.EDU (Keith Bostic)
Subject: Fixes for the virus, #2
Approved: ucb-fixes@okeeffe.berkeley.edu
Original-newsgroup: comp.bugs.4bsd.ucb-fixes
Index: usr.lib/sendmail/src/srvrsmtp.c 4BSD
Description:
This is a followup message, to clear up two points. First off, a better value to use to PATCH your sendmail executable is 0xff; if you're using the patch script, change:
96972?w 0
to:
96972?w 65535
Secondly, note, if, when you run strings(1) on your sendmail executable, greping for ``debug'', you don't get any output, don't worry about the problem, your system is already (we think) safe.
Re:See, Unix has problems too now. (Score:3, Redundant)
Re:See, Unix has problems too now. (Score:2, Insightful)
I'd say there's a subtle, but important difference between insecure by design and insecure due to a programmer's mistake.
Re:See, Unix has problems too now. (Score:5, Insightful)
Isn't this more like proof that *nix sucks as much as MS?
Seirously tho, of course, the more mature techies will concede that both OS families have had their fair share of minor and major problems. I've never held either OS family up to such lofty 'uncrackable' standards, but the one thing I do have to say is that, considering MS's attitude towards its track record (ie, 'what me worry?'), it's still more frusterating when the exploit is an MS exploit rather than a Unix one.
Plus, much of the insecurity in Windows is due to the scripting and VB features that MS deemed so critical to the success of their software. This problem is an expoit, where as early email worms didn't even have to 'exploit' the box. MS's own feature set and technology caused billions of dollars in productivity loss in order to save the user from a few clicks, or incorperate 'gee wiz' functionality in their mail/www clients. That, to me, is far more damning than any accidental root exploit will ever be. Mistakes happen. Sacrificing security for brochure-ware is inexcusable and irresponsible.
Proof positive that everyone makes crap! (Score:2)
I wouldn't call this a level playing field either. Why not? Because of differences in the vendors' attitudes to the discovery of these problems.
Microsoft wants to sweep these problems under the rug; keep them as secret as possible and even criminalize those who discover them and make them known. They have a poor track record when it comes to timely releases for patches, and alerting their user base.
Do you, for instance, remember this [slashdot.org] slashdot story?
What about this [securityfocus.com]?
Re:See, Unix has problems too now. (Score:5, Interesting)
Re:See, Unix has problems too now. (Score:4, Insightful)
I remember one hillarious Sun security hole, around SunOS 3.0 or so, that let you get a root shell by walking up to the console and holding down one of they keys until it autorepeated enough to fill up a buffer somewhere. Then you just hit the return key and it logged you in with a root shell! Chris Torek, Mark Weiser, Steve Miller and I witnessed this behavior on Suns at the U of Maryland some time during the 80's.
My favorite boneheaded idiotic Unix security hole was the /etc/passwd "::0:0:::" bug.
It would conveniently open up a giant security hole whenever somebody accidentally left a blank line in /etc/passwd.
The next time anybody changed their password, the setuid root "passwd" program would read the old /etc/passwd file line by line using scanf("%s:%s:%d:%d:%s:%s:%s", ...), without checking for errors, then write out the new password file using printf("%s:%s:%d:%d:%s:%s:%s", ...). The blank line would read in as zero length strings and zeros, and would be written back out as "::0:0:::".
And of course what does "::0:0:::" mean in /etc/passwd? It defines a root-privileged user whose name is the null string! How convenient!
Then all anyone has to do to get root was to type:
% su ""
On the Pyramid (which ran a bizarre hybrid combination of BSD and System V), all you had to do to exploit this hole was to hit the return key at the "login:" prompt, and it would display the message of the day followed by the a root shell prompt "#".
People complain that Unix is difficult to use, and requires a lot of typing. But getting a root shell was certainly quite easy, requiring even fewer keystrokes on the Pyramid than the Sun.
Has Windows NT *EVER* been that easy and convenient to break into? I don't think so.
-Don
Re:See, Unix has problems too now. (Score:2)
Re:See, Unix has problems too now. (Score:2)
Re:See, Unix has problems too now. (Score:2)
Re:I AM **SICK** OF STUPID BUFFER OVERFLOW HOLES!! (Score:4, Interesting)
You can set $LD_LIBRARY_PATH and $LD_PRELOAD.
How is this relevant?
Say, /bin/login uses a few common library calls, like say strcpy(3), right? Or better yet, getpasswd(3), or crypt(3).
Now, If I create a library with replacement versions of those calls that say, spawn a root shell, and can preload it before /bin/login loads the calls from libc, I'm set. Hey, instant root shell, without writing even a single line of buffer overflow code. How you get your trojan lib on the victim box is an excersize for the reader :-)
So, what if they _did_ use strncpy(3)? Well, I create my replacement function for that as well, big deal. What calls you use doesn't really matter...
I agree in that buffer overflows are inexcusable, but holes like this are to be frowned upon as well...
Re:I AM **SICK** OF STUPID BUFFER OVERFLOW HOLES!! (Score:2)
The libraries can be stored in /tmp, your ftp incoming dir, /var/tmp, or even (if the user has a shell account) in the user's homedir.
All that is needed is a "setenv LD_PRELOAD /dir/where/lib/is/foolib.so" or something similar and the damage is done. The library is dynamically linked into the root-owned program that's running with root privs and the system is "0wned", like they say (I like to say compromised, but that's just me).
The fix is of course to not let ssh set these kind of envvars, which is what they fixed in SSH, which prevented exploitation on *BSD which didn't have the buffer overflow.
Yes this was a bug in SSH, not in login :-)
Re:I AM **SICK** OF STUPID BUFFER OVERFLOW HOLES!! (Score:2, Informative)
SECURITY
To prevent malicious dependency substitution or symbol interposition, some restrictions may apply to the evalua- tion of the dependencies of secure processes. The runtime linker categorizes a process as secure if the user is not a super-user, and either the real user and effective user identifiers are not equal, or the real group and effective group identifiers are not equal. See getuid(2), geteuid(2), getgid(2), and getegid(2).
In short, you can't just make "printf" equal "exec /sbin/sh" and run your favorite setuid root program with LD_PRELOAD set.
Re:I AM **SICK** OF STUPID BUFFER OVERFLOW HOLES!! (Score:2)
The suid bit matters, btw. If a non-root runs a suid program, then yes, some envvars are ignored/nullified. But if root runs it (of if it is being spawned by a root owned process), then that kite doesn not fly anymore and preloading just happens.
The daemon that runs as root must take care of these things, or just don't run that thing as root. It's btw perfectly possible to run sshd as a non-root, only then you can not bind the ssh port and I imagine you would have some problems running /bin/login (which is a bad idea anyway)
Re:I AM **SICK** OF STUPID BUFFER OVERFLOW HOLES!! (Score:2)
Hmm, actually, thinking about it, I'd probably better just research this.
Rich
Re:I AM **SICK** OF STUPID BUFFER OVERFLOW HOLES!! (Score:3, Interesting)
It has its prositive uses and can be a timesaver if you need to test stuff out, but it's also a big security hazard if you're not careful...