Το HTTPS δεν είναι πάντα τόσο ασφαλές όσο φαίνεται. Ευπάθειες που εντοπίστηκαν στο 5,5% των ιστοτόπων HTTPS

Το HTTPS δεν είναι πάντα τόσο ασφαλές όσο φαίνεται. Ευπάθειες που εντοπίστηκαν στο 5,5% των ιστοτόπων HTTPS
Ένας από τους κορυφαίους ιστότοπους της Alexa (κεντρικός κύκλος), με ασφάλεια μέσω HTTPS, με υποτομείς (γκρι) και εξαρτήσεις (λευκό), μεταξύ των οποίων υπάρχουν ευάλωτοι (διακεκομμένη σκίαση)

Σήμερα, το εικονίδιο ασφαλούς σύνδεσης HTTPS έχει γίνει τυπικό και ακόμη απαραίτητο χαρακτηριστικό οποιουδήποτε σοβαρού ιστότοπου. Αν πιστοποιητικό λείπει, σχεδόν όλα τα πρόσφατα προγράμματα περιήγησης εμφανίζουν μια προειδοποίηση ότι η σύνδεση με τον ιστότοπο "δεν είναι ασφαλής" και δεν συνιστούμε τη μεταφορά εμπιστευτικών πληροφοριών σε αυτό.

Αλλά αποδεικνύεται ότι η παρουσία μιας "κλειδαριάς" στη γραμμή διευθύνσεων δεν εγγυάται πάντα προστασία. Έλεγχος 10 κορυφαίων τοποθεσιών από την αξιολόγηση, η Alexa έδειξε ότι πολλά από αυτά υπόκεινται σε κρίσιμα τρωτά σημεία στα πρωτόκολλα SSL / TLS, συνήθως μέσω υποτομέων ή εξαρτήσεων. Σύμφωνα με τους συντάκτες της μελέτης, η πολυπλοκότητα των σύγχρονων διαδικτυακών εφαρμογών αυξάνει σημαντικά την επιφάνεια επίθεσης.

Αποτελέσματα της μελέτης

Η μελέτη διεξήχθη από ειδικούς από το Πανεπιστήμιο της Βενετίας Ca' Foscari (Ιταλία) και το Τεχνικό Πανεπιστήμιο της Βιέννης. Θα παρουσιάσουν μια λεπτομερή έκθεση στο 40ο Συμπόσιο IEEE για την Ασφάλεια και την Προστασία Προσωπικών Δεδομένων, που θα πραγματοποιηθεί 20-22 Μαΐου 2019 στο Σαν Φρανσίσκο.

Οι κορυφαίοι 10 ιστότοποι HTTPS της λίστας Alexa και οι 000 σχετικοί κεντρικοί υπολογιστές δοκιμάστηκαν. Ευάλωτες κρυπτογραφικές διαμορφώσεις εντοπίστηκαν σε 90 κεντρικούς υπολογιστές, δηλαδή περίπου το 816% του συνόλου:

  • 4818 ευάλωτο στο MITM
  • 733 είναι ευάλωτα σε πλήρη αποκρυπτογράφηση TLS
  • 912 είναι ευάλωτα σε μερική αποκρυπτογράφηση TLS

898 ιστότοποι είναι εντελώς ανοιχτοί στο hacking, δηλαδή επιτρέπουν την εισαγωγή ξένων σεναρίων και 977 ιστότοποι φορτώνουν περιεχόμενο από ελάχιστα προστατευμένες σελίδες με τις οποίες μπορεί να αλληλεπιδράσει ένας εισβολέας.

Οι ερευνητές τονίζουν ότι μεταξύ των 898 «εντελώς παραβιασμένων» πόρων είναι τα ηλεκτρονικά καταστήματα, οι χρηματοοικονομικές υπηρεσίες και άλλοι μεγάλοι ιστότοποι. 660 από τους 898 ιστότοπους κατεβάζουν εξωτερικά σενάρια από ευάλωτους κεντρικούς υπολογιστές: αυτή είναι η κύρια πηγή κινδύνου. Σύμφωνα με τους συγγραφείς, η πολυπλοκότητα των σύγχρονων διαδικτυακών εφαρμογών αυξάνει σημαντικά την επιφάνεια επίθεσης.

Βρέθηκαν επίσης και άλλα προβλήματα: το 10% των φορμών εξουσιοδότησης έχουν προβλήματα με την ασφαλή μετάδοση πληροφοριών, η οποία απειλεί να διαρρεύσει κωδικούς πρόσβασης, 412 ιστότοποι επιτρέπουν την υποκλοπή cookies και την παραβίαση περιόδων σύνδεσης και 543 ιστότοποι υπόκεινται σε επιθέσεις στην ακεραιότητα των cookie (μέσω υποτομέων) .

