HTTPS is not always as secure as it seems. Vulnerabilities have been found in 5.5% of HTTPS sites.

HTTPS is not always as secure as it seems. Vulnerabilities have been found in 5.5% of HTTPS sites.
One of the top Alexa sites (central circle), protected by HTTPS, with subdomains (gray) and dependencies (white), among which there are vulnerabilities (dashed fill).

In today's world, the HTTPS secure connection icon has become a standard and even necessary attribute of any serious website. If Additionally, the dependency of Tor Browser on Mozilla's infrastructure can be noted. Recall that for Tor Browser users, due to a certificate issue, the bundled add-on NoScript, which provides an additional layer of protection, has been disabled. To restore it, it is sufficient to set the xpinstall.signatures.required = false option in about:config, but the very fact of the dependency of user-installed instances of Tor Browser on a third party, whose actions may disable additional levels of anonymity, raises questions. missing, almost all modern browsers show a warning that the connection to the site is 'not secure'. and recommend not transmitting confidential information to it.

But it turns out that the presence of a 'lock' in the address bar does not always guarantee protection. A check of 10,000 leading sites from the Alexa ranking showed: many of them are vulnerable to critical SSL/TLS protocol vulnerabilities, usually through subdomains or dependencies. According to the study authors, the complexity of modern web applications greatly increases the attack surface.

Research Results

The study was conducted by specialists from the Venetian University Ca' Foscari (Italy) and the Vienna University of Technology. They will present a detailed report at the 40th IEEE Symposium on Security and Privacy, which will take place from May 20 to 22, 2019, in San Francisco.

10,000 of the most popular HTTPS sites from the Alexa list and 90,816 associated hosts were checked. Vulnerable cryptographic configurations were found on 5,574 hosts, or about 5.5% of the total:

  • 4,818 are vulnerable to MITM
  • 733 are vulnerable to full TLS decryption
  • 912 are vulnerable to partial TLS decryption

898 sites are completely open to attacks, meaning they allow the injection of external scripts, while 977 sites load content from poorly protected pages that attackers can interact with.

Researchers emphasize that among the 898 'completely compromised' resources are online stores, financial services, and other major sites. 660 of the 898 sites load external scripts from vulnerable hosts: this is the main source of danger. According to the authors, the complexity of modern web applications greatly increases the attack surface.

Other issues have been identified: 10% of authorization forms have problems with secure information transmission, risking password leaks; 412 sites allow cookie interception and 'session hijacking'; and 543 sites are vulnerable to cookie integrity attacks (via subdomains).

The problem is that over the past years, vulnerabilities have been identified in the SSL/TLS protocols and software including a range of vulnerabilities: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587), and Heartbleed (CVE-2014-0160). Addressing these requires a range of server and client-side configurations to avoid using outdated vulnerable versions. However, this is a non-trivial process, since such settings involve choosing from an extensive set of ciphers and protocols, which can be quite complex to navigate. It's not always clear which exact sets of ciphers and protocols are considered 'secure enough.'

Recommended Settings

There is no officially approved and agreed-upon list of recommended HTTPS settings. For instance, Mozilla SSL Configuration Generator provides several configuration options depending on the required level of protection. For example, here are the recommended settings for nginx server 1.14.0:

Modern Mode

The oldest supported clients are: Firefox 27, Chrome 30, IE 11 on Windows 7, Edge, Opera 17, Safari 9, Android 5.0, and 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 ;

....
}

Intermediate Support

The oldest supported clients are: 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 ;

....
}

Legacy support

The oldest supported clients are: 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 ;

....
}

It is recommended to always use the full set of ciphers and the latest version of OpenSSL. The cipher suite in the server settings specifies the priority in which they will be used, based on client settings.

Research shows that simply installing an HTTPS certificate is not sufficient. "While we no longer handle cookies as we did in 2005, and 'proper TLS' has become commonplace, it turns out that these basic elements are inadequate for ensuring security on an astonishingly large number of very popular sites," — say the authors of the work. To reliably protect the channel between the server and the client, it is necessary to carefully monitor the infrastructure of both your own subdomains and third-party hosts from which content is delivered to the site. It may make sense to order an audit from an external company that specializes in information security.

HTTPS is not always as secure as it seems. Vulnerabilities have been found in 5.5% of HTTPS sites.

Source: habr.com

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster