Re: Long-lived Stags: Why?

Caitlin Bestler <[email protected]>
Newsgroups gmane.ietf.rddp
Message-ID <[email protected]>
On Jun 10, 2004, at 3:45 PM, [email protected] wrote:

> John,
>  
> "Single shot" automatic invalidation of STags wouldn't break other 
> things in addition
> to breaking apps written for Infiniband. For inster it would break 
> iSER and modifying
> iSER to allow it would lead to very inefficient undesireable operation 
> characterists.
> One needs to be able to have one side set up a large buffer for a 
> transfer and allow
> the other side to use smaller buffers to handle that transaction a 
> piece at a time as
> happens when a SCSI initiator sets up a buffer for a large Read and 
> the SCSI target
> uses multiple RDMA Writes to transfer the data.
>

I believe some clarifications are in order.

The question under discussion is whether RDDP creates new security 
vulnerabilities
that would not be be faced by an equivalent TCP/SCTP application.

The vulnerability identified is that a local interface may make it easy 
for the
ULP to leave a tagged buffer "open" at the RDDP layer when it was 
logically closed
according to the Upper Layer Protocol.

I have heard no disagreement with the contention that an application 
following
the guidance in the Security draft would have a problem. That is, the 
tools to
prevent this mismatch are already fully described, and in fact are 
available in
every known local interface.

There is a valid argument that the correct procedures are far from the 
default,
and that local interfaces may actually encourage over-exposing STags by 
requiring
extra steps to precisely tailor the RDDP layer exposure to match the 
logical
exposure.

So, even without any additional steps, it is arguable that RDDP as it 
stands
has presented a set of solutions for any increased vulnerability it may 
create.

Whether or not such an argument is fully defensible is probably not 
relevant.
I sense no clamoring for taking the most extreme position to the IESG, 
and
instead a consensus that *something* should be done so that 
applications that
simply use the STag associated with a Memory Region are not left 
exposed to
attacks by forged packets.

Two different strategies have been discussed to address this 
vulnerability:

a) blocking all unauthenticated DDP segments. Theoretically this could 
be
    done at the RDDP layer, at the TCP or SCTP layer, or at the IP layer.
    Because of the need to facilitate out-of-order handling, to leverage
    existing designs, and to avoid redesigning DDP packet handling code
    (and/or gates) that already exist, it is clear that the only viable
    solution to authenticating DDP segments is to authenticate the IP
    datagrams that carry them: which implies IPsec.

    If packet authentication is the selected solution, I believe it is
    clear that the preferred solution would not only be IPsec, but the
    exact same rules for usage of IPsec that apply to iSCSI.

b) The alternate, more minimal, approach is to eliminate the gap
    between the ULP's concept of when a buffer is writable and what
    has been communicated to RDDP using the local interface.

    One usage of the term "one shot" STag is a proposal to eliminate
    the potential mismatch by limiting the flexibility of STags.
    Many people have objected to this approach.

    But many of those objections have seemingly assumed that the
    choice was between requiring IPsec and crippling the local
    interface.

    I disagree. Enhancing the local interface can also eliminate
    the gap between ULP expectations and actual RDDP exposure.
    Doing so will result in more robust implementations, and will
    not result in the incremental per-unit cost of an IPsec solution.
    Keep in mind that most of the opinions expressed on this topic
    have agreed that for the vast majority of deployed RNICs, the
    IPsec functionality will *not* provide any additional value.
    So requiring IPsec would either impose a "compliance tax", or
    encourage non-compliant deployments. Once one IETF requirement
    has been ignored, it becomes easier to ignore others. Having
    decided that their RNIC won't support IPsec, will a manufacturer
    also be tempted to omit support for unaligned TCP segments?

    Enhancing the local interface would ensure that persistent
    STags were only used by applications that made a deliberate
    decision to do so. Typically this would be because they already
    had their own solutions in place, as is the case with iSER.

	Enhancing the local interface imposes no penalty on those
    applications that have already solved the exposure problem
    on their own.

That is why I believe these are the only two acceptable solutions.
The enhanced local interface can be implemented on top of existing
verbs, and IPsec can be inserted under an existing solution. All
other solutions break applications and/or break implementations.


>   
> In iSER we did put in a specific requirement that iSER check that the 
> Send
> carrying the Status for a command also invalidated the STag for that 
> command
> and doing the invalidation if the Send didn't.
>  
> It would probably be appropriate to put a SHOULD statement into RDMAP 
> and/or DDP
> about the ULP ensuring that an STag was invalidated for remote access 
> before it
> tells the application that the data is in the buffer. This would say 
> that other
> ULP's should do something similar to what we put into iSER. Given that 
> "single shot"
> would be undesireable, there is no way for DDP or RDMAP to enforce the 
> invalidation
> because they don't know when the ULP operation has been completed. The 
> requirement
> for ULPs should be stated. If one can put a MUST on a ULP, then it 
> could be a MUST.
>  
>

That is close to the first position: the Security Draft told you not to 
do that.
Changing it from a "please don't" to a "MUST NOT", when run-time 
enforcement is
impossible, isn't likely to be very persuasive to the IESG.

Stating that the local interface MUST NOT make a default out of insecure
practices, however, is enforceable and it is a requirement at the 
correct layer.

I see no conflict in preparing both solutions. The correct procedure is 
to identify
the *minimum* requirement that will address the problem. Clearly the 
local interface
enhancement would be the more minimal of the two solutions. However, if 
the IESG
does not accept our argument that it is adequate, then we would still 
have a
more stringent solution (IPsec) which would then be the most minimal.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.