[Bro] http-protocol.pac parsing error on HTTP 1.1 folded headers
Ruoming Pang
rpang at cs.princeton.edu
Wed Apr 2 07:58:21 PDT 2008
Hi Kelvin,
Sorry for the late reply (I missed the email in my inbox).
2008/2/8 Kelvin Edmison <kelvin at projectrialto.com>:
>
>
> I've found an interesting binpac parse error when parsing http headers from
> www.golfsmith.com using http-protocol.pac. The problem is that the
> golfsmith server is replying with a header that http-protocol.pac is
> interpreting as corrupt.
>
> Here's an example of the golfsmith.com headers
> HTTP/1.1 200 OK
> Date: Fri, 01 Feb 2008 17:10:30 GMT
> Server: Apache/2.2.6 (Unix) mod_ssl/2.2.6
> DAV/2 PHP/5.2.5
> X-Powered-By: PHP/5.2.5
> Content-Type: text/html
>
> Note the line DAV/2 that is started with a space. That's where the parsing
> error occurs. However, it seems like this may actually be legal according
> to the standards.
>
> RFC2616 section 2.2 indicates that
> "HTTP/1.1 header field values can be folded onto multiple lines if the
> continuation line begins with a space or horizontal tab. All linear white
> space, including folding, has the same semantics as SP. A recipient MAY
> replace any linear white space with a single SP before interpreting the
> field value or forwarding the message downstream."
Yes, you are right. This is legal and the original Bro HTTP analyzer handles it.
> According to this section, the www.golfsmith.com header "Server:" is broken
> across the two lines, and it's value is actually "Apache/2.2.6 (Unix)
> mod_ssl/2.2.6<LF><SP>DAV/2 PHP/5.2.5"
>
> Does anyone have ideas on how http-protocol.pac should be modified to handle
> this situation?
I think the current http-protocol.pac should handle it, too, because
HTTP_HEADER_NAME may match an empty string:
type HTTP_HEADER_NAME = RE/|([^: \t]+:)/;
type HTTP_Header = record {
name: HTTP_HEADER_NAME &transient;
: HTTP_WS;
value: bytestring &restofdata &transient;
} &oneline;
Could you please verify that the above snippet is the same in your Bro
tree? If so, could you send me a trace snippet for me to debug it?
Thanks!
Ruoming
> Thanks,
> Kelvin Edmison
> _______________________________________________
> Bro mailing list
> bro at bro-ids.org
> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/bro
>
More information about the Bro
mailing list