Аналитики из Orca Security обнаружили критическую уязвимость, затрагивающую Azure Cosmos DB. Проблема, которой исследователи дали название CosMiss, позволяла осуществлять неавторизованный доступ для чтения и записи к контейнерам, а также добиться выполнения произвольного кода.
Уязвимость связана с Jupyter Notebook для Azure Cosmos DB, который интегрируется с Azure и учетными записями Azure Cosmos DB для упрощения анализа и визуализации данных NoSQL и результатов запросов.
«Если злоумышленник знал forwadingID для Jupyter Notebook (UUID для Notebook Workspace), он имел полные права доступа к Notebook без аутентификации, включая доступ на чтение и запись, а также возможность изменять файловую систему контейнера, где работает Notebook», — пишут исследователи.
Дело в том, что когда пользователь создает новый Notebook в Azure Cosmos DB, создается новая конечная точка вместе с уникальным идентификатором нового сеанса или Notebook (UUIDv4). Исследователи изучили трафик запроса от недавно созданного Notebook к серверу и заметили наличие Authorization Header. Когда они удалили его и отправили запрос на перечисление всех Notebook на этом сервере, оказалось, что сервер отвечает нормально, так как Authorization Header не требуется.
В итоге аналитики Orca Security обнаружили, что могут изменять код в Notebook, перезаписывать данные, вставлять новые фрагменты или удалять их. Кроме того, выяснилось, что из-за раскрытия всех идентификаторов Notebook в рамках одной платформы, злоумышленники могут получить доступ и изменить любой из них.
В конечном итоге все это вообще могло привести к удаленному выполнению кода в контейнере Notebook путем перезаписи файла Python, связанного с Cosmos DB Explorer, для создания ревер-шелла. Впрочем, для успешной эксплуатации злоумышленник должен знать уникальный 128-битный идентификатор forwadingID и использовать его в течение часа, так как поле этого временный Notebook автоматически удаляется.
Компания Microsoft устранила уязвимость в начале октября. В своем бюллетене безопасности Microsoft отмечает, что не обнаружила никаких признаков эксплуатации этой проблемы и в целом характеризует использование уязвимости как весьма сложную задачу из-за случайности 128-битного forwadingID и его ограниченного срока службы.
«Клиенты, не использующие Jupyter Notebook (99,8% клиентов Azure Cosmos DB НЕ используют Jupyter Notebook), не подвержены этой уязвимости», — подчеркивают разработчики.