Попытка заблокировать фишинговый URL-адрес на платформе Cloudflare R2 случайно вызвала масштабный сбой, из-за которого многие сервисы Cloudflare не работали почти час.
Cloudflare R2 представляет собой объектное хранилище, похожее на Amazon S3 и предназначенное для масштабируемого, долговременного и бюджетного хранения данных. Сервис предлагает бесплатное извлечение данных, совместимость с S3, репликацию данных и интеграцию с другими решениями Cloudflare.
Сбой произошел в конце прошлой недели, когда один из сотрудников компании отреагировал на сообщение о фишинговом URL-адресе на Cloudflare R2. Вместо того чтобы заблокировать конкретный эндпоинт, сотрудник по ошибке отключил весь сервис R2 Gateway.
«Во время рутинного устранения нарушения были приняты меры в связи с жалобой, в результате которых по ошибке была отключена служба R2 Gateway, а не конкретный эндпоинт/бакет, связанный с жалобой», — пояснили представители Cloudflare в своем отчете об инциденте.
В итоге инцидент длился 59 минут, и помимо самого объектного хранилища R2 он затронул и другие сервисы, включая:
- Stream — 100% отказ при загрузке и доставке потокового видео;
- Images — 100% отказ при загрузке/выгрузке изображений;
- Cache Reserve — 100% отказ в работе, что привело к увеличению количества запросов к источникам;
- Vectorize — 75% отказов для запросов, и 100% отказ для операций вставки, удаления и upsert;
- Log Delivery — задержки и потеря данных (до 13,6% потерь данных для связанных с R2 логов, а также до 4,5% потерь данных для несвязанных с R2 delivery job);
- Key Transparency Auditor — 100% отказ при операциях публикации и чтения подписи.
Косвенно пострадали и другие сервисы, в работе которых наблюдались частичные сбои. Например: Durable Objects, в котором количество ошибок увеличилось на 0,09% из-за повторных подключений, Cache Purge, где количество ошибок (HTTP 5xx) увеличилось на 1,8%, а задержка возросла в 10 раз, а также Workers & Pages, для которого сбои при развертывании составили 0,002%, затронув только проекты с привязкой к R2.
В Cloudflare отмечают, что причиной инцидента стали как человеческий фактор, так и отсутствие таких защитных мер, таких как валидация потенциально опасных действий.
Компания сообщает, что уже приняла соответствующие меры. В частности, возможность отключения систем была удалена из интерфейса, которым пользуются специалисты по устранению злоупотреблений. Также в Admin API появились ограничения для предотвращения отключения сервисов для внутренних учетных записей.