aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Kangas2023-10-24 16:20:42 +0200
committerStefan Kangas2023-10-24 16:41:10 +0200
commitdbcaaf375f285a42ff1a81c313a454264374cbdb (patch)
tree830680dcf5105af629cf10b13565d81fd001dbd5
parenta59d1da0dde890da59dc007d39efb1a0892ebbb6 (diff)
downloademacs-dbcaaf375f285a42ff1a81c313a454264374cbdb.tar.gz
emacs-dbcaaf375f285a42ff1a81c313a454264374cbdb.zip
Warn about 3DES when network-security-level is medium
* lisp/net/nsm.el (network-security-protocol-checks): Bump deprecated and insecure '3des-cipher' to 'medium'. * doc/emacs/misc.texi (Network Security): Document the above change. Ref: https://nvd.nist.gov/vuln/detail/CVE-2016-2183
-rw-r--r--doc/emacs/misc.texi12
-rw-r--r--etc/NEWS6
-rw-r--r--lisp/net/nsm.el7
3 files changed, 16 insertions, 9 deletions
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index a05b7f6c6ea..d7168fa1ca0 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -399,18 +399,18 @@ vulnerable to a variety of attacks, and you may want to avoid using
399these if what you're doing requires higher security. (This is the 399these if what you're doing requires higher security. (This is the
400@code{ssl} check in @code{network-security-protocol-checks}). 400@code{ssl} check in @code{network-security-protocol-checks}).
401 401
402@item Triple DES (or @acronym{3DES}) cipher
403The @acronym{3DES} stream cipher provides at most 112 bits of
404effective security, and a major security vulnerability in it was
405disclosed in 2016 (CVE-2016-2183). It has been deprecated by NIST in
406all applications from late 2023 onwards. (This is the
407@code{3des-cipher} check in @code{network-security-protocol-checks}).
402@end table 408@end table
403 409
404If @code{network-security-level} is @code{high}, the following checks 410If @code{network-security-level} is @code{high}, the following checks
405will be made, in addition to the above: 411will be made, in addition to the above:
406 412
407@table @asis 413@table @asis
408@item @acronym{3DES} cipher
409The @acronym{3DES} stream cipher provides at most 112 bits of
410effective security, which is considered to be towards the low end.
411(This is the @code{3des} check in
412@code{network-security-protocol-checks}).
413
414@item a validated certificate changes the public key 414@item a validated certificate changes the public key
415Servers change their keys occasionally, and that is normally nothing 415Servers change their keys occasionally, and that is normally nothing
416to be concerned about. However, if you are worried that your network 416to be concerned about. However, if you are worried that your network
diff --git a/etc/NEWS b/etc/NEWS
index 8becfae7bb9..9268575c246 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -62,6 +62,12 @@ more details.
62 62
63** Emacs now supports Unicode Standard version 15.1. 63** Emacs now supports Unicode Standard version 15.1.
64 64
65** The Network Security Manager now warns about 3DES by default.
66This cypher is no longer recommended owing to a major vulnerability
67disclosed in 2016, and its small 112 bit key size. Emacs now warns
68about its use also when 'network-security-level' is set to 'medium'
69(the default). See 'network-security-protocol-checks'.
70
65** Help 71** Help
66 72
67*** 'describe-function' shows function inferred type when available. 73*** 'describe-function' shows function inferred type when available.
diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el
index 8558a1fd5d1..478a2998830 100644
--- a/lisp/net/nsm.el
+++ b/lisp/net/nsm.el
@@ -149,10 +149,11 @@ unencrypted."
149 (dhe-prime-kx medium) 149 (dhe-prime-kx medium)
150 (sha1-sig medium) 150 (sha1-sig medium)
151 (ecdsa-cbc-cipher medium) 151 (ecdsa-cbc-cipher medium)
152 ;; Deprecated by NIST from 2016/2023 (see also CVE-2016-2183).
153 (3des-cipher medium)
152 ;; Towards TLS 1.3 154 ;; Towards TLS 1.3
153 (dhe-kx high) 155 (dhe-kx high)
154 (rsa-kx high) 156 (rsa-kx high)
155 (3des-cipher high)
156 (cbc-cipher high)) 157 (cbc-cipher high))
157 "This variable specifies what TLS connection checks to perform. 158 "This variable specifies what TLS connection checks to perform.
158It's an alist where the key is the name of the check, and the 159It's an alist where the key is the name of the check, and the
@@ -169,13 +170,13 @@ otherwise.
169 170
170See also: `nsm-check-tls-connection', `nsm-save-host-names', 171See also: `nsm-check-tls-connection', `nsm-save-host-names',
171`nsm-settings-file'" 172`nsm-settings-file'"
172 :version "27.1"
173 :type '(repeat (list (symbol :tag "Check function") 173 :type '(repeat (list (symbol :tag "Check function")
174 (choice :tag "Level" 174 (choice :tag "Level"
175 :value medium 175 :value medium
176 (const :tag "Low" low) 176 (const :tag "Low" low)
177 (const :tag "Medium" medium) 177 (const :tag "Medium" medium)
178 (const :tag "High" high))))) 178 (const :tag "High" high))))
179 :version "30.1")
179 180
180(defun nsm-save-fingerprint-maybe (host port status &rest _) 181(defun nsm-save-fingerprint-maybe (host port status &rest _)
181 "Save the certificate's fingerprint. 182 "Save the certificate's fingerprint.