Re: review of draft-ietf-dccp-simul-open-02

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



...
> Yes. I was trying to explain a reason why the server may not do this, 
> but I think you are correct and I just over-emphasised this. 
> I now think 
> this discussion belongs only in the security section.
> 
> I'd prefer:
> 
> NEW:
> The use of a dedicated DCCP packet type ties usage to a specific 
> condition, ensuring the method is inter-operable with hosts 
> that do not 
> implement this update, or disable it (see Section 4).
> 
> Following this discussion, I have now re-writen the security 
> considerations section, replacing the entire text with the sugessted 
> text below.
> 
> NEW:
> The method specified in this document generates a DCCP-Listen packet 
> addressed to a specific DCCP client. This exposes the state of a DCCP 
> server that is in a passive listening state (i.e. waiting to accept a 
> connection from a known client).
> 
> The exposed information is not encrypted and therefore could 
> be seen on 
> the network path to the DCCP client. An attacker on this return path 
> could observe a DCCP-Listen packet and then exploit this by 
> spoofing a 
> packet (e.g. DCCP-Request, DCCP-Reset) with the IP addresses, DCCP 
> ports, and service code that correspond to the values to be 
> used for the 
> connection. As in other on-path attacks, this could be used to inject 
> data into a connection or to deny a connection request. A similar 
> on-path attack is also possible for any DCCP connection, once the 
> session is initiated by the client (RFC4340, Section 18).
> 
> The DCCP-Listen packet is only sent in response to explicit prior 
> out-of-band signaling from a DCCP client to the DCCP server (e.g. SDP 
> [RFC] information communicated via the Session Initiation Protocol 
> [RFC]), and will normally directly precede a DCCP-Request sent by the 
> client (which carries the same information).
> 
> This update does not significantly increase the complexity or 
> vulnerability of a DCCP implementation that conforms to RFC4340. A 
> server SHOULD therefore by default permit generation of DCCP-Listen 
> packets. A server that wishes to prevent disclosing this 
> information MAY 
> refrain from generating DCCP-Listen packets, without impacting 
> subsequent DCCP state transitions, but possibly inhibiting middlebox 
> traversal.

Looks good to me.  Thanks.

> >>> Section 2.3.1,
> >>>
> >>>    The server SHOULD repeat sending a DCCP-Listen packet 
> >> while in state
> >>>    INVITED, at a 200 millisecond interval and up to at most 2
> >>>    repetitions (Section 3 discusses this choice of timer 
> >> interval).  The
> >>>    retransmission timer is restarted with the same 200ms 
> >> interval after
> >>>    the second retransmission.  When, upon the next timeout, 
> >> the server
> >>>    is still in the INVITED state, it SHOULD progress to 
> LISTEN, and
> >>>    resume processing as specified in [RFC4340].
> >>>
> >>> I found the paragraph above confusing.  The first sentence says
> >>> "send DCCP-Listen, wait 200ms, send another DCCP-Listen, 
> >> wait 200ms, 
> >>> send another DCCP-Listen."  
> >>  >
> >>>  The second sentence then appears to
> >>> say the retransmission timer is restarted with the same 200ms 
> >>> value (but the value didn't previously change!).  I can't
> >>> follow the intent. 
> >>  >
> >>> I read section 3.3, too, and I cannot figure
> >>> out how many packets are really supposed to be sent.  Section 
> >>> 3.3 says:  "recommend a maximum number of 3 timeouts (2 
> >>> repetitions) results from the following considerations.".
> >>>
> >> AH, then we should re-write:
> >>
> >> NEW:
> >> "The server SHOULD repeat sending a DCCP-Listen packet 
> while in the 
> >> INVITED state, at a 200 millisecond interval and up to at most 2 
> >> repetitions ([ref] discusses this choice of timer interval).
> > 
> > That is a total of three packets, right?
> Yes.
> > 
> >   send packet, wait 200ms
> >   send packet, wait 200ms  <--- "first repetition" (first 
> expiration)
> >   send packet              <--- "second repeition" (second 
> expiration)
> > 
> Yes.
> 
> I can add a similar picture, if this helps.

I read this section again, and I think if you just stuck consistently with
talking about when a retransmission occured, or when a timer expired, or when
you wait, the text would be clearer.  I got confused with "first repetition"
and "first expiration" -- which is the same time that the second packet
(=first retranmission) is sent.

> >> If the 
> >> server is still in the INVITED state after a further 
> period of 200ms 
> >> following transmission of the second  DCCP-Listen packet,
> >                                 ^^^^^^
> >                                 "third"
> 
> Yes, "third packet" (i.e. second copy). I'll check this and will fix.

thanks.

> > 
> >> it SHOULD 
> >> progress to the LISTEN state, and resume processing as 
> specified in 
> >> [RFC4340]. This  be implemented using a retransmission 
> timer for the 
> >> INVITED state. The timer is restarted after sending each 
> DCCP-Listen 
> >> packet, with an interval of 200ms. It is cancelled when the server 
> >> leaves this state. The first and second expiry of this 
> timer trigger 
> >> transmission of the DCCP-Listen Packet. A third expiry of 
> the timer 
> >> results in the server progressing to the LISTEN state.
> >>
> >>>    Server endpoints SHOULD in general ignore any incoming 
> >> DCCP-Listen
> >>>    packets.  As an exception to this rule, a DCCP Server in 
> >> state LISTEN
> >>>    MAY generate a Reset (Code 7, "Connection Refused") in 
> >> response to a
> >>>    DCCP-Listen packet. 
> >>>
> >>> This should more clearly indicate it is a DCCP Reset.
> >>>
> >> Agree. This and other instances have been corrected.
> >>
> >>>    This Reset is an indication that two servers are
> >>>    simultaneously awaiting connections on the same port.
> >>>
> >>>
> >>>    Fully-specified server endpoints SHOULD treat ICMP 
> error messages
> >>>    received in response to a DCCP-Listen packet as "soft 
> >> errors" that do
> >>>    not cause a state transition.
> >>>
> >>> It would be useful to discuss why this is a SHOULD -- perhaps
> >>> in the Design Decisions section.  I believe it allows two 
> hosts to 
> >>> do a simultaneous DCCP open, when those hosts are directly 
> >> connected 
> >>> (that is, without a draft-ietf-behave-dccp-compliant NAT between 
> >>> them).
> >>>
> >> NEW:
> >> Fully-specified server endpoints SHOULD treat ICMP error messages 
> >> received in response to a DCCP-Listen packet as "soft 
> errors" that do 
> >> not cause a state transition. Reception of an ICMP error 
> message as a 
> >> result of sending a DCCP-Listen packet does not necessarily 
> >> indicate a 
> >> failure of the following connection request, and therefore 
> should not 
> >> result in a server state change. This reaction to soft errors 
> >> exploits 
> >> the valuable feature of the Internet that for many network 
> >> failures, the 
> >> network can be dynamically reconstructed without any 
> >> disruption of the 
> >> endpoints.
> > 
> > Thanks.
> > 
> > By the way, I noticed some inconsistency between "fully-specified"
> > and "fully specified" (no hyphen) throughout the document.
> > 
> Thanks, will also be fixed.
> 
> > -d
> > 
> 
> Note: this set of comments address issues that were not yet addressed
> in the recently updated rev -03, but will be addressed in rev -04.

Ok, thanks for letting me know.

-d


[Index of Archives]     [Linux Kernel Development]     [Linux DCCP]     [IETF Annouce]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [DDR & Rambus]

  Powered by Linux