Согласно исследованию, представленному сегодня на Black Hat, критические уязвимости Black Hat по крайней мере в шести облачных сервисах AWS могли позволить злоумышленникам выполнить удаленный код, украсть данные или даже захватить аккаунт пользователя без его ведома.
Команда Nautilus из Aqua Security подробно рассказала об уязвимостях, которые с тех пор были устранены гигантом облачных сервисов, в докладе на конференции под названием «Взлом учетных записей AWS через теневые ресурсы».
Но сначала они пообщались с The Registerо том, как изощренные преступники, например те, кто поддерживается национальными государствами, могут предсказывать имена контейнеров AWS S3, а затем также использовать новый метод, который они называют «Монополия контейнера», чтобы по сути предварительно загрузить вредоносный код в контейнер и ждать, пока целевая организация непреднамеренно выполнит его.
Это, как утверждают исследователи, могло привести к «катастрофическим» атакам на любую организацию в мире, которая когда-либо использовала шесть рассматриваемых облачных сервисов.
«В конце концов, любая уязвимость, которая может привести к созданию пользователя-администратора и фактическому захвату учетной записи, рискованна, а последствия могут быть разрушительными для организации», — сказал Ассаф Мораг, ведущий аналитик данных исследовательской группы Aqua Nautilus, изданию The Register.
Кроме того, хотя AWS устранила уязвимости в этих шести сервисах — CloudFormation, Glue, EMR, SageMaker, ServiceCatalog и CodeStar — аналогичные проблемы могут по-прежнему существовать в других предложениях AWS и проектах с открытым исходным кодом, многие из которых используют контейнеры S3 для реализации.
Именной сквоттинг «на стероидах»
Недостатки вытекают из предсказуемых имен контейнеров S3. Когда организация впервые использует любой из этих шести сервисов в новом регионе, AWS автоматически создает контейнер S3 с определенным именем. Имя контейнера одинаково во всех регионах AWS — за исключением части региона — и оно разделено на имя сервиса идентификатора учетной записи AWS, случайный хэш из 12 символов и имя региона.
После создания нового контейнера его имя становится уникальным, и никто другой не может создать другой контейнер с таким же именем.
Например, учетная запись AWS, использующая CloudFormation в регионе us-east-1, может иметь следующее имя: cf-templates-123abcdefghi-us-east-1
А затем, если та же учетная запись использует CloudFormation в другом регионе, например eu-west-2, AWS автоматически создаст новый контейнер с именем: cf-templates-123abcdefghi-eu-west-2
Всего в AWS 33 таких географических региона.
Сначала: проделывание дыр в CloudFormation
Начиная с CloudFormation, Aqua Nautilus решила выяснить, может ли злоумышленник угадать имя контейнера CloudFormation S3, а затем создать новый контейнер в другом регионе до того, как это сделает жертва? Ответ, конечно же, был да.
И предполагается, что злоумышленник может создать этот фальшивый контейнер, который будет выглядеть как настоящий, а затем, когда жертва попытается использовать свой CloudFormation в другом регионе, она увидит этот контейнер и решит, что он принадлежит ей.
Между тем, злоумышленник мог уже заполнить его вредоносным содержимым, которое затем будет внедрено во все, что работает с этим бакетом. Или они могли сидеть сложа руки и ждать, пока жертва сбросит конфиденциальные файлы в бакет, а затем получить полный доступ к этим данным, среди прочих гнусных деяний.
«Это очень реалистичный сценарий», — сказал Мораг The Register. «Все, что вам нужно, это иметь идентификатор учетной записи компании, и если вы проведете краткий сбор информации об угрозах или сеанс разведки угроз в отношении компании, вы сможете ее найти».
Хотя он добавил, что хакеры или мошенники с ограниченными техническими возможностями не смогут этого сделать, «мы говорим о спонсируемых государством субъектах угроз, более продвинутых, профессиональных злоумышленниках».
Самая большая проблема — определение хеша жертвы, который уникален для каждой учетной записи, но одинаков во всех регионах. Он состоит из 12 символов, как букв, так и цифр, и, по данным Aqua, существует около 4 738 381 338 321 616 896 возможных комбинаций, поэтому их невозможно угадать или перебрать.
«Возможных комбинаций огромное количество, поэтому мы применили другой подход», — сказал бывший исследователь Aqua Майкл Качинский. Это включало использование регулярных выражений GitHub и поиск Sourcegraph, а также скрапинг открытых баз данных в поисках утекших хешей, «и мы нашли приличное количество», — отметил он.
В пятницу команда Aqua опубликует технический анализ уязвимостей и потенциальных эксплойтов во всех различных сервисах AWS, так что следите за ним. Но вот что, по словам группы по анализу угроз, может сделать злоумышленник, если ему известна часть хэша CloudFormation целевого аккаунта AWS.
Первая, которую Ян Маккей назвал S3 Bucket Namesquatting в более раннем блоге о злоупотреблении предсказуемыми механизмами именования S3 buckets, происходит, когда жертва пытается развернуть новый стек CloudFormation в другом регионе — и обнаруживает, что предполагаемое имя bucket уже было захвачено злоумышленником. CloudFormation возвращает сообщение об ошибке, поскольку имя bucket уже используется, и жертва не может использовать функцию «загрузить файл шаблона» в CloudFormation.
Исследователи считают это атакой типа «отказ в обслуживании», отчасти потому, что по умолчанию S3 buckets блокируют весь публичный доступ, чтобы жертва не могла выполнять какие-либо действия с контролируемым злоумышленником bucket.
Но подождите, это еще не все
Однако, чтобы сделать что-то еще более неприятное, преступник может изменить настройки конфигурации корзины S3, чтобы сделать ее общедоступной. Эта атака также требует написания разрешительной политики, которая позволяет службе жертвы читать и записывать данные в корзину злоумышленника и из нее.
«А затем корзина просто сидит, ожидая, пока уязвимая служба запишет в нее некоторые данные. это», — рассказал The Register ведущий исследователь безопасности Aqua Якир Кадкода.
В этом сценарии организация-жертва пытается создать контейнер S3 в новом регионе и загрузить файл шаблона в CloudFormation. Контейнер уже существует, и из-за его разрешительной политики учетная запись жертвы доверяет ему и может записывать в него файлы — включая шаблоны с учетными данными пользователей и другой конфиденциальной информацией — что приводит к атаке с раскрытием информации.
И наконец, в сценарии, который может закончиться очень, очень плохо для организации-жертвы, Aqua разработала доказательство концепции, в котором преступники используют проблему времени проверки до времени использования (TOCTOU) в CloudFormation, чтобы изменить шаблоны до их выполнения и создать административную роль.
CloudFormation был первым сервисом AWS, который Aqua попыталась эксплуатировать — и успешно нашла открытые хеши на GitHub — путем злоупотребления контейнерами S3. Но после просмотра «нескольких десятков» других, использующих похожие методы атаки, они выявили в общей сложности шесть уязвимых облачных сервисов.
Опять же, вы можете прочитать обо всех шести в предстоящем исследовании, но еще один особенно страшный позволит злоумышленникам внедрить код в AWS Glue, что приведет к удаленному выполнению кода. Glue — это сервис интеграции данных, который автоматизирует процесс извлечения, преобразования и загрузки (ETL) для аналитики и машинного обучения.
Похожий механизм именования в SageMaker, сервисе AWS для обучения и развертывания моделей машинного обучения в больших масштабах, может быть использован для манипулирования данными и раскрытия конфиденциальных данных, используемых для обучения моделей машинного обучения.
«Это как мина», — сказал Качинский.
Никто в AWS не захотел комментировать эту историю. ®