Hello, Avshalom,

Some comments inline...


> Summary: The document is not ready for publication as a BCP.
> 
> Major issues:
> 
> The document is lacking explanation on the when and how that the
> techniques that are
> described in the document will be used. 

Not sure what you mean. Port randomization is not used in any specific
case. Transport protocols should randomize their ephemeral ports by default.


> There are many ways to protect
> the network
> and it is not clear when and how the specific techniques that are
> described in the
> document will be used, how they relate to other ways etc.

Port randomization mitigates off-path attacks by obfuscation. It simply
requires more work on the side of the attacker for him to successfully
forge a valid attack packet.



 > Minor issues:
> 
> Lines 624-626
>   However, it
>    may be affected by the vector involving binding a more specific
>    socket.  
> -- Not clear

I have clarified the text.

This is how I've modified it:

--- cut here ---
   Port numbers that are currently in use by a TCP in the LISTEN state
   should not be allowed for use as ephemeral ports.  If this rule is
   not complied with, an attacker could potentially "steal" an incoming
   connection to a local server application in at least to different
   ways.  Firstly, an attacker could issue a connection request to the
   victim client at roughly the same time the client tries to connect to
   the victim server application [CPNI-TCP] [I-D.gont-tcp-security].  If
   the SYN segment corresponding to the attacker's connection request
   and the SYN segment corresponding to the victim client "cross each
   other in the network", and provided the attacker is able to know or
   guess the ephemeral port used by the client, a TCP simultaneous open
   scenario would take place, and the incoming connection request sent
   by the client would be matched with the attacker's socket rather than
   with the victim server application's socket.  Secondly, an attacker
   could specify a more specific socket than the "victim" socket (e.g.,
   specify both the local IP address and the local TCP port), and thus
   incoming SYN segments matching the attacker's socket would be
   delivered to the attacker, rather than to the "victim" socket (see
   Section 10.1 of [CPNI-TCP]).

[....]

   The aforementioned issue do not affect SCTP, since most SCTP
   implementations do not allow a socket to be bound to the same port
   number unless a specific socket option (SCTP_REUSE_PORT) is issued on
   the socket (i.e., this behavior needs to be explititly allowed
   beforehand).  An example of a typical SCTP socket API can be found in
   [I-D.ietf-tsvwg-sctpsocket].

   DCCP is not affected by the exploitation of "simultaneous opens" to
   "steal" incoming connections, as the server and the client state
   machines are different [RFC4340].  However, it may be affected by the
   vector involving binding a more specific socket.  As a result, those
   tuples {local IP address, local port, Service Code} that are in use
   by a local socket should not be allowed for allocation as ephemeral
   ports.
--- cut here ---

Does this change address your comment?



> Lines 644-645
>    Ephemeral port selection algorithms SHOULD use the largest possible
>    port range, since this improves obfuscation.
> 
> -- Should be merged with lines 632-634
>    As mentioned in Section 2.1, the dynamic ports consist of the range
>    49152-65535.  However, ephemeral port selection algorithms should use
>    the whole range 1024-49151.

Please let me know if you feel strongly about this. -- me, I believe the
explanation *between* the two paragraphs is needed.


> Lines 1040-0144
>  The smaller the value of "N", the more linear the more
>    similar this algorithm is to the traditional BSD port selection
>    algorithm (described in Section 2.2.  The larger the value of "N",
>    the more similar this algorithm is to the algorithm described in
>    Section 3.3.1 of this document.
> 
> -- Need to rephrase

Fixed.



> Nits/editorial comments:
> 
> Line 512:
>    There are a number of factors to consider when designing an algorithm
> ->    There are number of factors to consider when designing an algorithm

Changed it to "There are several factors..."




> Line 622
>    DCCP is not affected is not affected by the exploitation of
> ->    DCCP is not affected by the exploitation of

Fixed.


> 
> Line 799
>    will not have different sequences of port numbers; i.e., wil not be
> ->    will not have different sequences of port numbers; i.e., will not be

Fixed.



> Line 869
>    availability an the granularity requested.  With SCTP both hostnames
> ->    availability and the granularity requested.  With SCTP both hostnames

Fixed.

Thanks!

Kind regards,
-- 
Fernando Gont
e-mail: [email protected] || [email protected]
PGP Fingerprint: 7809 84F5 322E 45C7 F1C9 3945 96EE A9EF D076 FFF1




_______________________________________________
Gen-art mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/gen-art

Reply via email to