DoS attack in the wild
Igor Sysoev
is at rambler-co.ru
Sat Jun 20 12:54:17 MSD 2009
On Fri, Jun 19, 2009 at 08:09:28PM -0400, w3wsrmn wrote:
> luben karavelov Wrote:
> -------------------------------------------------------
> > A DoS attack against number of http servers is
> > available and has hit
> > slashdot today:
> > http://it.slashdot.org/story/09/06/19/1243203/Atta
> > ck-On-a-Significant-Flaw-In-Apache-Released
> >
> > Out of the box nginx is also vulnerable (I have
> > tested it on latest 0.7
> > installation). A quick fix for the vulnerability
> > follows:
> >
> > Put in "http" section:
> >
> > client_body_timeout 10;
> > client_header_timeout 10;
> > keepalive_timeout 10;
> > send_timeout 10;
> > limit_zone limit_per_ip $binary_remote_addr 1m;
> >
> > and put in "server" section :
> >
> > limit_conn limit_per 16;
> >
> > The last 2 configuration lines are for limiting
> > connections per client
> > IP. This fist lines are same sane connection
> > timeouts.
> >
> > Best regards and keep the great work!
>
>
> A look at the script reveals it keeps connections open with invalid headers (note the appended "\r\n"):
No, "\r\n" is valid sequence in HTTP request. Actually, the only "\n" is
rather invalid, but most web servers treat it as "\r\n".
> "GET /$rand HTTP/1.1\r\n"
> . "Host: $sendhost\r\n"
> . "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n"
> . "Content-Length: 42\r\n";
>
> As by default the (undocumented?) ignore_invalid_headers directive is enabled in nginx, isn't this attack a non-issue, unless one disables the directive?
>
> Sending such headers to an nginx server with the directive enabled results in a "400 Bad Request".
>
> Posted at Nginx Forum: http://forum.nginx.org/read.php?2,3151,3163#msg-3163
>
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list