Критична уязвимост, наречена „CosmosEscape“, в Microsoft Azure Cosmos DB е могла да позволи на атакуващите да поемат контрол над практически всяка база данни, хоствана в услугата, включително собствените вътрешни системи на Microsoft.
Уязвимостта се е намирала в Gremlin API на Cosmos DB и при експлоатиране е можела да даде възможност за атака между отделни клиенти (cross-tenant), засягаща милиони потребителски среди и вътрешната инфраструктура на Microsoft.
Разбирането на тези структурни рискове става все по-важно при оценката на по-широката сигурност на облачните платформи в многоклиентски корпоративни среди.
Изследователи от Wiz са експериментирали с Gremlin – популярен език за заявки към графични бази данни, поддържан от Cosmos DB – когато забелязали необичайно изключение в .NET.
Тъй като повечето реализации на Gremlin с отворен код работят върху Java Virtual Machine (JVM), това подсказвало, че Cosmos DB използва персонализиран Gremlin двигател, базиран на .NET.
Тази разлика била от значение, тъй като Gremlin сървърите обикновено компилират заявките в изпълним код и ги стартират в рамките на ограничена изолирана среда, а тези изолирани среди в исторически план са се оказвали крехки срещу решени атакуващи.
Това подозрение се оправдало. Екипът открил, че двигателят на Cosmos DB превежда Gremlin заявките в .NET код, но не успява да ограничи адекватно рефлексията в .NET (reflection) – функция, която позволява на кода да инспектира и манипулира друг код по време на изпълнение.
Чрез експлоатиране на този пропуск изследователите изградили възможности за четене на файлове, запис на файлове и в крайна сметка пълно изпълнение на произволен код, използвайки само специално изготвени заявки, изпълнявани срещу собствената им база данни.
В забележителен демонстрационен пример специално проектирана Gremlin заявка изпълнила командата hostname директно върху бекенд инфраструктурата на Cosmos DB.
Това изпълнение на код осигурило на изследователите опора в DB Gateway – многоклиентския компонент, отговорен за изпълнението на потребителските заявки.
Впреки че потребителските бази данни не са били съхранявани в същите клъстери, Gateway все пак е трябвало да има начин да ги достигне, и е правел това с помощта на подписващ ключ, способен да извлече главния ключ на всеки акаунт.
От решаващо значение е, че този подписващ ключ не е бил ограничен до един клиент или регион; той е работил за различни клиенти, региони и формати на API, включително SQL, MongoDB, Cassandra и Gremlin.
Wiz нарекли тази мощна тайна „Cosmos Master Key“. Главният ключ също така отключвал достъпа до Config Store – на практика главната директория на Cosmos DB, съдържаща списък на всеки акаунт в платформата заедно с идентификатори на абонаменти, идентификатори на клиенти, мрежови правила и етикети.
Тъй като Config Store сам по себе си е бил база данни на Cosmos DB, подлежаща на заявки, атакуващите са можели да я използват за изброяване на всеки акаунт в даден регион или за филтриране на резултатите по идентификатор на клиент, за да се насочат прецизно към конкретна организация.
Според анализ, публикуван в блога за изследвания на Wiz, свързването на бягства от изолирана среда с неограничени подписващи ключове заобикаля основните граници за изолиране в облака.
Тези архитектурни рискове съвпадат с по-широките тенденции при уязвимостите на Microsoft, при които прекалено привилегированите машинни акаунти и разрешенията за базови услуги увеличават потенциалния обхват на пораженията от един-единствен недостатък.
Свързването на тези две възможности създавало опустошителен път за атака: изброяване на целите чрез Config Store, след което използване на Master Key за извличане на техния първичен ключ и получаване на пълен достъп за четене и запис до техните данни.
Тъй като Cosmos DB стои в основата на основни услуги на Microsoft като Microsoft Entra ID, Microsoft Teams и Microsoft Copilot, излагането на риск се е разпростирало далеч отвъд обикновените корпоративни клиенти и е обхващало собствените бекенд системи на Microsoft.
Дори частни, мрежово изолирани бази данни са били изложени на риск, тъй като самият компрометиран DB Gateway е налагал тази изолация.
Оценката на тези вектори между отделни среди подчертава защо екипите по сигурността трябва непрекъснато да извършват одит за заплахи в облачните регистрационни файлове и за неочаквани модели на достъп в критичните хранилища на данни.
Wiz отговорно разкрили CosmosEscape на Microsoft, които внедрили бърза спешна корекция и оттогава напълно са отстранили уязвимостта, като са премахнали изцяло Cosmos Master Key и са добавили нови архитектурни защити.
Разследването на Microsoft не откри доказателства уязвимостта да е била експлоатирана злонамерено преди разкриването ѝ, и не се изискват действия от страна на клиентите на Azure Cosmos DB.