Мировая техническая катастрофа
В пятницу утром, вскоре после полуночи по нью-йоркскому времени, по всему миру началось разворачиваться техногенное бедствие. В Австралии покупатели столкнулись с «синим экраном смерти» (BSOD) на кассах самообслуживания. В Великобритании Sky News пришлось приостановить вещание после того, как серверы и ПК начали выходить из строя. В Гонконге и Индии перестали работать стойки регистрации в аэропортах. К утру в Нью-Йорке миллионы компьютеров на базе Windows вышли из строя, и глобальное техногенное бедствие было в разгаре.
Причины сбоя
В первые часы после начала сбоя царила неразбериха. Как могло так случиться, что так много компьютеров на Windows внезапно начали показывать синий экран смерти? «Происходит что-то очень странное,» — написал австралийский эксперт по кибербезопасности Трой Хант в посте на X. На Reddit администраторы IT подняли тревогу в треде «BSOD error in latest CrowdStrike update», который собрал более 20,000 ответов.
Проблема привела к тому, что крупные авиакомпании в США остановили свои рейсы, а сотрудники банков, больниц и других крупных учреждений в Европе не могли войти в свои системы. Вскоре стало ясно, что все это было вызвано одной маленькой ошибкой в файле.
Исток проблем
В 12:09 по восточному времени 19 июля компания CrowdStrike выпустила сбойное обновление для своей системы безопасности Falcon, предназначенной для защиты от вредоносного ПО, программ-вымогателей и других киберугроз. Данное ПО широко используется компаниями для важных систем на Windows, что и привело к такому широкомасштабному и быстрому эффекту от обновления.
Обновление от CrowdStrike должно было быть обычным тихим обновлением, предоставляющим последние защиты для клиентов в крохотном файле объемом всего 40KB. Такие обновления выпускаются регулярно и проходят незаметно для пользователей. Однако на этот раз вышла ошибка, приведшая к катастрофе — сбою, которого можно было бы избежать.
Как это произошло?
Программное обеспечение защиты Falcon от CrowdStrike работает на уровне ядра Windows — центральной части операционной системы, имеющей неограниченный доступ к памяти и аппаратному обеспечению системы. Большинство других приложений работают на уровне пользователя и не требуют особого доступа к ядру. Falcon использует специальный драйвер, который позволяет ему работать на более низком уровне, чем большинство приложений, для обнаружения угроз в системе Windows.
Работа на уровне ядра делает программное обеспечение от CrowdStrike гораздо более эффективным в качестве линии защиты, но также и гораздо более способным создавать проблемы. Когда выходит обновление, которое неправильно отформатировано или содержит ошибки, драйвер может запомнить эти данные и слепо доверять им.
Ошибка и её последствия
Когда CrowdStrike заметила проблемы, ущерб уже был нанесен. Компания выпустила исправление через 78 минут после первоначального обновления. Администраторы IT пытались перезагружать машины снова и снова, и некоторым удалось восстановить работу компьютеров, если сеть успела схватить обновление до того, как драйвер CrowdStrike повредил сервер или ПК. Однако в многих случаях поддержка заключалась в ручном посещении затронутых машин и удалении сбойного обновления от CrowdStrike.
На данный момент основная версия состоит в том, что ошибка в драйвере существовала давно, но стала проблемой только после последнего обновления. Драйвер, вероятно, недостаточно проверял данные, которые он читал из файлов обновления, что привело к сбою.
Будущие меры предосторожности
Microsoft не вызвала эту катастрофу, но структура Windows позволила всей системе выйти из строя. Сообщения о синем экране смерти настолько плотно ассоциируются с ошибками Windows, что многие заголовки сначала утверждали о «сбое Microsoft», прежде чем стало ясно, что виновата CrowdStrike. Сейчас возникает вопрос — как предотвратить подобное в будущем? Ответ может дать только Microsoft.
На самом простом уровне Windows могла бы отключать проблемные драйверы. Если при запуске системы драйвер вызывает сбой, Windows могла бы более интеллигентно обработать это, позволяя системе загружаться без сбойного драйвера после нескольких неудачных попыток загрузки.
Более радикальное изменение заключалось бы в блокировке доступа к ядру Windows для предотвращения сбоев системы полноценными драйверами от сторонних разработчиков.
Заключение и перспектива
Подобные инциденты подчеркивают важность тщательного тестирования обновлений и улучшения процедур автоматического обновления для всех крупных систем безопасности. Microsoft и производители ПО должны искать способы, чтобы подобные сбои больше не происходили.
Источник: The Verge