авария

Доброе утро! А вот у южнокорейских государственных айтишников — не очень доброе, потому что они не делали бэкапы до сих пор восстанавливают инфраструктуру после пожара в серверной.

У большинства систем были бэкапы, но удаленное хранилище файлов, которым пользовались 17% всех госслужащих страны — не имело бэкапов. Безвозвратно потеряны терабайты документов. Делайте бэкапы!

Кстати, у этой истории есть ещё и шпионское измерение: в июне 2025го двое хакеров взломали северокорейского (китайского?) хакера, который взломал LG и кучу южнокорейских государственных систем. Дали об этом знать южнокорейским правоохранителям, которые в августе перестали выходить на связь. А дальше уже совсем мистика: кто-то пишет им с одноразового номера в сигнале «Proton небезопасен», после чего Proton блокирует почтовый ящик, с которого они вели коммуникацию только с южнокорейскими властями, но разблокирует после публикации.

24 сентября южнокорейский парламент начинает расследование взлома, 25го анонсирует физический аудит дата-центра, 26го — пожар. Подробности и ссылки на дампы с компьютера хакера — в легендарном журнале phrack.

Гугл опубликовал пост-мортем по позавчерашнему падению. Обычные ошибки, только на инфраструктуре планетарного масштаба.

У них есть внутренний сервис, который проверяет доступы (бабки, квоты и т. д.) перед тем, как API запрос доходит до любого продукта.

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

В эту программу добавили поддержку нового типа квот. Программист допустил небрежность в новом коде и не проверял, насколько корректно записано это правило в базе, перед тем, как пытаться положить его в память. Обращение к несуществующей памяти — смертный грех, за такое программа мгновенно завершается (если программист не предусмотрел, что такое может случиться, а это не наш случай). При этом я бы не назвал это ошибкой, все мы люди, мы не идеальны и поэтому придумываем механизмы защиты от своей природы. В этом суть инженерного подхода.

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

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

К сожалению, программист забыл настроить фича-флаги для этого кода. Кусочек программы с ошибкой запустился на всех пользователей сразу. Удивительно, что это не заметили на этапе code review!

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

Тут в дело вступает, на мой взгляд, первая ошибка (а не просто человеческая небрежность) инженеров — система контроля доступа настроена так, что при отсутствии ответа от программы проверок она отклоняет запрос. Так называемый fail closed. Хорошо для замков на банковских сейфах, плохо для пожарных выходов.
В нашем случае система не пропускает ни один запрос.

Дежурные инженеры замечают проблему в течение 2 минут, за 10 минут находят причину (дежурная система и дежурные инженеры у Гугла достойны восхищения) и нажимают большую красную кнопку, которая должна выключить эту часть программы (ее программисты сделали). Ее включение занимает еще 30 минут. (Не понятно, почему этот механизм занимает 30 минут, а не 20 миллисекунд, но движемся дальше).

Система заработала, но из-за того, что она лежала 40 минут, накопилось много желающих отправить запрос еще раз, и они создали эффект толпы, которая набежала и перегрузила остальные соседние сервисы через наш сервис проверок. Оказалось, что он не ждет какое-то время, если нужный сервис отказывается ответить на запрос (для этого есть красивая схема exponential back off), а долбит до упаду, тем самым не давая системе возможности восстановиться. Пришлось руками ограничивать число запросов. На постепенную, ручную разгрузку очередей ушло еще 2 часа.

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

Как вывод, Гугл обещает пройтись по всем сервисам и убедиться, что они, во-первых, fail open, то есть пропускают запросы, когда падают, во-вторых, реализуют exponential back off, если на их запрос не отвечают, а не добивают лежачего, и, наконец, в-третьих, что даже глобальные добавления правил должны прилетать во все регионы не сразу, а с некоторыми задержками. Ещё обещают добавить эти проверки в свои статические анализаторы кода, завидую!

Первые два пункта можно и нужно использовать в каждом проекте, даже если ты не Гугл.

В 21:46 мск отказала большая часть гугловского облака GCP. Ходят слухи, что всё из-за одного ключевого технического внутреннего сервиса, но в результате в разной степени поломались гугловские продукты, вроде Cloud, Drive, Meet, Gmail.

Предположительно, из-за этого начал глючить Cloudflare, один из самых популярных CDN-провайдеров.

Дальше по цепочке легла половина интернета — Spotify, Discord, Snapchat и тысячи других. Особенно тревожно, что для многих людей сломался RCS — это протокол, продвигаемый Гуглом, который должен заменить смски.