Το πρόβλημα είναι ότι τα τελευταία χρόνια στα πρωτόκολλα και το λογισμικό SSL/TLS εντόπισε μια σειρά από τρωτά σημεία: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) και Heartbleed (CVE-2014-0160). Για προστασία από αυτά, απαιτούνται ορισμένες ρυθμίσεις από την πλευρά του διακομιστή και του πελάτη για να αποφευχθεί η χρήση παλιών ευάλωτων εκδόσεων. Αλλά αυτή είναι μια μάλλον μη τετριμμένη διαδικασία, επειδή τέτοιες ρυθμίσεις περιλαμβάνουν την επιλογή από ένα εκτεταμένο σύνολο κρυπτογράφησης και πρωτοκόλλων, τα οποία είναι αρκετά δύσκολο να κατανοηθούν. Δεν είναι πάντα σαφές ποιες σουίτες και πρωτόκολλα κρυπτογράφησης θεωρούνται «αρκετά ασφαλή».

Προτεινόμενες ρυθμίσεις

Δεν υπάρχει κανένας επίσημα εγκεκριμένος και συμφωνημένος κατάλογος προτεινόμενων ρυθμίσεων HTTPS. Ετσι, Mozilla SSL Configuration Generator προσφέρει πολλές επιλογές διαμόρφωσης, ανάλογα με το απαιτούμενο επίπεδο προστασίας. Για παράδειγμα, εδώ είναι οι προτεινόμενες ρυθμίσεις για έναν διακομιστή nginx 1.14.0:

Σύγχρονη λειτουργία

Παλαιότεροι υποστηριζόμενοι πελάτες: Firefox 27, Chrome 30, IE 11 σε Windows 7, Edge, Opera 17, Safari 9, Android 5.0 και Java 8

server {
listen 80 default_server;
listen [::]:80 default_server;

# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;


# modern configuration. tweak to your needs.
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver <IP DNS resolver>;

....
}

Μεσαία υποστήριξη

Παλαιότεροι υποστηριζόμενοι πελάτες: Firefox 1, Chrome 1, IE 7, Opera 5, Safari 1, Windows XP IE8, Android 2.3, Java 7

server {
listen 80 default_server;
listen [::]:80 default_server;

# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /path/to/dhparam.pem;

# intermediate configuration. tweak to your needs.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver <IP DNS resolver>;

....
}

Παλιά υποστήριξη

Παλαιότεροι υποστηριζόμενοι πελάτες: Windows XP IE6, Java 6

server {
listen 80 default_server;
listen [::]:80 default_server;

# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /path/to/dhparam.pem;

# old configuration. tweak to your needs.
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver <IP DNS resolver>;

....
}

Συνιστάται να χρησιμοποιείτε πάντα την πλήρη σειρά κρυπτογράφησης και την πιο πρόσφατη έκδοση του OpenSSL. Η σουίτα κρυπτογράφησης στις ρυθμίσεις διακομιστή καθορίζει την προτεραιότητα στην οποία θα χρησιμοποιηθούν, ανάλογα με τις ρυθμίσεις πελάτη.

Η έρευνα δείχνει ότι δεν αρκεί απλώς να εγκαταστήσετε ένα πιστοποιητικό HTTPS. "Ενώ δεν χειριζόμαστε τα cookies όπως κάναμε το 2005 και το "αξιοπρεπές TLS" έχει γίνει συνηθισμένο, αποδεικνύεται ότι αυτά τα βασικά πράγματα δεν αρκούν για να εξασφαλίσουν έναν εκπληκτικά μεγάλο αριθμό πολύ δημοφιλών τοποθεσιών." λένε οι συγγραφείς του έργου. Για να προστατεύσετε αξιόπιστα το κανάλι μεταξύ του διακομιστή και του πελάτη, πρέπει να παρακολουθείτε προσεκτικά την υποδομή από τους δικούς σας υποτομείς και κεντρικούς υπολογιστές τρίτων από τους οποίους παραδίδεται περιεχόμενο για τον ιστότοπο. Ίσως έχει νόημα να παραγγείλετε έλεγχο από κάποια τρίτη εταιρεία που ειδικεύεται στην ασφάλεια πληροφοριών.

Το HTTPS δεν είναι πάντα τόσο ασφαλές όσο φαίνεται. Ευπάθειες που εντοπίστηκαν στο 5,5% των ιστοτόπων HTTPS

Πηγή: www.habr.com