
Предотвращайте SSRF-атаки на AWS EC2 с помощью автоматических обновлений до более безопасного Instance Metadata Service v2 (IMDSv2).
Предотвращайте SSRF-атаки на AWS EC2 с помощью автоматического перехода на более безопасную версию Instance Metadata Service v2 (IMDSv2).
Назначение и возможности
У инженерных команд может быть огромное разнообразие вычислительной инфраструктуры в AWS, которую необходимо защитить от определённых уязвимостей, использующих сервис метаданных. Сервис метаданных требуется для работы на экземплярах, если используется какой-либо IAM или если экземпляру нужна информация из пользовательских данных при загрузке. Ограничение поверхности атаки ваших экземпляров имеет решающее значение для предотвращения возможности перемещения внутри вашей среды путём кражи информации, предоставляемой самим сервисом. Многочисленные известные атаки в прошлом использовали этот сервис для эксплуатации роли, прикреплённой к экземпляру, или для сброса конфиденциальных данных, доступных через сервис метаданных. Metabadger может помочь определить, где и как вы используете сервис метаданных экземпляров, а также дать вам возможность уменьшить нежелательные векторы атак для снижения общего уровня риска при работе в EC2.
Использование этого инструмента может повлиять на вашу вычислительную инфраструктуру AWS, так как не все сервисы и приложения могут работать без сервиса метаданных или на версии 2. Будьте осторожны при развёртывании в рабочей среде и подготовьте план отката на случай, если что-то пойдёт не так. Metabadger имеет встроенную возможность отката к версии 1 сервиса по умолчанию с помощью флага -v1; вы можете использовать его для быстрого отката экземпляров до версии по умолчанию. В идеале сначала запустите этот инструмент и обновите версию метаданных в нерабочих средах в качестве испытательного полигона перед применением.
Шаг 1
Сначала мы хотим определить общее использование сервиса метаданных в определённом регионе AWS. Metabadger оценит текущее состояние вашего использования в регионе, на который указывают ваши учетные данные в файле /.aws/credentials или текущая принятая роль. Вы также можете указать флаг --region при выполнении команды discover-metadata, если хотите переключиться на другой регион, отличный от текущего. Когда у вас будет хорошее представление о том, какую версию используют ваши экземпляры и включён ли сервис или отключён, вы сможете составить гораздо более чёткий план действий по усилению защиты сервиса. Обратите внимание, что подробное описание каждой опции метаданных можно найти здесь.
Шаг 2
Одной из областей, которую следует оценить при переходе на версию 2 сервиса, является использование ролей IAM. Metabadger позволяет идентифицировать экземпляры в регионе, которые уже могут использовать роль IAM. Команда discover-role-usage выведет список экземпляров с прикреплёнными ролями. Если у вас много экземпляров, использующих роли, следует соблюдать осторожность при обновлении сервиса до версии 2, чтобы не нарушить общую функциональность ваших рабочих нагрузок.
Шаг 3
После завершения первоначального обнаружения и оценки вы можете создать поэтапный подход к усилению защиты вашей вычислительной инфраструктуры, используя либо версию 2 сервиса метаданных, либо отключив его там, где он не используется. Команда harden-metadata по умолчанию обновляет все экземпляры в определённом регионе. Вы также можете передать теги экземпляров с помощью флага --tags или входной файл, содержащий CSV-список экземпляров, к которым вы хотите применить конфигурацию. После того как вы внесёте соответствующие обновления до версии 2 и отключите сервис там, где он не используется, вы можете повторно оценить ситуацию с помощью пунктов из Шага 1, чтобы убедиться, что ваша среда защищена. Если у вас есть определённые экземпляры, которые вы не хотите обновлять, вы можете исключить их с помощью флага --exclusion по тегу или идентификатору экземпляра.
Metabadger требует роль IAM или учетные данные со следующими разрешениями:
ec2:ModifyInstanceAttribute
ec2:DescribeInstances
При внесении изменений в Instance Metadata Service следует проявлять осторожность и следовать дополнительным рекомендациям AWS по безопасному обновлению до версии 2. Metabadger был разработан, чтобы помочь вам в этом процессе для дальнейшего повышения безопасности вашей вычислительной инфраструктуры в AWS.
Руководство по лучшим практикам AWS по обновлению до IMDSv2
Установка через pip
pip3 install --user metabadger
Установка через Github
$ git clone https://github.com/salesforce/metabadger
$ cd metabadger
$ pip install -e .
$ metabadger
Usage: metabadger [OPTIONS] COMMAND [ARGS]...
Metabadger is an AWS Security Tool used for discovering and hardening the
Instance Metadata service.
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
cloudwatch-metrics Pull CloudWatch Metrics for MetadataNoToken usage
disable-metadata Disable the IMDS service on EC2 instances
discover-metadata Discover summary of IMDS service usage within EC2
discover-role-usage Discover summary of IAM role usage for EC2
harden-metadata Harden the AWS instance metadata service from v1 to v2
cloudwatch-metrics
Непосредственное получение информации об использовании IMDSv1 с помощью метрики MetadataNoToken в AWS CloudWatch. Эта команда покажет экземпляры, которые активно используют версию 1 сервиса за последний час. Обратите внимание, что при выполнении этой команды у вас должны быть разрешения IAM на просмотр метрик CloudWatch.
Options:
-a, --all-region Pull CloudWatch metrics across all available
regions
-r, --region TEXT Specify which AWS region you will perform this
command in
-t, --time-period INTEGER The CloudWatch time period in seconds used to
track the IMDS v1 metric
-p, --profile TEXT Specify the AWS IAM profile.
--help Show this message and exit.
discover-metadata
Сводка общего использования сервиса метаданных экземпляров, включая используемую версию и общий процент принудительного применения. Эти цифры помогут вам понять общий уровень защиты вашего использования метаданных и то, где вы применяете версию 2 по сравнению с версией 1.
Options:
-a, --all-region Provide a metadata summary for all available regions in the AWS account
-j, --json Get metadata summary in JSON format
-r, --region TEXT Specify which AWS region you will perform this command in
-p, --profile TEXT Specify the AWS IAM profile.
discover-role-usage
Сводка экземпляров и используемых ими ролей; это даст вам хорошее представление о том, какие меры предосторожности необходимо соблюдать при внесении изменений в сам сервис метаданных.
Options:
-p, --profile TEXT Specify the AWS IAM profile.
-r, --region TEXT Specify which AWS region you will perform this command in
harden-metadata
Возможность изменить экземпляры для использования метаданных версии 1 или 2, а также понять, сколько экземпляров будет изменено, выполнив пробный запуск (dry run).
Options:
-a, --all-region Update IMDS across all regions in your account
-e, --exclusion The exclusion flag will apply to everything besides what is specified, tags or instances
-d, --dry-run Dry run of hardening metadata changes
-v1, --v1 Enforces v1 of the metadata service
-i, --input-file PATH Path of csv file of instances to harden IMDS for
-t, --tags TEXT A comma seperated list of tags to apply the hardening setting to
-r, --region TEXT Specify which AWS region you will perform this command in
-p, --profile TEXT Specify the AWS IAM profile.
disable-metadata
Используйте эту команду, чтобы полностью отключить сервис метаданных на экземплярах.
Options:
-e, --exclusion The exclusion flag will apply to everything besides what is specified, tags or instances
-d, --dry-run Dry run of disabling the metadata service
-i, --input-file PATH Path of csv file of instances to disable IMDS for
-t, --tags TEXT A comma seperated list of tags to apply the hardening setting to
-r, --region TEXT Specify which AWS region you will perform this command in
-p, --profile TEXT Specify the AWS IAM profile.
Все изменения, внесённые Metabadger, будут записаны в файл, сохраняемый в рабочей директории с именем metabadger.log. Файл будет содержать следующую информацию для каждого действия инструмента при изменении сервиса метаданных: