Re: a potential security hole?

OKABE Nobuo <[email protected]> Thu, 13 Feb 2003 12:26:14 +0900 (JST)
Newsgroups gmane.ietf.kink
Message-ID <[email protected]>
First of all, sorry for my poor contents in the previous mail.

From: Michael Thomas <[email protected]>
Subject: a potential security hole?
Date: Wed, 12 Feb 2003 13:13:00 -0800 (PST)

> I'm trying -- somewhat unsucessfully -- to
> understand the attack, but let me first ask a
> question: is this attack specific to KINK itself,
> or is it generally applicable to any Kerberos
> application which does an ap-rep/ap-req as KINK
> does? It looks to me like it might be in that
> class, but as I said, I'm not understanding the
> attack.

I'm trying to explain the attack in detail.
please see the below.

> More inline:
> 
> OKABE Nobuo writes:
>  > 
>  > Hi all,
>  > 
>  > # Sorry if this kind of discussion had already been held so far.
>  > # We got involved KINK recently.
>  > 
>  > We found a potential security hole using KINK with
>  > a kind of naming system that can update entry dynamically.
> 
> You mean like Dynamic DNS? Or in the principal
> database itself?

Dynamic DNS (or something like that).

>  > 3) A bad guy, Bob, takes over the SA pairs.
>  > 
>  > 
>  >    First, Bob updates a bogus pair (FQDN: BAD, IP address: IPb)
>  >    of his naming system. Then, he initiates KINK for BAD@REALM.
>  >    KINK on A starts KINK message. X that is a intermediate box
>  >    between A and B can impersonate B because X can understand
>  >    a ticket for BAD@REALM.
> 
> I assume here that "X" is the attaker, not Bob?
> Otherwise I'm really confused because why would
> Bob update his naming to point at "BAD"? Are
> Bob and X somehow in collusion?

Here are players:

A:
    - A is a node.
    - A's IP adrs is "133.140.10.1".
    - A's FQDN is "foo.goodguy.org".
    - A's principal is "foo.goodguy.org@REALM".
    - A shares a Kerberos master key Ka with KDC.
    - Alice and Bob have their account in node A.
        
X: 
    - X is a node.
    - X's one of IP addresses is "133.140.10.2".
    - X's FQDN is "bar.badguy.org".
    - X's principal is "bar.badguy.org@REALM".
    - X shares a Kerberos master key Kx with KDC.
    - X is a a intermediate box (ex. a router) between A and B.
    - Bob has his account in node A.

B:
    - B is a node.
    - B's IP adrs is "133.140.20.30".
    - B's FQDN is "boo.goodguy.org".
    - B's principal is "boo.goodguy.org@REALM".
    - B shares a Kerberos master key Ka with KDC.
    - Alice has her account in node B.



     user: Alicd and Bob            user: Bob                 user: Alice
      A ----------------------------------X-------------------------B
        133.140.10.1          133.140.10.2             133.140.20.30
        foo.goodguy.org     bar.badguy.org           boo.goodguy.org


Here is a story:

1)  Alice on the node A starts KINK between 
    "foo.goodguy.org@REALM" and "boo.goodguy.org@REALM".
    It means that IPsec is established between
    "133.140.10.1" and "133.140.20.30".

2)  Bob updates X's IP address as a bogus one by dynamic DNS update,
    e.g. <bar.badguy.org, 133.140.20.30>.
                          ^^^^^^^^^^^^^

3)  Then, Bob on the node A starts KINK between
    "foo.goodguy.org@REALM" and "bar.badguy.org@REALM".
    It means that IPsec will be established between
    "133.140.10.1" and "133.140.20.30".
                        ^^^^^^^^^^^^^

4)  The node X intercepts the KINK CREATE message whose destination
    is the node B. X can read the message because the message
    is for "bar.badguy.org@REALM".
    Then, X can reply a bogus KINK REPLY message to the A.

5)  Finally, KINK negotiation is done between
    "foo.goodguy.org@REALM" and "bar.badguy.org@REALM".
    From the node A's viewpoint, the IPsec is re-established between
    "133.140.10.1" and "133.140.20.30".
    However, SA is installed in the node X, not the node B.

>  >        A                           KDC              X             B
>  > 
>  >             TGS_REQ
>  >               by ME@REALM
>  >               for BAD@REALM
>  >               w/  TGTa
>  >         -------------------------->
>  > 
>  >             TGS_REP
>  >               w/ TICKETx
>  >         <--------------------------
>  > 
>  >             IPsrc:IPa, IPdst:IPb
>  >             KINK_CREATE
>  >               w/ AP_REQ (including TICKETx)
>  >               w/ ISAKMP
>  >         -------------------------------------------> X impersonates B.
>  >                                                      X can reads AP_REQ
>  >                                                      because X can understand TICKETx.
> 
>   But... is that impersonation, or is it Bob just
>   changing name bindings such that it's now
>   pointing to X? In any case, assuming the name
>   binding was in DNS, the KDC doesn't use DNS so
>   this would be a general DNS/Kerberos name
>   mapping problem, not a KINK specific problem.

Thanks for your good point. I realized that this is not KINK
specific problem. In other words, this seems to be FQDN/IP
address mapping problem.

Do you know any information or pointer that
takes care of "a general DNS/Kerberos name mapping problem"
or related one as you mentioned ?

# Sorry if my question is well-known issues of Kerberos.

>   If _not_, I don't understand why Bob would
>   change the name binding in the KDC if it's not
>   in his interest.
> 
>   I must be missing something.

thanks,

---- nobuo