Remote Code Execution Hole Found In Snort 95
Palljon1123 writes "A stack-based buffer overflow in the Snort intrusion detection system could leave government and enterprise installations vulnerable to remote unauthenticated code execution attacks. The flaw, found by researchers at IBM's ISS X-Force, affects the Snort DCE/RPC preprocessor and could be used to execute code with the same privileges (usually root or SYSTEM) as the Snort binary. No user action is required." Sourcefire has an update to fix the vulnerability in versions 2.6.1, 2.6.1.1, and 2.6.1.2; Heise Security spells out the workaround for the 2.7.0 beta version.
Re:Year of the .. (Score:5, Funny)
Boaring!
Re: (Score:1, Funny)
SANS (Score:4, Informative)
The very definition of irony (Score:3, Insightful)
Re: (Score:1, Insightful)
Re: (Score:1)
Re: (Score:2)
Re: (Score:1)
Simmons: No, that's not ironic. Ironic would be if we had to work together to hurt each other.
Donut: No. Ironic would be instead of that guy kidnapping Lopez, Lopez kidnapped him.
Sarge: I think it would be ironic if our guns didn't shoot bullets, but instead squirted a healing salve that cured all wounds.
Caboose: I think it would be ironic if everything was made of iron.
TWO HOURS LATER
Church: Okay. [slowly] We're all agreed that while the current situat
Re: (Score:1)
Well, "the most secure Windows ever" comes close.
But what gets to me is the fact that people are attacking security applications.... successfully.
Re: (Score:1)
Re:The very definition of irony (Score:4, Informative)
Ironic? Hardly. (Score:2)
Re: (Score:2)
Remote, what about stealth installations (Score:4, Insightful)
Re: (Score:1, Insightful)
Shellcode for a backdoor is the classic example but any small amount of bootstrap code could execute.
On an unrelated note: This exploit shows a weakness in the default Linux/UNIX security model: SNORT basically has to run as root in order to listen to raw traffic (and that is probably a good thing too). However when it does so, the rest of the program a
Re: (Score:3, Insightful)
From snort 2.6:
That could be very helpful if the group is no
Re: (Score:2, Insightful)
Re: (Score:1, Insightful)
A chroot jail is good, but unless I'm mistaken it only cuts off access to the global file namespace. The rooted process can still make system and network calls that could do quite a bit for an attacker, although taking over the whole machine would still require the ability to effectively escape from the chroot jail.
Re: (Score:2)
Oh such fun to be had =-)
Re: (Score:2)
Re: (Score:1)
Re: (Score:3, Insightful)
Re:Remote, what about stealth installations (Score:4, Informative)
There are a few problems with passive taps...
1. They *don't* work with gigabit ethernet. If I remember the spec for gigabit ethernet correctly, this has something to do with the fact all of the wire pairs are used for XMIT and RECV.
2. The passive tap in the link you provided isn't exactly good for your network. This tap will still draw current as well as introduce some interference. In the worst case, you can blow a NIC with one of these. Of course, the easiest way around these problems is to use a hub (do not use a network switch as that won't work... you need a HUB).
3. You will need to run 2 NICs (1 for XMIT, 1 for RECV) in order to examine full duplex traffic. This may be an issue if you are trying to run snort on an embedded device.
If I had the option, I would rather run a spare computer as a Linux (or BSD based for that matter) firewall box and use port mirroring to mirror ethernet traffic over IEEE1394 (firewire) to another box running snort. The only downside is that ethernet over firewire is at best a 400 megabit connection.
Re: (Score:1, Informative)
2. WTF? A switch will work just fine unless it's a POS.
3. Still don't know what you're talking about. Is this just a snort thing? Why would you need to transmit from a passive sniffer? It's freakin' passive.
Re: (Score:1)
Re: (Score:2)
Re: (Score:2)
The best explination I can give comes from the Wikipedia entry for gigabit ethernet [wikipedia.org]. I have put in bold the exact technical reason why a passive ethernet tap cannot work with gigabit ethernet.
Re: (Score:2)
My cheap "web-managed" switch allows me to specify a monitor port where all traffic from (an)other port(s) gets duplicated to. This port is not a member of any VLAN and has non-tagged ingress traffic blocked. So effectively it's a send-only tap from the switch's POV.
Any halfway decent switch can do that.
Re: (Score:1)
Been bitten by this one a few times. It's a real b!tch to troubleshoot, depending on how close to 100 meters you are. It works - doesn't work - w
Re: (Score:2)
Somehow, this must be... (Score:3, Funny)
Silly Hackers (Score:5, Funny)
Re:Silly Hackers (Score:5, Insightful)
Every company large enough to need a Security team (you know, the companies with the most money) is going to be running Linux. Nearly all the best infosec tools are Linux apps. I know you are likely going for Colbert-esque humor here, but the fact is that companies that run Snort on Linux probably have much MORE money to steal, on average, than companies that do not.
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Funny)
Re: (Score:2)
My intended audience was not the poster specifically, but the slashdot audience as a whole.
Based on the fact that you missed the point entirely, and your post consisted of nothing but angry insults, I'm going to guess that you bring amiable per
Why this vulnerability? (Score:4, Insightful)
Re: (Score:3, Insightful)
So (Score:4, Funny)
Would be somewhat helpful saying "Hey look somebody is rooting me!"
Re: (Score:1)
What I'd like to know is... (Score:1)
Disable the dce/rpc preprocessor (Score:3, Informative)
There are some instances where this should be running such as internal traffic monitoring, but I don't see how this can hit people from the internet with fragmented RPC traffic unless they're allowing it at the firewall.
Also, don't run any network service as root. FC6 install of snort does run as root by default, kinda lame.
-u username -g groupname arguments in the init script when starting the daemon will make it run as username:groupname credentials. nobody:nogroup maybe. Consider also chroot jail.
Old tips http://isc.sans.org/diary.html?date=2005-10-18 [sans.org]
Darn... (Score:2)
Re: (Score:2)
Shouldn't be running as "root". (Score:2)
If an intrusion detection system has to run as root, it's part of the problem, not the solution.
Biggest single security problem with UNIX and Linux is that way too much stuff runs as "root". Too much trusted code.
Not that Windows is much better, although, in Vista, they're finally trying.
Re: (Score:2)
can anyone shed light on why we have wanted this in the first place
It was a Bill Joy thing in 4.2BSD. The idea was that UNIX systems could trust each other, but not their users. The old "rcp" protocol reflected this approach. The Berkeley guys were thinking of big multi-user time-sharing systems under central administration, not single user systems.
Early BSD team thinking was that it was good enough if BSD could talk to BSD. Interoperability with other TCP/IP systems had to be pounded into that cro
You're both wrong. (Score:2)
But I would hardly call this the "biggest security problem", especially considering the vast majority of stuff does NOT run as root, and even daemons which must be started as root drop privileges later on.
It seems equally likely you'd find some bitwise monstrosity to an actual mention of 1024/1023, but in any case, there is a good reason for this. Think NFS, or basically any other se
Re: (Score:2)
Those who don't understand Unix... (Score:2)
Ok, let's assume your admin is root, or is able to run commands as root (through sudo). Let's also assume we have setuid bits, as I've never run into a Unix that doesn't.
Right now, we have the very inflexible approach, where the first 1024 ports are considered "privileged", and only root may bind to them. We also have a bunch of users with daemons designed to bind to some of those ports.
There are actually several really easy ways for root to handle this. The first, a
Re: (Score:2)
I don't understand your argument. You admit that "root only" ports are inflexible. You admit stuff like xinetd are sub-optimal workarounds. You then propose that if xientd doesn't work for you to do our own ad hoc stuff that you say is tricky and doesn't work with existing programs. And if that doesn't work, you propose SELinux but say it "introduces a LOT more complexity".
How is my proposal reinventing Unix poorly? I'm saying
Re: (Score:2)
Yours could, but it's tricky -- and I think mine could, also. Network devices used to be implemented as files, and now they're not. I suppose there could be a compatibility layer, it just strikes me as somewhat fragile.
But go ahead and prove me wrong. Implement this in a nice, clean way.
Most programs already do this for me, anyway -- like I said about Postfix. Most daemons do have good reason to be started as root, also -- it lets them drop privileges. For instance, Op
Re: (Score:2)
Good luck with that :)
Re:You FAI:L it (goatse) (Score:1)
snort shouldn't be running as root (Score:2)
Snort has had a pretty poor track record for this (for that matter tcpdump has also had similar problems).
Completely unnecessary (Score:5, Informative)
(and no, the error isn't there, it's just the first thing I came across in the snort source)
Why are they even using C? Suprise, they make exploitable buffer overflow attacks! And they still have one verified, non-fixed issue detected by coverity, plus 33 "uninspected and pending" according to coverity's scan [coverity.com].
int CheckRule(char *str)
{
int len;
int got_paren = 0;
int got_semi = 0;
char *index;
len = strlen(str);
index = str + len - 1;
while((isspace((int)*index)))
{
if(index > str)
index--;
else
return 0;
}
if(*index == ')')
{
got_paren = 1;
index--;
}
while((isspace((int)*index)))
{
if(index > str)
index--;
else
return 0;
}
if(*index == ';')
Re: (Score:2)
To this:
And even if you would erradicate Buffer Overflow you are still
exposed to logical bugs, execution path subvertion, trust
bypass and many other security nasties.
I quote Babbage:
If you speak to him of a machine for peeling a potato, he will pronounce it impossible: if you peel a potato with it before his eyes, he will declare it useless, because it will not slice a pineapple.
Re: (Score:2)
Re: (Score:2)
Re: (Score:1)
The "pending and unverified" status is essential a useless metric because Coverity uses an automated scan which is inherently prone to false-positives. Even so, from their site it looks like it's results are comparable to Apache.
Re: (Score:2)
Now can we stop using C, please? (Score:2)
Can we stop now using C, please? pretty please?
how many more buffer overflows do we need to get persuaded that C does not cut it any more? working at 95% of the cases is not good enough in this day and age.
How many times does it have to be said? [slashdot.org]
Re: (Score:1, Insightful)
C is enough, much as I hate it (Score:2)
Personally, I wish we saw more "scripting" languages around, but those don't cut it either as soon as you start to care about performance. Getting there, but nowhere close to C... yet.
Re: (Score:2)
Anyway, even if C++ == bloat, you can still use stl's std::string, std::vector and std::map for most of the simple programming tasks. Sure, they're slow. They add like 1 meg of code bloat and stuff. But you don't get nasty errors from dealing with pointers and memory allocation stuff. And for a userland app that's perfectly reas
Re: (Score:2)
Re: (Score:2)
Most other languages have significant drawbacks in their respective implementations, or add too much bloat in implementation or understanding. It's hard to make a good case against C, though -- most things that are possible in other languages are possible in C, yet there are plenty of things that are possible in C which are not really possible in other languages. For example, I wouldn't consider writing a kernel in Java -- yet.
I don't use C, but I also don't think other projec
Re: (Score:2)
It could have been through bytecode. But no one programs in bytecode.
It is not. C does not define binary layout, for example, and therefore data structures may be used differently in different architectures. There are lots of other things that make C non-portable.
There are other languages that offer very little on top of C, w
Re: (Score:2)
There are plenty of portability libraries. In C, as in Perl, most of the porting has already been done for you.
Of those, I've looked at Erlang, and as far as I can tell, it's too slow and inflexible. And yes, I know it's used in mobile phones,
Re: (Score:2)
Ok, I'll talk about performance. Performance in this context is never, ever plural, unless you were talking about, say, dance performances.
But seriously, look at your Java VM. Look for all the benchmarks and justifications you like, but the fact is, I still have to wait on my machine in order to try Hello.java. It feels slow, and I can actually go find some benchmarks to prove it is slow.
Re: (Score:2)
You have to wait because you have to wait for the jvm to load.
Or the program was really poorly written.
Java isn't slow when the jvm is in memory. Imagine if you bench-marked helloworld.exe from the time windows started to boot until the program opened the wi
Re: (Score:2)
Hello, world? How, exactly, would I write that poorly?
At a second glance, however, you're right -- it's actually reasonably fast now. I distinctly remember having to wait quite awhile for just about any program -- and it was not disk thrashing, hard disk light was off.
Still, it will be awhile before you can convince me that Java is fast enough, and awhile more before you can convince me that the syntax is even tolerable. Yes, you can run other languages on the JVM
Re: (Score:2)
I like Java because it has a base object unlike c++ which is c with objects tacked on.
The support staff where I work calls back customers that request a support call so they don't have to wait on hold. I wrote the program that manages the support calls, RMAs, and issue tracking in Java using Postgresql as the back end. It has handled 300,000 support calls and I don't know how many RMAs over the years with no
Re: (Score:2)
Great! Now explain to me why this is a good thing.
Alright, I'll give you this one.
I'm still looking for a language that is powerful, flexible, bytecode-portable, and at least close to as fast as C. Java may have the last two -- maybe -- but it's sadly lacking in the first two.
Re: (Score:2)
Great! Now explain to me why this is a good thing."
Well I learned structured programing when I first started programing in the early 80s. I am a proud owner of Data Structures + Algorithms = Programs by Wirth. After banging my head on objects for a while I finally got it and found it to be a great way to program. It is extremely useful when dealing with threads. You may not like OOP but I find it very comfortable way
Re: (Score:2)
Erm... no, I know why OOP is a good thing. I don't know why Java OOP is any better than C++ "tacked on" OOP.
Explain to me why it is a good thing that the class "Object" exists? It seems to me that the only time you actually need to use it is when forceably typecasting stuff in a very un-OO-like manner.
Except C# and .NET make this ridiculously easy, and are still somewhat cr
Privilege separation? (Score:2)
But wait! (Score:1)