Как стать автором
Обновить

CrowdStrike: BSOD на миллионах ПК с Windows произошёл из-за неправильной проверки файла с помощью тестового ПО компании

Время на прочтение6 мин
Количество просмотров11K
Всего голосов 11: ↑10 и ↓1+16
Комментарии101

Комментарии 101

неужели они избегут исков просто извинившись?

Это скорее стремление показать готовность решать проблемы, готовность признавать косяки, продемонстрировать открытость в плане расследования причин косяков и т.д. и т.п.

И всё это с целью удержать клиентов, а клиенты побегут, гражданин Маск уже где то заявил что его конторы больше не будут пользоваться услугами этой системы.

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

>а мурыжили тех нескольких пострадавших в лучших традициях советского Спортлото

или в традициях капиталистического оракля... и что с ораклем? да всё нормально, цветёт и пахнет

А что не так было со Спортлото? Не припоминаю случаев мурыжанья, может, просто не в курсе?

Говорят, они на жалобы вообще не отвечают, сколько ни пиши, и какой бы серьёзный ни был повод

Навет.

В 2010 году McAfee своим обновлением антивируса окирпичило всех своих клиентов, у которых была установлена Windows XP. Машины просто не загружались да и все.

И что вы думаете, они там разорились или их засудили? А вот и не угадали.

Вангую, что через пару месяцев вообще все забудут про этот CrowdStrike и всю эту историю можно будет только в вики найти - там будет один абзац и одна ссылка, которая уже через неделю после написания абзаца станет битая.

Такое врятли забудут. "Проблема 2000 года" имела куда меньшие последствия, а её долгие годы не вспоминал только ленивый.

Она имела меньшие последствия потому что к ней основательно подготовились и обновили кучу кода. Ничего страшного не произошло как раз потому что все знали про знали про проблему и готовились к ней.

Кроме того было заранее точно известно когда именно она случится, если случится.

В Вики уже довольно-таки длинная статейка есть.

При чем тут извинения. Судя по тексту компиляции новости, речь всего лишь о "пояснении"!

Признаться, не знаю, насколько безальтернативно ПО компании в своей нише, но проблема глубока: компания забросила и тестирование, и ТП, и сфокусировалась на продажах и дутом имидже. Лучший способ борьбы с подобным для клиентов - отказ от проблемного ПО.

Ну и да, речь о компансации не идет, ибо это клиентв должны нести деньги в crowdstrike, а не crowdstrike их возвращать - это очень важно, это надо понимать и не путать!

Так ошибка в чем была?

В том что эта ошибка не попала под тесты?

Реквестирую TLDR.

«Из-за ошибки в средстве проверки контента один из двух экземпляров
шаблона Template Types прошел проверку, несмотря на то, что содержал
проблемные данные контента»

Если им верить, то файл тестировался, но тесты прошли успешно.

Видимо тестировали только happy cases

Я, конечно, вообще не в курсе, как у них происходит тестирование, но я часто встречал неправильно написанные тесты асинхронного кода, которые успевали завершиться успешно до того, как тестируемый код вернёт ошибку. Так что даже если концептуально тесты покрывали нужные сценарии, ошибка могла привести к ложноположительным результатам.

В смысле? Async запускают, а await на всё не делают?

Типа того

Ну
Баклан малый
Баклан малый

Да там же самый банальный smoke test должен был бы провалиться. Машина ж тупо не загружается. Как это вообще можно не заметить?

Разве что тестовый фреймворк такой "ну тут тестовый агент ошибку не прислал (потому что не забутался, ха-ха), значит все нормально".

Если я правильно прочитал между строк -- у них нет никакого тестового агента. Файл тестился тестилкой, потом сразу в CCS который уже всем отдаёт новый конфиг. То есть никакого стейджинга не было, и они только обещают его добавить:

How Do We Prevent This From Happening Again?

  • Software Resiliency and Testing

    • Improve Rapid Response Content testing by using testing types such as:

    • Local developer testing

    • Content update and rollback testing

    • ...

  • Rapid Response Content Deployment

    • Implement a staggered deployment strategy for Rapid Response Content in which updates are gradually deployed to larger portions of the sensor base, starting with a canary deployment.

    • ...

