netdev
[Top] [All Lists]

Re: [PATCH] fix small DoS on connect() (was Re: BUG: Unusual TCP Connect

To: Willy Tarreau <willy@xxxxxxxxx>
Subject: Re: [PATCH] fix small DoS on connect() (was Re: BUG: Unusual TCP Connect() results.)
From: Thomas Graf <tgraf@xxxxxxx>
Date: Sun, 12 Jun 2005 16:44:26 +0200
Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>, davem@xxxxxxxxxxxxx, xschmi00@xxxxxxxxxxxxxxxxxx, alastair@xxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20050612133654.GA8951@xxxxxxxxxxxxxxxx>
References: <E1DhBic-0005dp-00@xxxxxxxxxxxxxxxxxxxxxxxx> <20050611195144.GF28759@xxxxxxxxxxxxxxxx> <20050612081327.GA24384@xxxxxxxxxxxxxxxxxxx> <20050612083409.GA8220@xxxxxxxxxxxxxxxx> <20050612103020.GA25111@xxxxxxxxxxxxxxxxxxx> <20050612114039.GI28759@xxxxxxxxxxxxxxxx> <20050612120627.GA5858@xxxxxxxxxxxxxxxxxxx> <20050612123253.GK28759@xxxxxxxxxxxxxxxx> <20050612131323.GA10188@xxxxxxxxxxxxxxxxxxx> <20050612133654.GA8951@xxxxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
* Willy Tarreau <20050612133654.GA8951@xxxxxxxxxxxxxxxx> 2005-06-12 15:36
> > The RST packet is sent by client A using its sequence numbers.  Therefore
> > it will pass the sequence number check on server B.
> >
> > 4) server B resets the connection.
> 
> No, precisely the RST sent by A will take its SEQ from C's ACK number.
> This is why B will *not* reset the connection (again, tested) if C's ACK
> was not within B's window.

Absolutely but it relies on the other stack being correctly implemented.
The attack would work perfectly fine if there wasn't the rule that a RST
must not be sent in response to another RST. The attack has been
successful and still is because some firewalls are configured to send
RSTs without respecting this rule.

I like your patch and the idea behind it, it can successfully defeat the
most simple method of preventing connections being established.

<Prev in Thread] Current Thread [Next in Thread>