Сегодня технологии Open Source по факту присутствуют едва ли не во всех продуктах и сервисах, предлагаемых крупнейшими технологическими и интернет-компаниями по всему миру. По данным исследования Black Duck, 96% софта, который в наше время применяют предприятия, содержит открытые компоненты. Сложнейшие проекты с открытым кодом (например, Hadoop или Docker) имеют решающее значение для создания современных решений, о чем говорит тот факт, что тысячи высококвалифицированных инженеров жертвуют своим временем ради создания критически важных компонентов.
К сожалению, природа Open Source не лишена недостатков — эксперты довольно часто встречают в открытом софте баги и уязвимости, которые остаются незамеченными на протяжении десятилетий. Несмотря на то, что существуют программы для «отлова» уязвимостей, такие как Google Patch Rewards, Facebook Whitehat и Google Vulnerability Reward Program, значительная их часть по-прежнему ускользает от внимания технически подкованной общественности.
Как пишет портал ZDNet, не все баги и вирусы в равной степени опасные. Так, к числу безобидных можно отнести «уязвимость» Chaos, которая была обнаружена компанией GoSecure. Примечателен механизм работы «вируса», который ее использовал: он требовал от администраторов серверов сменить пароли SSH и root, если они не отвечали «стандартам безопасности Chaos», на более сложные. Однако уже встречалось немало случаев, когда системы с открытым кодом и перемежающееся с ним ПО столкнулись с реальными проблемами.
Подобная история всплыла в 2014 г. с американским кредитным бюро Equifax. Компания стала жертвой утечки данных 145,5 млн. американцев, которые «поделились» со злоумышленниками номерами социального страхования, датами рождения, домашними адресами, данными водительских прав. В качестве виновника утечки Equifax обозначила Open Source-проект Apache Struts, чьим серверным ПО компания пользовалась. В ответ на предъявленные обвинения Комитет по управлению проектами Apache Struts заявил, что серверы Equifax были взломаны либо из-за того, что она не закрыла уязвимость на своих серверах, хотя патч для нее существовал, либо хакеры проникли в сеть жертвы через неустановленную уязвимость (т. н. уязвимость нулевого дня).
Как показало дальнейшее развитие событий, это была именно первая из выдвинутых Apache Struts версий, а уязвимость (CVE-2017-5638), от которой пострадали клиенты Equifax, была выявлена двумя месяцами ранее командой US CERT и приблизительно в то же время к ней был выпущен патч, однако сетевые администраторы Equifax так и не удосужились его установить.
Нужно заметить, что обвинять открытое ПО в том, что оно содержит большое количество уязвимостей было бы опрометчиво, поскольку часть ответственности несут организации, не желающие в разумные сроки устанавливать патчи безопасности, особенно это важно в случае критически важных багов. Не исключен вариант, что существуют пользователи, которые в принципе не знают о том, какие компоненты Open Source взаимодействуют с их системами и какой механизм обновления они используют. Инцидент с Equifax подчеркнул важность поддержания систем в актуальном состоянии, но есть и другие баги с открытым кодом, которые компании по каким-то причинам не закрывают.
Еще одной уязвимостью, которая наделала много шума, была HeartBleed (CVE-2014-0160). Это уязвимость в безопасности программной библиотеки OpenSSL (открытая реализация протокола шифрования SSL/TLS), которая позволяла хакерам получить доступ к содержимому оперативной памяти серверов, в которых в этот момент могли содержаться приватные данные пользователей различных веб-сервисов. OpenSSL выступает в качестве стандартной библиотеки с открытым кодом для веб-серверов Apache и NGINX. По данным исследовательской компании Netcraft, уязвимости CVE-2014-0160 могли быть подвержены около 500 тыс. веб-сайтов.
Уязвимость позволяет взломщику получить доступ к 64 кб оперативной памяти сервера и осуществлять атаку вновь и вновь вплоть до полной потери данных. Это означает, что утечке подвержены не только логины и пароли, но и данные файлов cookie, которые веб-серверы и сайты используют для отслеживания действий пользователя и упрощения авторизации. Периодические атаки могут дать доступ и к более серьезной информации, такой как приватные ключи шифрования сайта, используемые для шифрования трафика. Используя этот ключ, злоумышленник может подменить исходный сайт и красть самые разные виды персональных данных, такие как номера кредитных карт или частная переписка. Несмотря на то, что патч к HeartBleed вышел 7 апреля 2014 г., в прошлом году эксперты насчитали 200 тыс. серверов, которые его не получили.
Уязвимость ShellShock (CVE-2014-6271) уже более двух десятилетий присутствует в командной оболочке Bash, которая по умолчанию устанавливается в Linux и MacOS X. Именно распространённость Bash является главной причиной того, почему Shellshock столь опасна. Основная опасность заключается в возможности произвольно задать переменные среды внутри интерпретатора Bash, которая задает определение функций. Проблемы начинаются в тот момент, когда Bash продолжает обрабатывать команды интерпретатора после определения функции, что позволяет осуществить атаку с внедрением кода.
Получение доступа к интерпретатору всегда было большой победой для атакующего, потому что это равнозначно получению контроля над сервером (с соответствующими правами). Доступ ко внутренним данным, перенастройка окружения, распространение зловредов и т. д. Возможности почти безграничны и автоматизируемы. С момента раскрытия CVE-2014-6271 прошло уже несколько лет, но она все еще вызывает беспокойство экспертов ИБ. По данным исследователей IBM
В 2016 г. сообщество Open Source узнало об опасной уязвимости (CVE-2016-0800), позволяющей совершить новый вид атаки на HTTPS — DROWN (Decrypting RSA with Obsolete and Weakened eNcryption) при помощи дешифровки TLS-трафика клиента, если на серверной стороне не отключена поддержка протокола SSLv2 во всех серверах, оперирующих одним и тем же приватным ключом. Как выяснили ИБ-эксперты, этой уязвимости подвержены 25% из миллиона самых посещаемых веб-сайтов, или 22% из всех просканированных серверов, использующих сертификаты, выданные публичными центрами сертификации. Масштаб уязвимости усугубляется двумя устаревшими версиями реализации OpenSSL, которые до сих пор работают на многих веб-серверах.
В качестве примера для подражания в смысле гибкости закрытия брешей можно привести Red Hat. Согласно недавнему опросу Snyk, компания устраняет 69% уязвимостей в первый же день после их публичного обнародования, на протяжении 14 дней этот показатель доходит до 90%. Но в целом картина гораздо хуже: рассылкой уведомлений с информацией об раскрытых уязвимостях занимается 25% Open Source-разработчиков, идентификатор уязвимости (файл CVE) выпускают только 10% программистов.
Компоненты с открытым кодом задействованы во множестве современных служб и систем, и без них мир технологий не был бы таким, каким мы его знаем сегодня. Однако компаниям не следует забывать о том, что в открытом ПО регулярно выявляются бреши в безопасности, которые, когда о них становится известно публично, необходимо оперативно устранять. Доказано, что вовремя незакрытая уязвимость обходится предприятию в среднем в 3,86 млн. долл.