Что то мне подсказывает, все это у них было пока не пришел эффективный менеджер

Эффективного менеджера им прислали из АНБ.

Немного не угадали, другие 3 буквы:
"CrowdStrike имеет мощные связи с ФБР - главным сотрудником службы безопасности компании и президентом отдела услуг является исполнительный помощник директора ФБР в отставке Шон Генри."

Да там основатель максимально эффективный, он ещё в 2011 в макафи так же зафакапился.

Чем же они подкупили кровавый энтерпрайс?

Кровавый энтерпрайз -- это всегда про красивые продажи и наличие всех формальных галочек. Знают на чём надо усилия сосредотачивать -- на том чтобы кто-то написал правила без каких фичей антивирус не антивирус, а потом продавать эффективным менеджерам единственно верное решение (что не видите? Весь топ 500 пользуется и вы берите).

Технические характеристики таких изделий обычно в последнюю очередь на что-то влияют, что уж про внутреннюю культуру разработки говорить. Пока не бомбанет. Ну а там ценный актив куда-нибудь перепродастся, герои уйдут делать новую компанию :)

В треде на Реддите накануне факапа безопасники компаний доказывали, что CrowdStrike — лучшая система. Доводами в числе прочих были: легко устанавливается, удобный дашборд, хорошая документация, легко использовать аналитикам. То есть как раз красивая обёртка, которая понравится и инженерам (быстренько раскатил и отдыхаешь), и безопасникам (отчётики, отчётики, отчётики; куча рекламы, с которой легко обосновать закупку перед начальством), и менеджменту (мы используем самую лучшую систему, которую используют все лидеры рынка).

Так что для успешного продукта надо сделать красивую обёртку, чтобы целевой аудитории понравилось, ну и продавить через связи с топами и инвесторами. Дело Theranos будет жить долго.

НЛО прилетело и опубликовало эту надпись здесь

Да, я про этот тред и говорил. У меня, кстати, всё работает.

НЛО прилетело и опубликовало эту надпись здесь

Пишут, что широкую популярность CrowdStrike получила после скандала с русским вмешательством в американские выборы (это когда Трампа выбрали). С её отчета, собственно, легенда о вмешательстве и пошла жить. Так что эта компания - кого надо компания, не уверен, что обёртка там вообще важна...

Видимо тестировали только happy cases

Это бич современных программистов. "Программируем только happy cases, а в остальных случаях компьютер умный, как-нибудь сам разберётся".

Так он не на пустом месте появился. KPI всякие, дедлайны основные на воображении менеджмента. Вот и приходиться как то выкручиваться.

Я в этом раннем анализе вижу две зияющие дыры, обе с ушами из одного места.

Во-1х таймлайн релиза. Они утверждают что весь код вылизан, протестирован и всячески подёрган за ниточки. Однако же:

  • On February 28, 2024, sensor 7.11 was made generally available to customers, introducing a new IPC Template Type

  • On March 05, 2024, a stress test of the IPC Template Type was executed in our staging environment

то есть код был выкачен всем пользователям (GA) за неделю до того, как они прогнали стресс-тесты для него у себя. Иначе говоря, факт "всё протестировано до нас" провален.

