Use constant time memcmp() when comparing packet HMACs.
authorSteffan Karger <steffan@karger.me>
Tue, 29 Apr 2014 20:13:03 +0000 (22:13 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 1 May 2014 12:56:07 +0000 (14:56 +0200)
commitc9084dfa2654349efcaffd51f120399f903f756a
tree37842e50fa538573bf19b75941be3741b950caaf
parent09cdaab47ac84ce60669ac841683c710f56cc5a9
Use constant time memcmp() when comparing packet HMACs.

This eliminates a timing side channel vulnerability, which could
potentially allow an attacker to compute a valid HMAC, and insert arbitrary
ciphertext data into the connection. If an attacker also identifies packets
with a plaintext it can guess (e.g. small packets every 1s are probably
pings), the attacker can xor the ciphertext to mangle the packet to
arbitrary plaintext. Although this type of attack is rarely seen in the
wild, it is generally considered technically viable.

Signed-off-by: Steffan Karger <steffan@karger.me>
src/net_packet.c
src/utils.c
src/utils.h