Fuzzing Toolkit For Web Server Testing 47
prostoalex writes "Dr. Dobb's Journal runs an article discussing the tools necessary for fuzzing (testing a system by generating random input in order to cause program failure or crash). Quoting: 'You are fuzzing a Web server's capability to handle malformed POST data and discover a potentially exploitable memory corruption condition when the 50th test case you sent that crashes the service. You restart the Web daemon and retransmit your last malicious payload, but nothing happens... The issue must rely on some combination of inputs. Perhaps an earlier packet put the Web server in a state that later allowed the 50th test to trigger the memory corruption. We can't tell without further analysis and we can't narrow the possibilities down without the capability of replaying the entire test set in a methodical fashion.'"
Re: (Score:1, Offtopic)
Chris Benoit from what little I know is a pro-wrestler that killed his wife & son
Re: (Score:1, Offtopic)
Re:Why does Slashdot refuse to cover (Score:4, Funny)
Paris Hilton has Boooobieeees!
And here are the pictures!
Slashdot. News For Nerds.
Affirmative.
-
Re: (Score:1)
Re: (Score:1)
OMG PONIES!
Re: (Score:1)
Bump Key? (Score:1)
Re:Bump Key? (Score:5, Informative)
But if you can spew garbage at a program and make it die during development, perhaps you can figure out what exactly made it die and fix it. You get the +1 Obvious award, not fuzz testing.
Re: (Score:1)
Re: (Score:1)
I'm no web dev, but it would appear that the primary failure point is in the parser itself (for processing POST data). A well tested robust parser under attack should simply respond, "fuzz you!".
i'm not a web dev either, but i'm guessing that part of the reason for this is to take a less-tested, less-robust parser (or whatever) and eventually make it into one which is better-tested and more-robust. i mean, we do this with most code (or at least ought to). so the devs can learn how to make their program say "fuzz you!" better :)
Re: (Score:2)
Re: (Score:3, Interesting)
You could also create a robust test suite that would try to break the program in an intelligent and repeatable way. Can you do far more random tests than well-thought out tests? Yes. However, random tests, (even a lot of them), don't guarantee that you have good code coverage.
Even better, you take time to make your parser better at error handling. It can take a lot longer but is probably worth it in the long run. It won't eliminate the need for testing, but thinking through all the things that can go
Re: (Score:1)
This should be -1 Obvious, but the sad fact is that many, many programs out there don't properly or sufficiently validate their input.
Even input from a "trusted" source, such as a DB "owned" by the program, should be checked.
There may be cases where
Re: (Score:1, Offtopic)
Re: (Score:2)
Use virtual machines and snapshots? (Score:1, Offtopic)
Re: (Score:3, Insightful)
I'm sure the article talks about this in spades. If only we were to read it.
Re:You had me... (Score:5, Interesting)
But not quite good enough. Nowhere near in fact.
At CanSecWest last year, HD Moore and a student took an hour to hack together a fuzzer that found over fifty flaws in Internet Explorer. http://www.securityfocus.com/news/11387 [securityfocus.com]
Think about that. Two person-hours work, that leads directly to the discovery of fifty flaws. That's pretty impressive for a released product that's supposedly had a great deal of scrutiny. There are few other techniques that could discover flaws as rapidly.
The simple thing is, fuzzing is one of the cheapest things to do with one of the highest yields in bugs. Moore noted:
The idea of using a pseudo-random number generator with a known seed is good, but fuzzing is better if you actually work it so as to try and give increased code coverage (as the article notes). So rather than just spew purely "random" stuff, set up a handshake properly for a particular type of protocol, that will likely take you down a particular code path, and then go into 'random world'.
Indeed, because of the ease, I'd guess a lot of black-hat work these days is fuzzing-based, and then examining the results carefully, discovering specific vulnerabilities, and then trying to weaponize them.
Re: (Score:2)
You are talking about IE6. That website is talking about something dated 2004! It's 2007 and IE7 has been out for a while.
Re: (Score:1)
Sound concept (Score:1)
Repeatable Pseudorandom Numbers (Score:1, Interesting)
Too bad cmpnet can't host sites. I never made it past all their interstitial ad and popup junk.
Re: (Score:2)
Can't tell (Score:3, Insightful)
Yes, you can tell by experts eyeballing the code. Granted, this might be far more work than automated testing, but it's not like testing is the only way to isolate bugs.
replaying set? (Score:3, Insightful)
Clean up after yourself (Score:1)
shoulda woulda coulda (Score:2)
Ya, and people should always wear their seatbelts, never drink and drive, and floss everytime they brush their teeth; Yet, the majority of humans fail to abide by these 3 simple "should haves".
Maybe you should write a howto covering how you think a web server should behave, and then proceed to write your own implementation from scratch (for my network pro
tcpdump? (Score:1)
How about thinning the pipeline? (Score:2)
I won't even start on the idiots who have no compression on their cameras, and put jpgs up on their Websites that are over a meg....
mark
Huh? (Score:1)