Во-2х, все тестирования описаны для канала кода, а "конфигурация" -- "не код". И в обещании "недопущания" обещают сделать прогрессивный роллаут и начать тестировать (включая "локальные тесты", лол што, конфиг выкатывали без внутреннего тестирования В А А П С Ч Е?

То есть да, тестинг сломан по определению, и ситуация была предсказуема. Это был вопрос не "если" а "когда". Если добавить к этому проблемы 3 недели назад когда такой же апдейт привёл к 100% загрузу СРУ, а пару месяцев назад -- к поломке линуксовых агентов (которые лечили неделями)...

Меня позабавило что они смело раскатали обновление по всем клиентам разом а не волнами.

с востока на запад было развертывание - японцы отмолчались а кенгуруный it оказался настолько плох что не понял что происходит ... версия ms всё объяснила лучше

С востока на запад — потому что в США была ночь, а в Европе раннее утро. Многие компьютеры в офисах могли быть выключены. Но вот всякие аэропорты и авиакомпании, которые работают круглосуточно, сломались и в США.

но так на востоке начали увеличивать %

Из эпического треда о CrowdStrike накануне
Из эпического треда о CrowdStrike накануне

В CrowdStrike запустили отдельный сайт "How to Fix CrowdStrike Issue?" для помощи инженерам и системным администраторам пострадавших клиентов.

Майки предупреждают что на этот сайт лучше не заходить от греха подальше.

не совсем понятно. Есть условные бинарники антивируса, а есть контент/сигнатуры для него. В тексте статьи написано, что проблема случилась из-за неверного обновления контента. Но сам сбойный файл это драйвер *.sys. Получается что их сигнатуры это по сути исполняемый бинарный код что-ли? Если это так, то очень странная архитектура.

Обычно перед установкой в сети обновления антивируса, каждую его новую версию надо тщательно тестировать, прежде чем обновлять версию в организации. Это часть процесса тестирования и установки обновлений внутри фирмы. Безусловно эти же процессы делает и поставщик. Но никто в конторах не тестирует обновление сигнатур, т.к. они обновляются постоянно.

в итоге получается, что краудстрайк в эксплуатации моет подкинуть неприятный сюрприз для ИТ-админов любой конторе и никаким локальными процессами тестирования и применения релизов этот риск не уменьшить.

Но сам сбойный файл это драйвер *.sys. Получается что их сигнатуры это по сути исполняемый бинарный код что-ли?

у него расширение sys, но содержимое начинается на 0xAAAAAAAA -- то есть это не исполняемый файл и не драйвер. Просто взяли расширение чтоб случайно его не стирали.

чтоб случайно его не стирали

Так эти файлы лежат в \System32\drivers\CrowdStrike, при нормальной работе системы они должны быть защищены от удаления. Но так-то вообще немного глупо антивирусные базы там размещать.

Файл не исполняемый, но исполняемый код содержит. Вообще, я так понимаю, это - популярный способ создания сигнатур. Каждая сигнатура - просто кусок кода, который запускается супротив исследуемого файла и говорит "чисто"/"вирус".

Не скажу про всех, но чаще это не исполняемый код, а код для некой VM, что в разы проще обезопасить.

Исполняемый код далеко не только в них в базах, но и у Касперов, например

В тексте статьи написано, что проблема случилась из-за неверного обновления контента. Но сам сбойный файл это драйвер *.sys.

В статье написано что исполняемый код, который вызвал синий экран, находится в драйвере CSAgent.sys. Он обратился по недопустимому адресу. Но этот адрес он сформировал на основе данных из файла типа C-00000291-xxxx.sys.
Сам код в CSAgent.sys проверку адреса на корректность не выполняет, видимо ради скорости работы. Поэтому автоматическое тестовое ПО выполняет проверку файлов типа C-00000291-.sys заранее, для гарантии что из этих данных никаких кривых адресов не получится. (типа если делители берутся из базы данных в файле, то заранее проверяется что в этом файле нет нулей. соответственно в коде проверку на 0 делать не нужно. и при обновлении базы делителей, просто проверяется файл базы, и это гарантия что деления на ноль никогда не случится.)

Они перед раскаткой обновления для всех пользователей не устанавливали его на своих локальных машинах? Как такое возможно

Зачем? Как потом работать, если синий экран поймают. (с)

развёртывание новых типов шаблонов Template Types обеспечило внутри компании «доверие к проверкам, выполняемым в средстве проверки контента»

Ну, то есть миллионам своих клиентов они раскатывали обновление ядровых модулей ОС только по результатам автотестов? Великолепный план.

Есть вопросик. Зачем сетевым сенсорам работать в режиме ядра ОС?

Любой современный антивирус должен иметь ядерные компоненты, иначе он слишком просто будет выноситься...

Без ядерных компонентов глобальная структура мировой IT безопасности не выдержит?

А как иначе антивирус сможет обезвредить вирус, поднявший себе права до ядерных?

Он такого не сможет обезвредить. Задача - не дать вирусу попасть в кернелмод. Отсюда и загрузка на самом раннем этапе, и контроль загружаемых драйверов. Кто первый встал - того и тапки, короче

В Windows единственный способ видеть реальный трафик это через драйвер.

Кажется им кто-то серьезный сказал: "нет времени объяснять и тестировать, нам срочно нужно много телеметрии со всех компов".

У них этой телеметрии и так, как гуталина у дяди Матроскина с гуталиновой фабрики.
Скорее серьезным дядям нужен был инфоповод, чтобы заспамить новостную ленту между ЧЕ по футболу и олимпиадой, получив сплошных 2 месяца иммунитета от просачивания в массовое инфопространство чего-то, что не должно всплыть раньше времени.
Ну и, как обычно, для оплаты услуг исполнителей и мелкого гешефта друзяшек, сколько-то миллиардов переложить из одного кармана в другой
https://habr.com/ru/news/830816/

Люди далекие от системного администрирования новостью не заинтересуются.

А люди, у которых билеты на самолет от руки выписываются, или работа не работается из-за синего скринсейвера?

И какой процент таких в общем числе пользователей? Вот у меня лично среди знакомых и знакомых знакомых 0 человек. И даже для них это не новость года, а бытовые хлопоты, самолет могут задержать из-за погоды например с таким же эффектом. Синий скринсейвер это типовая работа админа, пользователи обычно не вникают, а на рабочем компе и не могут, нет прав админа.

Ого, доступ ко всем облакам за недорого:))

