Subject: Re: tcp_input.c 1.194
To: None <abuse@spamalicious.com>
From: Jun-ichiro itojun Hagino <itojun@itojun.org>
List: tech-net
Date: 03/04/2005 13:58:52
> You made this change, with the log message:
> 
> revision 1.194
> date: 2004/04/20 16:52:12;  author: itojun;  state: Exp;  lines: +51 -22
> - respond to RST by ACK, as suggested in NISCC recommendation
> - rate-limit ACKs against RSTs and SYNs
> 
> As far as I can tell, this is a reference to NISCC 236929.
> 
> While I have no objection to the rate-limiting, or double-checking received 
> RSTs, I cannot find any reason for the following change:
> 
> +                       } else if (tlen) {
> +                               tp->t_dupacks = 0;      /*XXX*/
> +                               /* drop very old ACKs unless th_seq matches */
> +                               if (th->th_seq != tp->rcv_nxt &&
> +                                   SEQ_LT(th->th_ack,
> +                                   tp->snd_una - tp->max_sndwnd)) {
> +                                       goto drop;
> +                               }
> +                               break;
> 
> As far as I can tell, it simply does not correspond to anything in your log 
> message, or in the NISCC advisory.
> 
> I can only assume that it is an attempt to prevent injection of bogus data 
> with a guessed ack number.  However, given that the sequence number has to be 
> in the window anyway, and it's not normally exposed, it occurs to me to 
> wonder whether this actually buys us anything.

	responding ancient email message: 

	NISCC report was about off-line attack (i.e. attacker does not sit
	between TCP server and client).  attacker does not know sequence 
	number, and he will do a brute-force attack (sending massive number of
	packets). the above clause is to reduce possibility of successful
	attack to 1/(2^32).  

itojun