Исследователи Wiz обнаружеили в Azure Cosmos DB уязвимость, которая позволяет злоумышленнику обойти песочницу запросов Gremlin и получить полный доступ на чтение и запись к базам данных в различных клиентских средах.
Wiz присвоила цепочке эксплойтов кодовое название CosmosEscape. Сама цепочка эксплойтов начинается со специально сформированного запроса к базе данных Gremlin, контролируемой злоумышленником.
Затем выполнение кода на многопользовательском шлюзе позволяет получить доступ к секретному ключу подписи, доступному на уровне всей платформы, и региональному каталогу учетных записей, что дает возможность определить цель и получить ключ ее основной учетной записи.
Microsoft заблокировала уязвимую точку входа Gremlin в течение 48 часов после сообщения в ноябре 2025 года, а долгосрочное исправление во всех регионах было завершено в июле 2026 года и привело к исключению ключа, используемого на всей платформе.
Проведенная микромягкими проверка не выявила несанкционированной активности за пределами зоны тестирования исследователей. Доступ к данным клиентов не осуществлялся и никаких действий от клиентов не требуется.
Представленная цепочка начинается с базы данных Gremlin, контролируемой злоумышленником, и учетных данных для этой учетной записи, а не с доступа к базе данных жертвы.
Согласно текущему руководству Microsoft по подключению, для отправки запросов Gremlin клиенту необходимо указать хост учетной записи, путь к базе данных и графу, а также первичный ключ.
Согласно техническому описанию Wiz, собственный движок Gremlin в Cosmos DB преобразует запросы Gremlin в код .NET и выполняет их в ограниченной среде. При этом ограничения не учитывали рефлексию .NET, что позволило исследователям создавать примитивы чтения и записи файлов до выполнения произвольного кода.
В опубликованной информации показаны результаты специально сформированного запроса, который выполнял команду hostname в бэкэнде Cosmos DB, но не сам запрос. Исследователи заявили, что представят полную цепочку на Black Hat USA 6 августа.
Выполнение кода происходило в компоненте, который Wiz называет шлюзом баз данных (DB Gateway), выполняющем запросы клиентов в многопользовательских кластерах Azure Service Fabric.
Базы данных клиентов не хранились в этих кластерах, но шлюз мог получить первичный ключ для запрошенной учетной записи Cosmos DB. Первичный ключ учетной записи Cosmos DB предоставляет полный контроль над всеми ресурсами в этой учетной записи.
Учетные данные, доступные шлюзу, также предоставляли доступ к ключу подписи, который Wiz назвал главным ключом Cosmos. Ключ подписи шлюза позволял получить первичный ключ для любой учетной записи в разных клиентах, а также через API SQL, MongoDB, Cassandra и Gremlin.
Тот же секрет открыл доступ к региональной базе данных под названием Config Store, которую Wiz описывает как каталог, содержащий имена учетных записей Cosmos DB, идентификаторы подписок и арендаторов, сетевые настройки и теги.
Злоумышленник мог использовать ее для поиска учетных записей конкретной организации, а затем запросить их первичные ключи. Цепочка атак также могла достигать частных и изолированных от сети учетных записей, поскольку скомпрометированный шлюз обеспечивал соблюдение этих сетевых границ изнутри сервиса.
Доступ исследователей к записи в хранилище конфигураций указывал на возможность изменения сетевых настроек, хотя в отчете не говорится, что они продемонстрировали это на примере учетной записи другого клиента.
В документации Microsoft говорится, что данные сообщений Teams остаются в Cosmos DB, а в сообщении инженеров Microsoft утверждается, что Copilot хранит там запросы пользователей и историю переписки.
Wiz заявила, что базы данных, поддерживающие эти продукты, потенциально доступны, но не сообщила о доступе к их данным.
В открытых источниках не указано, когда уязвимый механизм и путь к ключу подписи были внедрены, а также какой период охватывал анализ журналов Microsoft. Таким образом, продолжительность уязвимости остается неизвестной, хотя известный путь с тех пор был закрыт.