Таки нашли стрелочника - козла отпущения ?

Ага - Content Validator.

After passing the Content Validator, the update didn't go through additional verifications due to trust in previous successful deployments of the underlying Inter-Process Communication (IPC) Template Type. Therefore, it wasn't caught before it reached online hosts running Falcon version 7.11 and later.

А с каких пор безликая компания попадает под описанный вами тезис? Как раз ответственное лицо выступило и прояснило ситуацию, не впутывая Иванова, Сидорова и Галину Петровну, уборщицу. Для того чтобы они спокойно чинили продукт.

Сама по себе идея установки ПО с полными правами, которое управляется "из вне" мне кажется не совсем правильной.

Кроме сбоя в тестировании, возможны другие варианты (SolarWinds например)

А как вы иначе драйвера обновите после выявления в них ошибок критических?

Да забейте их спрашивать. В каждом треде комментарии "а зачем антивирусному ПО работать на уровне ядра" под разными соусами. Причём ответа на вопрос "а как по-другому оно работать будет-то?" ответа никогда не последует.

Мне интересно почему Windows так просто ложится от ошибки в драйверах? Неужели нельзя просто выкинуть ошибку пользователю, отключить драйвер нафиг и сообщить майкам баг репорт, что вот такой драйвер упал замертво? Вроде это раньше так и работало...

Если там ошибка при работе с памятью, то вполне возможно что даже определить виновный драйвер - и то не получится. А уж принудительно выгружать из адресного пространства код, который успел прописать ссылки на себя в другие модули - и вовсе безнадёжная идея.

В ядре так нельзя, к моменту как ошибку заметили уже непонятно что драйвер мог наворотить в памяти ядра, может он там уже все ядерные структуры мусором перезаписал, как определить?

НЛО прилетело и опубликовало эту надпись здесь

Строго говоря, в Windows ядро гибридно и с драйверами видеокарты она довольно давно умеет так делать. Но именно что гибридное, с ядровыми компонентами оно так не может.

Винда обычно примерно так и делает – но тут драйвер не простой, а типа boot-start driver, то-есть такой, без которого загрузка считается невозможной.

То-есть Винда буквально считает, что не может жить без кривого драйвера, внутри которого есть возможность исполнять на уровне ядра неподписанный код, прилетевший непойми откуда. Это потрясающая жесть, конечно.

Ну код то у них наверняка прилетает подписанный. Это не защищает от кривизны, но все же там вполне себе вменяемая цепочка доверия - винда доверяет пользователю, пользователь доверяет софту crowdstrike, софт crowdstrike доверяет обновлению подписанному crowdstrike.

Не "жесть", а ведущий security product.

У нас на работе такой же OPSWAT используется... Скачивает со своего сервера какие-то бинари, а потом запускает их от рута. Чем он принципиально отличается от малвари, которая делает точно то же самое - непонятно.

"Не можешь победить - возглавь!" (с)

То есть система после перезагрузки начнёт работать без антивируса?

