HTTPS her zaman göründüğü kadar güvenli değildir. HTTPS sitelerinin %5,5'inde bulunan güvenlik açıkları

HTTPS her zaman göründüğü kadar güvenli değildir. HTTPS sitelerinin %5,5'inde bulunan güvenlik açıkları
Alexa'nın en iyi sitelerinden biri (ortadaki daire), HTTPS tarafından korunan, alt alan adları (gri) ve bağımlılıkları (beyaz) olan ve aralarında savunmasız olanların da bulunduğu (kesikli gölgeleme)

Günümüzde HTTPS güvenli bağlantı simgesi, herhangi bir ciddi sitenin standardı ve hatta gerekli bir özelliği haline geldi. Eğer sertifika eksik, neredeyse tüm yeni tarayıcılar şu uyarıyı gösteriyor: siteye bağlantı "güvenli değil" ve gizli bilgilerin kendisine aktarılmasını önermeyin.

Ancak adres çubuğunda bir "kilit" bulunmasının her zaman korumayı garanti etmediği ortaya çıktı. 10 önde gelen site kontrol ediliyor Derecelendirmeden Alexa, birçoğunun genellikle alt alanlar veya bağımlılıklar aracılığıyla SSL / TLS protokollerinde kritik güvenlik açıklarına maruz kaldığını gösterdi. Çalışmanın yazarlarına göre modern web uygulamalarının karmaşıklığı, saldırı yüzeyini büyük ölçüde artırıyor.

Araştırma sonuçları

Çalışma, Venedik Üniversitesi Ca' Foscari (İtalya) ve Viyana Teknik Üniversitesi'nden uzmanlar tarafından yürütülmüştür. 40-20 Mayıs 22 tarihlerinde San Francisco'da yapılacak olan 2019. IEEE Güvenlik ve Gizlilik Sempozyumunda detaylı bir rapor sunacaklar.

En iyi 10 Alexa listesi HTTPS sitesi ve 000 ilgili ana bilgisayar test edildi. 90 ana bilgisayarda, yani toplamın yaklaşık %816'inde güvenlik açığı bulunan kriptografik yapılandırmalar tespit edildi:

  • 4818 MITM'ye karşı savunmasız
  • 733, tam TLS şifre çözmeye karşı savunmasızdır
  • 912, kısmi TLS şifre çözmeye karşı savunmasızdır

898 site bilgisayar korsanlığına tamamen açıktır, yani yabancı komut dosyalarının eklenmesine izin verir ve 977 site, bir saldırganın etkileşim kurabileceği, kötü korunan sayfalardan içerik yükler.

Araştırmacılar, "tamamen ele geçirilmiş" 898 kaynak arasında çevrimiçi mağazalar, finansal hizmetler ve diğer büyük sitelerin bulunduğunu vurguluyor. 660 siteden 898'ı savunmasız ana bilgisayarlardan harici komut dosyaları indirir: bu, ana tehlike kaynağıdır. Yazarlara göre, modern web uygulamalarının karmaşıklığı saldırı yüzeyini büyük ölçüde artırıyor.

Diğer sorunlar da bulundu: Yetkilendirme formlarının %10'unda bilgilerin güvenli iletimiyle ilgili sorunlar var, bu da şifreleri sızdırma tehdidi oluşturuyor, 412 site çerezlerin ele geçirilmesine ve oturumun ele geçirilmesine izin veriyor ve 543 site çerez bütünlüğüne yönelik saldırılara maruz kalıyor (alt alan adları aracılığıyla) .

Sorun şu ki, son yıllarda SSL / TLS protokolleri ve yazılımları bir dizi güvenlik açığı belirledi: POODLE (CVE-2014-3566), CANAVAR (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) ve Heartbleed (CVE-2014-0160). Bunlara karşı korunmak için, savunmasız eski sürümleri kullanmaktan kaçınmak için sunucu ve istemci tarafında bir dizi ayar gereklidir. Ancak bu oldukça önemsiz bir prosedürdür, çünkü bu tür ayarlar, anlaşılması oldukça zor olan kapsamlı bir dizi şifre ve protokol arasından seçim yapmayı içerir. Hangi şifre paketlerinin ve protokollerin "yeterince güvenli" olduğu her zaman net değildir.

Önerilen ayarlar

Önerilen HTTPS ayarları listesi üzerinde resmi olarak onaylanmış ve üzerinde anlaşmaya varılmış kimse yoktur. Bu yüzden, Mozilla SSL Yapılandırma Oluşturucu gereken koruma düzeyine bağlı olarak çeşitli yapılandırma seçenekleri sunar. Örneğin, bir nginx 1.14.0 sunucusu için önerilen ayarlar şunlardır:

Modern mod

Desteklenen en eski istemciler: Windows 27, Edge, Opera 30, Safari 11, Android 7 ve Java 17 üzerinde Firefox 9, Chrome 5.0, IE 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>;

....
}

Orta destek

Desteklenen en eski istemciler: 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>;

....
}

Eski Destek

Desteklenen en eski istemciler: 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>;

....
}

Her zaman tam şifre paketini ve OpenSSL'nin en son sürümünü kullanmanız önerilir. Sunucu ayarlarındaki şifre takımı, istemci ayarlarına bağlı olarak kullanılacakları önceliği belirtir.

Araştırmalar, yalnızca bir HTTPS sertifikası kurmanın yeterli olmadığını gösteriyor. "Çerezlerle 2005'teki gibi ilgilenmesek ve 'düzgün TLS' olağan hale gelse de, bu temel şeylerin şaşırtıcı derecede çok sayıda çok popüler siteyi güvence altına almak için yeterli olmadığı ortaya çıktı." diyorlar ki işin yazarları. Sunucu ile istemci arasındaki kanalı güvenilir bir şekilde korumak için, kendi alt alanlarınızdan ve site içeriğinin teslim edildiği üçüncü taraf ana bilgisayarlardan gelen altyapıyı dikkatli bir şekilde izlemeniz gerekir. Bilgi güvenliği konusunda uzmanlaşmış üçüncü taraf bir şirketten denetim siparişi vermek mantıklı olabilir.

HTTPS her zaman göründüğü kadar güvenli değildir. HTTPS sitelerinin %5,5'inde bulunan güvenlik açıkları

Kaynak: habr.com