Публичный доступ к бакету изображений блога Google Cloud раскрывает черновой контент
Google ведет несколько официальных блогов, включая blog.google, firebase.googleblog.com и cloud.google.com/blog. Хотя многие из этих блогов размещены на Blogspot.com и используют его CDN (Content Delivery Network) для подачи изображений, заметными исключениями являются The Keyword (blog.google) и блог Google Cloud, которые работают на собственных платформах.
Понимание бакетов Google Cloud Storage для изображений блога
Изображения для этих специализированных блогов Google хранятся в бакетах Google Cloud Storage — доступных через Интернет файловых хранилищах, предоставляемых в рамках Infrastructure as a Service (IaaS) от Google. Используемые конкретные бакеты включают:
https://storage.googleapis.com/gweb-uniblog-publish-prod/https://storage.googleapis.com/gweb-cloudblog-publish/
Эти бакеты обеспечивают прямой доступ к хранимым изображениям по URL, позволяя браузерам или приложениям получать или перечислять содержимое, если предоставлены соответствующие права доступа.
Как получить доступ к бакетам Google Cloud Storage
Существует несколько шаблонов URL для доступа к бакетам Google Cloud Storage. Они включают:
https://storage.googleapis.com/<имя-бакета>/https://<имя-бакета>.storage.googleapis.com/https://storage.cloud.google.com/<имя-бакета>/https://sandbox.google.com/storage/<имя-бакета>/
Добавление имени файла к этим URL позволяет получить прямой доступ к определённым объектам внутри бакета, при условии наличия соответствующих разрешений.
Блог The Keyword: ограниченный просмотр списка бакета
Попытка доступа к бакету gweb-uniblog-publish-prod через браузер приводит к ошибке Доступ запрещён:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>Доступ запрещён.</Message>
<Details>Анонимный вызывающий не имеет права storage.objects.list на бакет Google Cloud Storage.</Details>
</Error>
Это происходит потому, что публичное отображение объектов в бакете отключено, что соответствует лучшим практикам безопасности по умолчанию.
Блог Google Cloud: публично доступный бакет изображений
В отличие от этого, второй бакет gweb-cloudblog-publish был обнаружен с публичным отображением всех загруженных элементов. Доступ к его корневому URL возвращал XML-список тысяч файлов с подробной метаданными для каждого объекта, включая имена, размеры и даты изменения.
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://doc.s3.amazonaws.com/2006-03-01">
<Name>gweb-cloudblog-publish</Name>
<Contents>
<Key>images/sample-image-1.jpg</Key>
<Size>123456</Size>
<LastModified>2023-09-01T12:00:00.000Z</LastModified>
</Contents>
...
</ListBucketResult>
Этот несанкционированный публичный доступ был возможен, потому что разрешения Storage Object Viewer (roles/storage.objectViewer) были предоставлены группе allUsers. Эта роль позволяет любому просматривать содержимое объектов и метаданные, а также перечислять объекты внутри бакета.
Роль Storage Object Viewer
Позволяет читать данные и метаданные объекта, включая возможность перечисления объектов в бакете, без предоставления прав на их изменение.
Последствия публичного раскрытия бакета
Публичный доступ к бакету gweb-cloudblog-publish означал, что все загруженные изображения были доступны — включая материалы для предстоящих, неопубликованных записей блога. Это создает несколько рисков:
- Нарушение конфиденциальности: Ранний доступ к маркетинговым материалам, скриншотам или изображениям продуктов Google Cloud, которые еще не были опубликованы.
- Риск для конкурентоспособности: Конкуренты могли получить информацию о будущих запусках облачных сервисов Google, что снижает конкурентные преимущества.
- Ущерб репутации: Утечка преждевременного контента может привести к потере доверия клиентов или дезинформации.
Подобные ошибки настройки безопасности в облачных хранилищах не являются единичными. В докладе 2023 года от IBM Security отмечено, что плохая конфигурация облачных бакетов стала причиной более 20% глобальных утечек данных, подчеркивая важность строгого контроля доступа.
Хронология устранения инцидента
| Дата | Действие |
|---|---|
| 10 апреля 2019 года | Уязвимость выявлена и получила приоритет 2. |
| 10 апреля 2019 года | Начато первоначальное расследование. |
| 12 апреля 2019 года | Официально зарегистрирована ошибка для отслеживания решения. |
| 16 апреля 2019 года | Выплачено вознаграждение за обнаружение уязвимости (bug bounty). |
| 24 апреля 2019 года | Проблема признана решённой, публичное отображение отключено. |
Лучшие практики безопасности облачного хранения
Для предотвращения подобных уязвимостей организациям рекомендуется придерживаться следующих правил безопасности для облачных хранилищ:
- Принцип наименьших привилегий: Предоставлять минимально необходимые права пользователям и сервисам.
- Регулярные аудиты: Проводить периодические проверки доступа и разрешений бакетов.
- Использование политик бакетов: Определять политики, ограничивающие публичный просмотр или перечисление, если это не требуется.
- Включение журналирования: Отслеживать и логировать доступ к бакетам для выявления несанкционированной активности.
- Использование инструментов облачной безопасности: Применять средства провайдеров облака, такие как Security Command Center от Google Cloud или AWS Trusted Advisor, для выявления рисков.
По данным исследования Gartner 2022 года, организации, использующие автоматические инструменты управления безопасностью облака, снижают риски неправильной настройки более чем на 60%.
Заключение
Публичное раскрытие бакета изображений блога Google Cloud подчёркивает сложность и риски правильного управления разрешениями в облачных хранилищах. Даже ведущие мировые технологические компании, такие как Google, могут столкнуться с проблемами неправильной настройки, которые потенциально приводят к утечке чувствительной информации.
С ростом зависимости от облачной инфраструктуры — которая доминирует более чем у 94% предприятий по всему миру (Flexera 2024 State of the Cloud Report) — строгое управление и постоянный мониторинг разрешений облачных хранилищ крайне важны для защиты корпоративных и клиентских данных.

