Dailydave mailing list archives
Re: Ferret
From: "Robert Wesley McGrew" <wesley () mcgrewsecurity com>
Date: Tue, 6 Mar 2007 09:26:26 -0600
On 3/6/07, Phrack Senate Omniscient <phracksenate () gmail com> wrote:
Ferret-1/Ferret/http.c:
void process_simple_http(struct Seaper *seap, struct NetFrame *frame,
const unsigned char *px, unsigned length) {
char method[16];
...
x=0;
while (i<length && !isspace(px[i])) {
if (x < sizeof(method) -1) {
method[x++] = (char)toupper(px[i++]);
method[x] = '\0';
}
}
ur code getting owned in less than 60 seconds: priceless
Not that this isn't bad (it is), but to get here, it has to pass this check in tcp.c: 171 if (smellslike_httprequest(px, length)) 172 process_simple_http(seap, frame, px, length); It turns out the bounds-checking for this is actually done up in smellslike_httprequest : 43 for (i=0; i<length && isspace(data[i]); i++) 44 ; 45 method = i; 46 while (i<length && !isspace(data[i])) 47 i++; 48 if (i>10) 49 return 0; I would agree that process_simple_http should carry its own bounds-checking with it though. It would turn out badly if someone tinkering decided to use that function without the corresponding smellslike.
knowing that ur code prolly has a dozen other elementary errors resulting in memory corruption: just fucking embarassing
This is probably still true.
Some at Black Hat called it "serious fucking business".
Maybe I should actually build this thing and play with it :P -- Robert Wesley McGrew http://mcgrewsecurity.com _______________________________________________ Dailydave mailing list Dailydave () lists immunitysec com http://lists.immunitysec.com/mailman/listinfo/dailydave
Current thread:
- Ferret Ronaldo Vasconcellos (Mar 05)
- Re: Ferret Phrack Senate Omniscient (Mar 06)
- Message not available
- Re: Ferret Robert Wesley McGrew (Mar 06)
- Message not available
- Re: Ferret Pusscat (Mar 06)
- Re: Ferret J.M. Seitz (Mar 06)
- Re: Ferret Phrack Senate Omniscient (Mar 06)
- <Possible follow-ups>
- Fwd: Ferret gerbil (Mar 06)
