HTTPS әрқашан көрінетіндей қауіпсіз бола бермейді. HTTPS сайттарының 5,5% осалдықтары табылды

HTTPS әрқашан көрінетіндей қауіпсіз бола бермейді. HTTPS сайттарының 5,5% осалдықтары табылды
HTTPS арқылы қорғалған, қосалқы домендері (сұр) және тәуелділіктері (ақ) бар Alexa-ның ең жақсы сайттарының бірі (орталық шеңбер), олардың арасында осалдары бар (сызықша көлеңкелеу)

Қазіргі уақытта HTTPS қауіпсіз қосылым белгішесі кез келген маңызды сайттың стандартты және тіпті қажетті атрибуты болды. Егер куәлік жоқ, соңғы браузерлердің барлығы дерлік бұл туралы ескертуді көрсетеді сайтқа қосылу «қауіпсіз» және оған құпия ақпаратты беруді ұсынбаңыз.

Бірақ мекенжай жолағында «құлыптың» болуы әрқашан қорғауға кепілдік бермейтіні белгілі болды. 10 000 жетекші сайттарды тексеру рейтингтен Alexa олардың көпшілігі SSL / TLS хаттамаларында, әдетте ішкі домендер немесе тәуелділіктер арқылы маңызды осалдықтарға ұшырайтынын көрсетті. Зерттеу авторларының айтуынша, заманауи веб-қосымшалардың күрделілігі шабуылдың бетін айтарлықтай арттырады.

Зерттеу нәтижелері

Зерттеуді Венеция университетінің Ca' Foscari (Италия) мен Вена техникалық университетінің сарапшылары жүргізді. Олар 40 жылдың 20-22 мамырында Сан-Францискода өтетін 2019-шы IEEE қауіпсіздік және құпиялылық симпозиумында егжей-тегжейлі баяндама жасайды.

Ең жақсы 10 000 Alexa тізімі HTTPS сайттары мен 90 816 қатысты хосттар тексерілді. 5574 хостта осал криптографиялық конфигурациялар анықталды, яғни жалпы санының шамамен 5,5%:

  • 4818 MITM-ге осал
  • 733 толық TLS шифрын шешуге осал
  • 912 ішінара TLS шифрын шешуге осал

898 сайт бұзуға толығымен ашық, яғни олар бөгде сценарийлерді енгізуге мүмкіндік береді және 977 сайт шабуылдаушы әрекеттесе алатын нашар қорғалған беттерден мазмұнды жүктейді.

Зерттеушілер 898 «толығымен бұзылған» ресурстардың арасында интернет-дүкендер, қаржылық қызметтер және басқа да ірі сайттар бар екенін атап көрсетеді. 660 сайттың 898-ы осал хосттардан сыртқы сценарийлерді жүктейді: бұл қауіптің негізгі көзі. Авторлардың айтуынша, заманауи веб-қосымшалардың күрделілігі шабуылдың бетін айтарлықтай арттырады.

Басқа да мәселелер анықталды: авторизациялау нысандарының 10%-ында құпия сөздердің ағып кету қаупі төнетін ақпаратты қауіпсіз тасымалдау мәселелері бар, 412 сайт cookie файлдарын ұстауға және сеанстарды ұрлауға мүмкіндік береді, 543 сайт cookie файлының тұтастығына шабуылдарға ұшырайды (субдомендер арқылы) .

Мәселе мынада, соңғы жылдары SSL/TLS хаттамалары мен бағдарламалық қамтамасыз ету бірқатар осалдықтарды анықтады: ПУДЛ (CVE-2014-3566), BEAST (CVE-2011-3389), ҚЫЛМЫС (CVE-2012-4929), BREACH (CVE-2013-3587) және Heartbleed (CVE-2014-0160). Олардан қорғау үшін ескі осал нұсқаларды пайдаланбау үшін сервер мен клиент жағында бірқатар параметрлер қажет. Бірақ бұл өте тривиальды емес процедура, өйткені мұндай параметрлер түсіну өте қиын шифрлар мен хаттамалардың кең жиынтығынан таңдауды қамтиды. Қандай шифрлар жинағы мен хаттамалары «жеткілікті қауіпсіз» деп саналатыны әрқашан анық бола бермейді.

Ұсынылған параметрлер

Ұсынылған HTTPS параметрлерінің ресми мақұлданған және келісілген тізімі жоқ. Сонымен, Mozilla SSL конфигурация генераторы қажетті қорғаныс деңгейіне байланысты бірнеше конфигурация опцияларын ұсынады. Мысалы, мұнда nginx 1.14.0 сервері үшін ұсынылған параметрлер берілген:

Қазіргі режим

Қолдау көрсетілетін ең ескі клиенттер: Windows 27, Edge, Opera 30, Safari 11, Android 7 және Java 17 жүйелеріндегі 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>;

....
}

Орташа қолдау

Қолдау көрсетілетін ең ескі клиенттер: 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 сертификатын орнату жеткіліксіз. «Біз 2005 жылғыдай cookie файлдарымен жұмыс істемейміз және «әдепті TLS» үйреншікті жағдайға айналғанымен, бұл қарапайым нәрселер өте танымал сайттардың таңқаларлық көп санын қорғау үшін жеткіліксіз болып шықты», олар айтады жұмыстың авторлары. Сервер мен клиент арасындағы арнаны сенімді қорғау үшін сайтқа арналған мазмұн жеткізілетін өзіңіздің ішкі домендеріңізден және үшінші тарап хосттарынан инфрақұрылымды мұқият бақылауыңыз керек. Ақпараттық қауіпсіздікке маманданған үшінші тарап компаниясына аудитке тапсырыс беру мағынасы бар шығар.

HTTPS әрқашан көрінетіндей қауіпсіз бола бермейді. HTTPS сайттарының 5,5% осалдықтары табылды

Ақпарат көзі: www.habr.com