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

context confusion



Hi,

another issue that is still open is what the draft calls context confusion
The situation here is that we have hosts A and B that setup a shim 
context between them
the context has ULID(A) and ULID(B). For that context each  peer has 
assigned a context tag, CT(A) and CT(B)
suppose now that host B discards the state but A keeps it.

suppose that later on, a new context is established between A and B and that B reuses CT(B) for this new context. In the case that the ULID or the locators used by B in this new context contain at least one of the addresses used by B in the previous context, A is able to detect the situation that we call context confusion. Such detection can occur whether when A receives a I1, an I2 or an R2 message for this new context.
The question is: what does A does when it detect this context confusion?

There seems to be reasonable to continue with the new context establishment, using CT(B) for this new context, but what does A does with the old context?
There are two proposed approaches:
- Discard the old context
- try to reestablish the old context with a different context tag for B

Now, the problem with discarding the old context is that this may open the door to some form of attacks, when an attacker that discovers a context tag and a valid locator of a given peer, can easily, by just sending a I1 message make the victim to discard the state. In other words, if we have the scenario above with A and B having an estasblished context, an attacker can simply send an I1 message to A that includes the CT(B) and an ULID option with B's address and this would cause A to discard the context with B. Of course, it would require that the attacker knows CT(B) and B's address, would this threat be acceptable? An additional option would be to delay context teardown of the old context until a I2 or an R2 packet is received, making sure that we can track down an attacker....
The other option is that upon the reception of a shim control packet 
that causes context confusion detection, A tries to reestablish the 
context, that is, it sends a new I1 packet for the old context and see 
what happens. If the peer still has the old context (i.e. we are under 
attack) then the peer will respond with a R2 message and the attack is 
detected and no problem. If the peer actually has lost the context, it 
will reply with an R1 message and the situation is that the peer has 
discarded the context, and A can choose to restore it or not. In any 
case, there is still an open question is when does A sends the I1 
message: upon the reception of I1 or upon the reception of I2? I guess 
that we don't want to do anything when we receive a I1, and we better 
do it when we receive an I2 or an R2, when we have more confidence on 
what is going on...
So, what option do you prefer?

Regards, marcelo