2
2
3
3
D(HE)ater is an attacking tool based on CPU heating in that it forces the ephemeral variant of
4
4
[ Diffie-Hellman key exchange] ( https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange ) (DHE) in given
5
- cryptography protocols (e.g. TLS, SSH). It is performed without calculating a cryptographically correct ephemeral key on
6
- the client-side, but with a significant amount of calculation on the server-side. Based on this,
5
+ cryptography protocols (e.g. TLS, OpenVPN, SSH). It is performed without calculating a cryptographically correct
6
+ ephemeral key on the client-side, but with a significant amount of calculation on the server-side. Based on this,
7
7
a [ denial-of-service (DoS) attack] ( https://en.wikipedia.org/wiki/Denial-of-service_attack ) can be initiated,
8
8
called [ D(HE)at attack] ( https://dheatattack.com )
9
9
([ CVE-2002 -20001] ( https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-20001 ) ).
@@ -25,6 +25,8 @@ or can be used via [Docker](https://www.docker.com/) from
25
25
``` shell
26
26
docker pull coroner/dheater
27
27
docker run --tty --rm coroner/dheater --protocol tls ecc256.badssl.com
28
+ docker run --tty --rm coroner/dheater --protocol tls openvpn://vpn.example.com
29
+ docker run --tty --rm coroner/dheater --protocol tls openvpntcp://vpn.example.com:443
28
30
docker run --tty --rm coroner/dheater --protocol ssh ecc256.badssl.com
29
31
```
30
32
@@ -33,6 +35,8 @@ You can increase load by string extra threads.
33
35
``` shell
34
36
dheat --thread-num 4 --protocol tls ecc256.badssl.com
35
37
docker run --tty --rm coroner/dheater --thread-num 4 --protocol tls ecc256.badssl.com
38
+ docker run --tty --rm coroner/dheater --thread-num 4 --protocol tls openvpn://vpn.example.com
39
+ docker run --tty --rm coroner/dheater --thread-num 4 --protocol tls openvpntcp://vpn.example.com:443
36
40
docker run --tty --rm coroner/dheater --thread-num 4 --protocol ssh ecc256.badssl.com
37
41
```
38
42
@@ -41,7 +45,7 @@ docker run --tty --rm coroner/dheater --thread-num 4 --protocol ssh ecc256.badss
41
45
Without attacking a server or accessing its configuration it is still possible
42
46
to determine whether Diffie-Hellman (DH) key exchange is enabled and if so what
43
47
DH parameters (prime, generator, key size) are used. Command line tools such as
44
- [ CryptoLyzer] ( https://gitlab.com/coroner/cryptolyzer ) (TLS, SSH KEX/GEX),
48
+ [ CryptoLyzer] ( https://gitlab.com/coroner/cryptolyzer ) (TLS, OpenVPN, SSH KEX/GEX),
45
49
[ testssl.sh] ( https://testssl.sh ) (TLS only), or
46
50
[ ssh-audit] ( https://github.com/jtesta/ssh-audit ) (SSH KEX only) can do that work.
47
51
@@ -54,6 +58,16 @@ cryptolyze tls1_3 dhparams example.com
54
58
testssl.sh --fs example.com
55
59
```
56
60
61
+ ### OpenVPN
62
+
63
+ ``` shell
64
+ cryptolyze tls1_2 dhparams openvpn://vpn.example.com
65
+ cryptolyze tls1_3 dhparams openvpn://vpn.example.com
66
+
67
+ cryptolyze tls1_2 dhparams openvpntcp://vpn.example.com:443
68
+ cryptolyze tls1_3 dhparams openvpntcp://vpn.example.com:443
69
+ ```
70
+
57
71
### SSH
58
72
59
73
``` shell
@@ -192,7 +206,38 @@ private key size is set according to OpenSSL default values from
192
206
PerSourceNetBlockSize 32:128
193
207
```
194
208
195
- ### IPsec
209
+ ### VPN
210
+
211
+ #### OpenVPN
212
+
213
+ 1. Diffie-Hellman key exchange algorithms can be removed in TLS versions prior to 1.2 by setting the
214
+ [tls-cipher](https://build.openvpn.net/man/openvpn-2.6/openvpn.8.html) configuration option.
215
+
216
+ * using OpenSSL
217
+
218
+ ```
219
+ tls-cipher ...:!kDHE
220
+ ```
221
+
222
+ * using mbed TLS any cipher suites contain DHE should be removed
223
+
224
+ 1. Finite field Diffie-Hellman groups can be removed in TLS version 1.3 by setting the
225
+ [tls-groups](https://build.openvpn.net/man/openvpn-2.6/openvpn.8.html) configuration option.
226
+
227
+ ```
228
+ tls-groups x25519:secp256r1:x448
229
+ ```
230
+
231
+ 1. Control channel can be authentticated and/or encrypted by setting the tls-auth, tls-crypt, tls-crypt-v2
232
+ [configuration options](https://build.openvpn.net/man/openvpn-2.6/openvpn.8.html).
233
+
234
+ ```
235
+ tls-auth file
236
+ tls-crypt file
237
+ tls-crypt-v2 file
238
+ ```
239
+
240
+ #### IPsec
196
241
197
242
##### StrongSwan
198
243
0 commit comments