Я бы предложил выбрать пользователю стратегию восстановления от ошибки в драйверах антивируса. Например, при установки любого драйвера, действующего как boot-start driver, я бы дал выбор пользователю, что-то вроде отключения этого драйвера в случае ошибки и продолжения работы, либо остановка и отключение системы до прихода помощи в виде системного администратора и т.п.

Так админы в случае антивируса выберут «отключение системы до прихода помощи». Кто же будет себе явно потенциальную дыру в безопасности делать? Более того, админам запретят выбирать отключение драйвера регламентом безопасности.

Here we go again

Если ошибку сложно выявить при тестировании, можно было дозировано слать обновления на компьютеры и проверять статус после обновления. У них же миллиарды компьютеров которые ждут обновлений. Зачем сразу на все отправлять? Можно выбрать некоторое количество с наименьшим приоритетом важности, игровые домашние например, чтобы не уронить критически важные серверы. Возможно оно так и есть частично, обновление отозвали, не все компьютеры успели обновиться.

Похоже статью на Хабре Самые дорогие и судьбоносные ошибки в ИТ-индустрии можно уже дополнять ))

Это корпоративный антивирус, он не ставится на «домашние игровые» компьютеры.

Это же не мобильная игра, вот ты попал в 99% процент, и за это время успел нахватать свежих вирусов, а конкуренту твоему повезло, он это обновление ещё не прошлой недели получил.

Большинство обновлений не такие срочные, чтобы требовали такую срочность. Обновление о котором статья не требовало такого срочного развертывания. Тем более не требуется неделя. Если после обновления сервер падает через 1 секунду, выявление сбоя не займет много времени. Даже если перезагрузка требуется, вот у нас 24 часовых пояса, из 100 млн. серверов есть 10 000 таких что готовы перезагрузиться после обновления (давно не перезагружались и на них минимальная нагрузка в связи с тем что сейчас ночь в компании и сотрудников нет на рабочих местах). Отправляем обновление на 1 сервер, ждем перезагрузки, если все хорошо, отправляем на 2 сервера, потом на 4 и т.д. Если часть серверов упали после перезагрузки отменяем обновления.

Объясните кто-нибудь что такое сенсор falcon?

один из компонентов антивиря CrowdStrike

Со слов гугла:

The intelligent, lightweight CrowdStrike Falcon sensor, unlike any other, blocks attacks on your systems while capturing and recording activity as it happens to detect threats fast.

Анализатор программной активности. Отслеживает подозрительные действия, блокирует на лету. Ну, как они о себе говорят.

«Из-за ошибки в средстве проверки контента один из двух экземпляров шаблона Template Types прошел проверку, несмотря на то, что содержал проблемные данные контента», — сообщила CrowdStrike.

Есть ли у этой ошибки есть имя, должность и перспектива присесть на срок соответствующий нанесённому ущербу?

А можно уточнить, точно ли ответственность входила в должностные обязанности того сотрудника? И точно ли фирма их перенимала (и получала за это отдельной строкой немалую сумму)? Или, может быть, они застраховали эту самую ответственность? А то как журить за софт за 100500 мильёнов - все первые, типа что там делать-то, а как взыскать по рискам, заложенным в те 100500 мильёнов с тех, кто эти риски не перенимал - «ну они же написали софт, почему нет».

Заодно отвечу всем, кто тут про «ответственный софт» распинался - да сходите и застрахуйтесь, в чём проблема-то… Ах да, многие фирмы уже, вас не спросив, как лучше распределить ответственность, финансы и управление.

Ошибка была в том что была ошибка. Это все что я прочитал из этой новости.

Linux ставить надо, а если хотите виндовые проги запускать хотите, Wine пейте ставьте

Linux они тоже пару месяцев назад ломали)

Пфф, ну не в 2024-ом такое. На ум конечно приходит история с XZ, хотя там немного по-другому было.

А в результате получается, чтобы сломать какую то часть мира, не нужно быть хакером. Достаточно в такую конторку устроиться инженером и впихнуть нужную ошибку.

Маловероятно. Инженер же работает с задачами которые уже прилетают. Там могут быть второстепенные не критичные доработки. Плюс оно должно пройти автотесты. Возможно придется дорасти до тимлида чтобы такое сделать ))

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории