Hi all,

we have encountered what we think might be a sloppy check of the server cert by 
the openconnect client.
AFAIU, --cafile allows the user to pin the CA that has signed off the server 
cert to a certain root cert.
This is supposed to enable a much stricter server identity check than one gets 
with the
default behavior of trusting any known system cert (e.g. any of the root certs 
in /etc/ssl/certs).

A while ago, we changed our CA from T-Telesec to USERTrust,
so the CA file to check against should be
/etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem on current 
Debian/Ubuntu, with SHA-256 Fingerprint
E7:93:C9:B0:2F:D8:AA:13:E2:1C:31:22:8A:CC:B0:81:19:64:3B:74:9C:89:89:64:B1:74:6D:46:C3:D4:CB:D2

But using the old CA file (or any other one of the system certs) will not cause 
openconnect to complain:
------------------------------------------------------------ START 
----------------------------------------------------------
user@linux> openconnect --authgroup=unimr-vpn-staff-Passwort+2FA -u pauly 
--cafile=/etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem  vpn.uni-marburg.de
POST https://vpn.uni-marburg.de/
Connected to 137.248.1.225:443
SSL negotiation with vpn.uni-marburg.de
Connected to HTTPS on vpn.uni-marburg.de with ciphersuite 
(TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA512)-(AES-256-GCM)
Got HTTP response: HTTP/1.1 404 Not Found
Unexpected 404 result from server
GET https://vpn.uni-marburg.de/
Verbunden mit 137.248.1.225:443
SSL negotiation with vpn.uni-marburg.de
Connected to HTTPS on vpn.uni-marburg.de with ciphersuite 
(TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA512)-(AES-256-GCM)
Got HTTP response: HTTP/1.0 302 Object Moved
GET https://vpn.uni-marburg.de/+webvpn+/index.html
SSL negotiation with vpn.uni-marburg.de
Connected to HTTPS on vpn.uni-marburg.de with ciphersuite 
(TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA512)-(AES-256-GCM)
Please enter your username and password.
Please enter your username and password.
Password:

------------------------------------------------------------ STOP 
----------------------------------------------------------

OTOH, using --no-system-trust without --servercert does elicit a prompt to 
manually accept the server cert,
as do name/SAN mismatches (and presumably expired or self-signed server certs, 
not tested yet).
But this is would apply to a different situation. Pinning to root CA + SAN is a 
highly important
configuration option that can ensure for years your clients only connect to the 
right thing,
and still you can update your server cert every year or so.

Have we missed something, or is this a security issue?

Cheers, Martin

--
  Dr. Martin Pauly     Phone:  +49-6421-28-23527
  HRZ Univ. Marburg    Fax:    +49-6421-28-26994
  Hans-Meerwein-Str.   E-Mail: pa...@hrz.uni-marburg.de
  D-35032 Marburg

Attachment: smime.p7s
Description: Kryptografische S/MIME-Signatur

_______________________________________________
openconnect-devel mailing list
openconnect-devel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/openconnect-devel

Reply via email to