How does the ODT mechanism knows about existent connections? I mean, ODT is
a IP layer mechanism right, so it is not aware if there is a communication
or if packets are just echo requests. To be more precise, wouldn't a ping do
the trick?
Note that the mapping state is passive in ODT: the attacker also has to
get the victim to failover from the regular address to the fake one.
Perhaps i am not understanding this correctly. what happens if the attacker
continues to send pings, from time to time with the source address set to C?
The general question is how does the ODT end knows which is the actual address that it has to use?
It depends on whether the attacker can make the victim failover to the negotiated backup addresses. This could be remedied by sending a probe to the "real" address after a while and/or when a new session is initiated. The real host will then send back an error since the state referenced in the probe doesn't match its own state.
Yes, i porposed the same solution for mip :-)
But Pekka N. didn't like it (as far as i remember), becuase the security of
the host is based on the fact that the error message is not filtered.
Considering the wide adoption of ICMP filtering this may be a a problem.
While it would be insane to defend the opposite, I think this is a trap
we should avoid falling into. The safety features that are appropriate
for an airplane aren't automatically justified in a car, or the other
way around. Let's focus on the level of protection that is appropriate
for what we're trying to build here, now and in the forseeable future,
regardless of whether a certain class of attack is possible with single
homed IP.
Just to clarify this, I am not claiming that we shouldn't provide additional
security if we can, but that we shouldn't provide less.