Серьезная ошибка в широко используемом программном обеспечении с открытым исходным кодом под названием Log4j повергла ИТ-мир в столпотворение. Дыра даже не была обнародована месяц назад (на момент написания этой статьи), и все же аналитики по интернет-безопасности уже классифицировали ее как одну из самых больших уязвимостей в истории кибербезопасности.
По некоторым оценкам, например, это затрагивает около 93 процентов корпоративных облачных вычислительных сред по всему миру. Согласно источникам, цитируемым в Financial Times, по состоянию на 14 декабря было зафиксировано более 1,2 миллиона кибератак (со скоростью до 100 атак в минуту)—и, по крайней мере, по данным этих источников, “в ближайшие месяцы” конца не предвидится.
По мере того как отрасль пытается восполнить пробелы, Google обновила один из своих инструментов безопасности, чтобы помочь разработчикам с открытым исходным кодом выследить уязвимость и другие подобные ей.
Паника вокруг этой новой ошибки, получившей название Log4Shell, в первую очередь связана с ее абсолютной распространенностью. Инструмент, на который он нацелен, используется в огромном количестве приложений, а список затронутых услуг-это список ведущих технологических компаний. Природа уязвимости также позволяет злоумышленникам относительно просто запускать код, позволяющий им полностью контролировать целевые устройства.
“Нечеткость” бомбардирует программы случайными входными данными, вызывая ошибки, которые выявляют уязвимости в системе безопасности. Google теперь обновил свой инструмент размытия, чтобы отследить Log4Shell—название уязвимости в вездесущем коде Log4j от Apache.
Когда ошибка была раскрыта 9 декабря, ей была присвоена оценка серьезности 10 из 10 от Apache Software Foundation (ASF), некоммерческой организации, волонтеры которой разрабатывают Log4j. Хотя ASF выпустила исправления, устраняющие этот недостаток, на поиск и исправление каждого экземпляра могут потребоваться месяцы или даже годы. Этот инцидент вновь вызвал споры о том, насколько современная критическая вычислительная инфраструктура зависит от открытого исходного кода, который обычно поддерживается небольшими командами разработчиков с ограниченными ресурсами, работающих бесплатно в свободное время.
Несмотря на то, что нет серебряной пули, команда безопасности Google с открытым исходным кодом считает, что одним из потенциальных решений является предоставление разработчикам с открытым исходным кодом лучших инструментов для поиска ошибок. Один многообещающий подход называется “фаззинг”, который бомбардирует программы случайными или намеренно неверными входными данными, чтобы вызвать ошибки, которые выявляют проблемы со стабильностью или уязвимости в системе безопасности. С 2016 года Google предоставляет бесплатную непрерывную службу fuzzing под названием OSS-Fuzz для крупных проектов с открытым исходным кодом. И теперь компания сотрудничает с охранной фирмой Code Intelligence для обновления инструмента чтобы он мог выследить Log4Shell и другие уязвимости, которые зависят от одного и того же режима атаки.
“Мы пытаемся расширить возможности инструментов для поиска подобных уязвимостей, чтобы больше разработчиков могли защитить свои собственные базы кода”, – говорит Джонатан Метцман из Google. “Разработчику на самом деле не нужно думать о том, как фуззер их обнаруживает, он просто делает это за них”.
Учитывая сложность современного программного обеспечения, у разработчиков нет времени создавать каждый модуль с нуля, и поэтому они часто полагаются на программные компоненты с открытым исходным кодом, такие как Log4j. Поскольку программное обеспечение Java было разработано, Log4j ведет учет активности в приложениях, что может помочь отслеживать ошибки и проблемы с производительностью. В качестве примера Щелчок по мертвой ссылке или ввод неправильного URL-адреса , который обычно выдает сообщение об ошибке 404, относятся к числу действий, которые Log4j отслеживает для системных администраторов веб-домена. Таким образом, Log4j выполняет важную функцию для многих типов программного обеспечения, что является причиной повсеместного распространения этого инструмента.
Создание исправления-это только первый шаг к тому, чтобы взять кризис под контроль; теперь разработчикам и системным администраторам по всей отрасли приходится проверять свой код на наличие ошибок.
Но в прошлом месяце инженеры китайской технической фирмы Alibaba обнаружили, что они могут заставить Log4j регистрировать сообщение, содержащее строку вредоносного кода, которая запускает соединение с внешним сервером, находящимся под их контролем. Как только это соединение установлено, злоумышленник может удаленно запустить любой код, который он хочет, в целевой системе.
Исследователи Alibaba уведомили ASF, как только обнаружили ошибку, и дали им время для создания обновления, касающегося уязвимости, прежде чем раскрывать ее. С тех пор были также обнаружены и исправлены еще две более сложные для использования уязвимости в Log4j. Но создание исправления-это только первый шаг к тому, чтобы взять кризис под контроль; теперь разработчикам и системным администраторам по всей отрасли приходится проверять свой код на наличие ошибок.
“То, как сегодня строится программное обеспечение, очень похоже на слой за слоем”, – говорит Гэри Грегори, член комитета по управлению проектами ASF, ответственный за Log4j. “Таким образом, разработчики, приложения, компании могут даже не осознавать, используют ли они определенное программное обеспечение”.
Даже после того, как они обнаружили ошибку, у некоторых компаний есть строгие процессы, регулирующие, как они могут вносить обновления, что может задержать их способность решить проблему, говорит Грегори. Также, вероятно, найдутся компании, которые полагаются на старое программное обеспечение, которое больше не поддерживается или чьи поставщики сейчас не работают.
И хотя обновления, выпущенные ASF, полностью удалили функциональность, позволяющую инструменту Log4j подключаться к внешнему серверу, Грегори указывает, что это универсальная возможность, глубоко внедренная в Java. “Мы только что вырвали это”, – говорит он. “Но я держу пари, что люди будут искать в других программах уязвимости того же типа”.
Однако эта функциональность-именно то, что ищет обновленный fuzzer от Google, а это означает, что, помимо обнаружения Log4shell, он также должен уметь находить другие ошибки, использующие тот же режим атаки. Решение не является заменой более формальному тестированию безопасности, но OSS-Fuzz уже обнаружил более 7000 уязвимостей с момента своего запуска.
Метцман говорит, что у группы есть планы по дальнейшему расширению видов ошибок, которые также может обнаружить OSS-Fuzz, и считает, что этот подход может стать мощным инструментом для команд с открытым исходным кодом, не располагающих достаточными ресурсами. “Случайность размытия исследует множество состояний программы”, – говорит он. “Это очень хорошо для достижения такого рода неясных состояний, которые находятся глубоко в программе, и поиска там уязвимостей”.
Трудно сказать, может ли этот инструмент помочь выявить следующую серьезную уязвимость, говорит Метцман. Но он указывает, что исследователи показали, что fuzzing мог обнаружить ошибку Heartbleed, которая подожгла Интернет в 2014 году. Однако, если мы хотим обнаружить следующую серьезную уязвимость, нам необходимо предоставить больше поддержки разработчикам с открытым исходным кодом по всем направлениям, говорит Джон Хаммонд из охранной фирмы Huntress Labs. Его компания также выпустила инструмент для тестирования Log4Shell после раскрытия информации, но он считает, что более важной целью является повышение уровня образования и осведомленности о проблемах безопасности в сообществе с открытым исходным кодом. Если повезет, этот кризис даст импульс, говорит он.
“Возможно, это прольет свет на тот факт, что нам нужно немного больше любви к сообществу с открытым исходным кодом”, – добавляет он. “Потому что многое в нашем современном мире и технологиях, безусловно, лежит на их плечах”.