Prevent oracle attacks in the legacy protocol (CVE-2018-16737, CVE-2018-16738)
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 9 Sep 2018 16:19:15 +0000 (18:19 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 9 Sep 2018 20:12:08 +0000 (22:12 +0200)
commit46f3eba7755089ff68fdc137b0754cae2fa523eb
tree6b2c0c97c6d5f193859724be443055ea15ce3b91
parent01cb1961eac33de9e9d9cecd0910850a2cb549c3
Prevent oracle attacks in the legacy protocol (CVE-2018-16737, CVE-2018-16738)

The legacy authentication protocol allows an oracle attack that could
potentially be exploited. This commit contains several mitigations:

- Connections are no longer closed immediately on error, but put in
  a "tarpit".
- The authentication protocol now requires a valid CHAL_REPLY from the
  initiator of a connection before sending a CHAL_REPLY of its own.
- Reduce the amount of connections per second accepted.
- Null ciphers or digests are no longer allowed in METAKEYs.
- Connections that claim to have the same name as the local node are
  rejected.

Just to be on the safe side:

- The new protocol now requires a valid SIG from the initiator of a
  connection before sending a SIG of its own.
15 files changed:
src/connection.c
src/connection.h
src/net.c
src/net.h
src/net_packet.c
src/net_setup.c
src/net_socket.c
src/protocol.c
src/protocol_auth.c
src/protocol_edge.c
src/sptps.c
src/tincctl.c
test/Makefile.am
test/security.test [new file with mode: 0755]
test/splice.c [new file with mode: 0644]