[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