CrowdStrike наняла две внешние компании по безопасности для проверки функциональности Falcon, которая вызвала глобальный сбой в работе ИТ в прошлом месяце, но, возможно, им не придется многого искать, поскольку CrowdStrike выявила простую ошибку, которая привела к сбою.
Новости о внешней проверке появились в анализе первопричин [PDF], опубликованном во вторник поставщиком информационной безопасности.
Как мы узнали из более раннего отчета CrowdStrike о некорректном обновлении Falcon, которое привело к циклической загрузке миллионов машин Windows по всему миру, проблема началась еще в феврале.
Именно тогда разработчик добавил в Falcon, который является его набором для обнаружения угроз, возможность обнаруживать и блокировать новую эксплуатацию именованных каналов и других механизмов межпроцессного взаимодействия (IPC) Windows; наблюдение за такими атаками в реальных условиях является весомым признаком того, что система была скомпрометирована, и это следует отметить и остановить.
Эта новая функция обнаружения прошла обычную разработку и тестирование, прежде чем CrowdStrike внедрила ее в качестве нового «типа шаблона» в клиентские установки Falcon в версии сенсора 7.11.
Эти типы шаблонов, как следует из названия: Шаблоны. Это обобщенные программные процедуры, каждая из которых определяет различный тип потенциально опасной активности в системе. Чтобы Falcon мог использовать их для обнаружения определенных угроз, CrowdStrike определяет и выпускает так называемые «экземпляры шаблонов», которые настраивают код шаблона для идентификации определенных форм эксплуатации, вторжений и других плохих вещей.
CrowdStrike объясняет эту архитектуру следующим образом: «Типы шаблонов представляют собой сенсорную возможность, которая обеспечивает новую телеметрию и обнаружение, а их поведение во время выполнения динамически настраивается экземпляром шаблона».
С марта CrowdStrike переместил из своего облака в удаленные развертывания Falcon несколько экземпляров шаблонов, которые использовали код типа шаблона IPC для обнаружения определенных угроз. Эти обновления, доставленные как так называемый Rapid Response Content, хранились в файле канала под номером 291. Falcon загружал обновленный файл канала 291, когда он становился доступным, и анализировал его данные.
Экземпляры шаблонов в этих данных сообщат Falcon, как использовать соответствующие типы шаблонов для обнаружения конкретных угроз. Экземпляры будут делать это, передавая параметры в формате регулярных выражений в свой тип шаблона. Типы шаблонов с помощью интерпретатора контента на основе C++ используют эти параметры регулярных выражений — да, регулярных выражений — в отношении любых ресурсов, которые типы отслеживают, чтобы определить, было ли выполнено успешное обнаружение.
Анализ первопричин позволяет глубже понять, что пошло не так дальше:
Новый тип шаблона IPC определил 21 поле входных параметров, но код интеграции, который вызвал интерпретатор контента с экземплярами шаблонов файла канала 291, предоставил только 20 входных значений для сопоставления.
Это несоответствие количества параметров избежало многоуровневой проверки и тестирования сборки, поскольку оно не было обнаружено в процессе тестирования выпуска датчика, стресс-тестирования типа шаблона (с использованием экземпляра тестового шаблона) или первых нескольких успешных развертываний экземпляров шаблона IPC в полевых условиях.
Отчасти это было связано с использованием критериев соответствия подстановочных знаков для 21-го входа во время тестирования и в начальных экземплярах шаблона IPC.
Насколько мы можем судить, это означает: тип шаблона, обнаруживающий злонамеренное использование IPC, имел 21 возможное входное значение для настройки своих действий, хотя код, подключающий параметры экземпляра файла канала в интерпретатор для использования с этим типом шаблона, предоставил только 20. Для в начальных экземплярах это не было проблемой, поскольку экземпляры не заставляли интерпретатор использовать отсутствующий 21-й параметр. Казалось, все в порядке. При раннем тестировании и проверке это также не учитывалось.
Затем, как ранее объяснил CrowdStrike, еще два экземпляра шаблона IPC были автоматически развернуты для пользователей Falcon в этом роковом обновлении файла канала 291 19 июля.
Один из этих случаев впервые приказал интерпретатору использовать 21-й параметр, но этому коду было предоставлено только 20. Это привело к тому, что интерпретатор контента, работающий, к сожалению, в режиме ядра Windows, использовал неинициализированное поле — отсутствующий 21-й параметр — в качестве указателя, что привело к его касанию нераспределенной памяти и в конечном итоге к сбою операционной системы.
«Попытка доступа к 21-му значению привела к чтению памяти за пределами входного массива данных и к сбою системы», — резюмировал отдел безопасности в своем анализе.
CrowdStrike обновил свой компилятор содержимого датчиков, чтобы гарантировать, что в будущих типах шаблонов будет получено правильное количество входных данных от экземпляров, и это было запущено в производство 27 июля.
CrowdStrike также написала, что добавила проверку границ времени выполнения в интерпретатор контента для обновлений Rapid Response, чтобы гарантировать, что он не считывает снова конец входного массива. Это исправление и еще одна проверка правильности размера массива переносятся на все датчики Windows версии 7.11 и выше с помощью исправления программного обеспечения датчиков. Релиз будет доступен к 9 августа.
Кроме того, наказанный поставщик средств безопасности проводит дополнительное внутреннее тестирование, чтобы гарантировать, что ошибочные файлы не будут переданы клиентам Falcon в будущем. Несмотря на несоответствие параметров, механизм проверки CrowdStrike упустил эту ошибку и позволил передать пользователям ошибочный файл канала.
Кроме того, как CrowdStrike отметил в своем предыдущем анализе, каждый экземпляр шаблона отныне будет развертываться для клиентов поэтапно, а не будет отправляться всем людям сразу. Это сократит радиус поражения любых дальнейших неисправных обновлений.
Стоит отметить, что инвесторы предъявляют иски компании за то, что она изначально не использовала этот тип поэтапного подхода.
«Заглядывая вперед, CrowdStrike сосредоточена на использовании уроков, извлеченных из этого инцидента, для лучшего обслуживания наших клиентов», — заявил представитель. «CrowdStrike остается непоколебимой в своей миссии по защите клиентов и предотвращению нарушений».
Но не настолько непоколебимой, чтобы называть имена партнеров, которых она наняла для проверки своего программирования. Эти проверки уже начались, и они сосредоточены на коде и процессах, которые привели к фиаско 19 июля.
«Мы не предоставляем информацию о поставщиках, которые выполняют для нас работу, за исключением той, которая указана в анализе основных причин», — сообщил представитель CrowdStrike The Register. ®