Dino and I were chatting in IRC last night about "solutions" to various ARP poisoning techniques.

While googling what various vendors proposed (and how they've differed from what I've used in the past), I found this PDF talking about how, in some cases, the poison in worse than the cure.

http://www.cs.sjsu.edu/faculty/stamp/students/Roney298report.pdf

p. 19/20 is where the interesting stuff begins. Before that, it's stuff that most of us know. (Here is a snippet below, in case you're too lazy to click the above URL)

*************************************************************
There are several existing solutions to ARP Cache Poisioning; however, a detailed study shows that there are some disadvantages in the existing solutions.

Issac, B. et al [2] proposes ‘Secure Unicast ARP by extending DHCP’ to
prevent ARP cache poisoning. In this solution, when Host A wants to
communicate with Host B, it first sends a secure unicast ARP request packet to a DHCP+ server. A Secure Unicast ARP (S-UARP) request packet is a unicast ARP request packet sent to a DHCP+ server. The DHCP+ server is an enhanced DHCP server that understands Secure Unicast ARP packet formats. The DHCP+ server has information about the IP and MAC address mapping of all the hosts to which it has leased an IP address. Hence it responds with the MAC address mapped to the requested IP address in an encrypted format. It is a trusted party and the messages are encrypted before transmission, with a secret key that has been distributed to the client and the server by a Certification Authority. This makes sure that Host A will not get an ARP packet, which could cause poisoning.

The drawback of this solution is that it requires modification to the ARP protocol, which means that all the Hosts in a LAN that want to prevent ARP Cache poisoning would have to modify their kernels to reflect the modified ARP protocol.

It would also require a DHCP+ server, which would understand the secure
unicast ARP packet and respond to it. Another modification that would be
required is to the DHCP relay agent, as it has to be able to identify an S-UARP packet and forward it to the DHCP+ server.

Brushi et al [9] has proposed a Secure ARP (S-ARP), which uses asymmetric key cryptography to authenticate the hosts in a LAN. A Certification Authority assigns a private/public key pair to every host in the LAN. Each ARP packet sent from a host is signed with the host’s private key. The receiving host verifies the signature of the ARP packet using the sending host’s public key. To include the signature of the sending host in the ARP packet, an additional header is inserted at the end of the standard ARP protocol header. The solution in [9] also requires modification to the ARP protocol as the sender needs to sign each ARP message with his private key and the receiving host needs to verify the signature with the sender’s public key. The author mentions in [9] that to get the entire LAN completely secure, all the hosts should be S-ARP enabled. S-ARP also introduces additional overhead and time for signature and verification by the sender and the receiver respectively, for each ARP message. The other issue with this solution is that this is not a feasible approach for a wireless network environment like a hotspot, where the wireless clients entering the network are random and short-time users who cannot be expected to have S-ARP enabled.

Tripunithara, et al proposed a Middleware approach to prevent ARP cache poisoning in [10]. This approach maintains a ‘requested’ queue and a ‘responded’ queue in each host. If the host has sent an ARP request, it will be entered in the ‘requested’ queue and when the corresponding reply is received, it is entered in the ‘responded’ queue. Hence, whenever an ARP response is received, it is allowed to update the ARP cache only if there is a corresponding request in its request queue. The solution prevents the ARP Cache Poisoning attacks, but each and every host in the LAN has to be modified. The scale of deployment is very high.

Reply via email to