Агентство кибербезопасности

Тысячи разработчиков намеренно отключают проверку SSL-сертификатов – и подвергают вас риску

Опубликовано at 14:01
524 0

Скотт Арцижевски из Paragon Initiative рассказал про «невидимую эпидемию»: многие разработчики плагинов и PHP-библиотек конфигурируют свой код, в частности, некоторые опции cURL. Таким образом, сотни тысяч плагинов для систем управления контентом (CMS) и PHP-библиотек намеренно отключают проверку SSL/TLS-сертификатов. И миллионы пользователей подвергаются реальному риску.

Арцижевски также указывает, что многие из этих плагинов и библиотек используются для установки соединения с серверами платежных сервисов, через которое впоследствии передается конфиденциальная финансовая информация. Проблема состоит в том, как многие разработчики CMS плагинов и PHP-библиотек конфигурируют свой код, в частности, некоторые опции cURL — утилиты командной строки, применяемой для передачи файлов по различным протоколам.

Арцижевски указывает, что многие разработчики отключают две функции cURL, поскольку они могут вызывать на серверах клиентов оповещения об ошибках, связанных с безопасностью. Речь идет функциях «CURLOPT_SSL_VERIFYHOST» и «CURLOPT_SSL_VERIFYPEER». При отключении первой опции cURL не будет проверять URL хоста, к которому подключается для загрузки или выгрузки данных. Если отключить вторую, то web-сайт будет принимать подключения к любым HTTPS-серверам, даже если они используют самоподписанный сертификат. Эти функции отключены, например, в большинстве плагинов для WordPress.

Эксперт отмечает, что нужно не ругать нерадивых разработчиков, а устранить причину появления ошибок, из-за которых разработчики предпочитают заранее отключать указанные функции. Эта причина в том, что , многие хостинговые сервисы не хранят список известных и действительных SSL/TLS-сертификатов, используемый cURL для сверки, или хранят его в разных областях сервера. В такой ситуации невозможно сконфигурировать настройки cURL универсальным образом, чтобы они подходили для всех серверов.

Арцижевски предлагает собственное решение проблемы :  создать PHP-библиотеку под названием Certainty (уверенность), которая с регулярными интервалами загружает файл cacert.pem с главной страницы cURL и сохраняет локально.

Related Post