Предвкушаю увлекательные постмортемы от Гугла и Cloudflare, последние уж точно не упустят шанса рассказать, что это было.

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

P. S. Про одновременное падение Amazon Web Services — кажется дезинформация.

Windows-компьютеры по всему миру уходят в так называемый синий экран смерти — то есть перестают работать вообще. Нарушена работа магазинов, банков, авиакомпаний по всему миру.

Проблема в обновлении популярного корпоративного антивируса CrowdStrike, который используют 20% компаний из списка Forbes 500. Ошибка в обычной программе ломает только её саму, но это — антивирус, он имеет специальный уровень доступа к ядру и поэтому ломает систему до основания.

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

Можно своими глазами увидеть: 1) какие известные компании НЕ используют CrowdStrike (таких немного) 2) как это прокатывается волной по всему глобусу — технарь из Австралии пишет, что «у нас в магазинах всё только за наличку», а американец отвечает «у нас все пока спят, кроме тех, кого разбудили, чтобы это починить».

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

Фейсбук упал, так что если фб, инстаграм или даже вацап просят ввести пароль и говорят, что он неправильный — не спешите паниковать. Это техническая ошибка, уже почти час не могут починить.

Страница со статусом инфраструктуры ФБ тоже работает через раз — видимо, что-то серьезное.

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

30 января на несколько часов сломались сайты .ru

Это произошло из-за проблем с DNS — одним из старейших протоколов интернета, которым мы пользуемся до сих пор.

Обсудили с сотрудником ICANN Мишей Анисимовым, как он устроен и что пошло не так. Слушайте здесь: Apple, Google, Яндекс, Spotify, Castbox, Overcast, веб-версия.

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

Если у вас не открываются какие-то западные сайты и приложения (привет, hackernews) — это может быть связано. Наши клиенты из Канады просто написали «мы сегодня оффлайн».

Прямо сейчас Rogers пытается купить другого крупного канадского провайдера, Shaw Communications, за 20 млрд канадских долларов. Интересно, повлияет ли авария на сделку, не вмешаются ли регуляторы — уж больно показательная история.

Хероку (один из лучших облачных хостингов) взломали примерно 15 апреля (ну, они узнали о взломе 15 апреля), но насколько все плохо и к чему получили доступ взломщики — неизвестно.

Сегодня вот прислали письмо, что принудительно сбросят пароли для моей безопасности.

Ссылаются на «предыдущие уведомления», но никаких уведомлений в почте, конечно, нет.

Два варианта: либо их вообще целиком взломали и пиарщики хорошо наводят муть, либо, что более вероятно, компания стоимостью в миллиарды долларов, нацеленная на разработчиков, не умеет говорить с этими самыми разработчиками об инцидентах безопасности. Не боги горшки обжигают, а скорее — король голый :(

Пример, как не писать о взломах — тут, стенания hackernews по теме — здесь.

По делу: сбросьте пароли, секреты и токены, которые хранились в хероку или засветились в логах внутри хероку и молитесь.

P. S. Иронично, что Хероку отказался предоставлять сервис пользователям из России, так что Федя перенёс все приложения из Хероку на собственные серверы месяц назад.

Компания Atlassian 4 апреля что-то капитально сломала, так что 400 компаний-клиентов потеряли доступ к системе управления проектами Жира и базе знаний Конфлюенс. На 10 день (!) аварии, доступ восстановлен только для 35% клиентов, для некоторых восстановление доступа может занять ещё 2 недели (!).

Это тектоническая авария, есть компании, у которых из-за этого вполне может встать разработка.

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

Жальче всего людей, у которых не было локальных бэкапов этих систем. Не знаю как остальные техдиры, но я в свой чеклист аудита добавил пункт «бэкапы облачных сервисов».

Один из крупнейших интернет-маркетплейсов страны Wildberries не работает вторые сутки и не называет ни причину падения, ни сроки, когда проблемы будут исправлены.

Главная страница открывается, но пропали все данные о прошлых заказах, нельзя оформить новый заказ, в личном кабинете не отображается даже имя пользователя.

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

Проверяйте бэкапы, это дешево, могу помочь! И зовите меня с Федей, если вдруг авария, в которой не можете разобраться, у нас есть опыт тушения пожаров (дорого).

Отдельно обращу внимание на отвратительную внешнюю коммуникацию. Берите пример с Cloudflare, они хорошо объясняются, когда что-то идет не так.