[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: addition of TLV to locator ID or locator ID set
In addition to what Marcelo posted...
On 3-okt-2005, at 10:42, Paul Jakma wrote:
HBA addresses are bound to a given prefix set i.e. the addresses
of a given HBA set are bound together and this cannot be easily
forged. In the same way, the CGA is bound to a public key and
cannot be easily forged.
Sure, so it proves the packet was constructed correctly, at least
the association of the outer locator prefix to the inner ULID. This
doesn't prove anything about who sent the packet though, does it?
Right. With HBA, the ONLY thing that's protected is the set of
prefixes that host using the HBA address is connected to. (Obviously
a host can also add prefixes to the HBA that it's not connected to,
but the point is that third parties can't.)
Along with a verification procedure, this makes it possible to
authenticate the locator set / identifier relationship.
It seems vulnerable to injection attacks (unless you assume routing
is secured in some way, eg RPF everywhere, but that still leaves a
an attacker who is on-link or MITM able to inject packets. Further,
operational experience shows this to be a dangerous assumption to
rely on).
HBA seems a way to detect quite fraudulent packets (invalid
binding), it doesn't seem (to me) to be a way to assure a received
packet came from where the binding claims it did.
It's still entirely possible to inject all kinds of falsified
packets. HBA and CGA aren't general purpose security mechanisms: if
this is what you need, use IPsec.
However, without HBA or CGA it would be possible to redirect packets
(assuming the shim is used) even in the presence of IPsec.
CGA simply ties a public key / certificate to an address. This key or
certificate can then be used to authenticate further exchanges so an
attacker can't successfully inject shim signalling.
With HBA, the shim signalling itself isn't protected: an attacker can
execute any valid signalling exchange. However, the HBA limits the
set of valid exchanges to the ones related to a prefix where that
prefix is one of the set for which there is a valid hash in the
interface identifier.
Now if the attacker has control over all these prefixes, the
communication is at the mercy of the attacker. Even if the attacker
can only observe packets flowing to/from the initial address and
inject spoofed packets of his own, that's probably enough to make
successful HBA-based shim signalling impossible. But the attacker
can't do anything that he wouldn't be able to do if the shim wasn't
there.
while it does exists in oportunistic IPSec. Actually, the nice
thing about CGA/HBA is that they do provide a quite continuos
protection and don't need to trust in the information exchanged
during the initial contact, preventing the so-called future or
time shifted attacks
I'm not quite sure that's true:
A-----B D ---E
| |
-----
|
C
For whatever operational reasons C is able to send packets with the
same source prefix as A, it /might/ also able to able to observe
the packets sent by E to A.
C can, at a minimum, play havoc with any shim mapping on E relevant
to A,
Yes, it can inject falsified shim signalling packets that make the
real shim signalling derail.
if the only security is HBA and the shim protocol is stateless
(without having to observe packets obviously).
Obviously all signalling will use cookies so blind injection attacks
shouldn't be an issue.
If the shim protocol is not stateless, eg through use of some
sequence number, then it can (without observation) possibly deny A
from speaking to E by setting up shim6 negotiation in advance of A
doing so (A's shim6 control packets then might be rejected, due to
wrong state) if E assumes that for a given valid HBA future state
will match.
So C would assume A's address and start communicating with E. C would
then have to block traffic from E to A, or A would send RSTs or
similar. So C would have to be a man in the middle.
Suppose C now initates a rehoming. C would also have to be present at
the new address A' in order for E to accept the change. And A' must
be an address that belongs to A because otherwise A wouldn't have
included the prefix in question in its HBA.
I suppose this attack might be useful for C if C can only be a man in
the middle between A and E for a short time, but be a man in the
middle between A' and E for a longer period. As long as C keeps the
A' - E association alive, A is going to have a hard time connecting
to E using A - E.
I don't see what prevents an attacker constructing the same HBA.
But ONLY the same HBA or an unrelated one: NOT one that has the same
interface identifier with a different underlying prefix set (not
without 2^50 or so tries). It's like being able to create a copy of a
passport without being able to change the photo. Since in our case
the "photo" doesn't allow for ambiguity this makes the "passport"
useless for anyone but the real holder.