Тысячи ключей доступа к Amazon Web Services, попавших в публичный интернет, остаются действующими спустя годы после утечки. В исследовании Truffle Security повторно проверили 10 616 пар учетных данных AWS, найденных в открытых источниках с августа 2022-го по август 2026 года. На 10 августа 2026 года 9308 ключей, или 88%, все еще проходили аутентификацию.
Самая опасная часть выборки — корпоративные учетные данные с максимальными привилегиями. Исследователи связали 817 действующих ключей с компаниями. 526 принадлежали корневым пользователям AWS, еще 242 — IAM-пользователям с политикой AdministratorAccess. Итого 768 ключей обеспечивали полный административный доступ к корпоративным AWS-аккаунтам.
Многие учетные данные владельцы случайно опубликовали сами: они попадали в историю Git, открытые наборы данных, Docker-образы, реестры пакетов и журналы систем непрерывной интеграции. Исследование показывает факт публичного раскрытия ключей и сохранения доступа, но не доказывает, что каждый из них уже использовали злоумышленники.
За четыре года сканеры Truffle Security зарегистрировали 431 875 публичных обнаружений учетных данных AWS. Одни и те же секреты могли встречаться в нескольких местах, поэтому после удаления дубликатов осталось 64 024 уникальные пары ключей, связанные с 50 654 AWS-аккаунтами. На момент первоначального обнаружения все они проходили проверку AWS.
Из этой выборки 10 616 пар содержали полный набор данных, необходимый для повторной проверки. Именно их исследователи заново протестировали 10 августа. Действующими остались 9308.
AWS access key состоит из двух частей — идентификатора Access Key ID и секретного Secret Access Key. Вместе они используются для подписи программных запросов к AWS API, AWS CLI и SDK. Обладатель такой пары получает те же программные разрешения, которые назначены ее владельцу. Это принципиально отличается от обычного пароля для входа в веб-интерфейс AWS.
Из 9308 действующих ключей исследователи смогли связать 817 с компаниями. Для идентификации использовались контактные сведения AWS-аккаунта и корпоративные домены в именах пользователей.
У 526 корпоративных ключей был уровень root, а еще у 242 IAM-пользователей была назначена AdministratorAccess. Эти группы не пересекались. Оставшиеся 49 корпоративных ключей имели более ограниченные разрешения.
Корневой пользователь — самая привилегированная учетная запись в отдельном AWS-аккаунте. AWS указывает, что она имеет полный доступ к сервисам и ресурсам, включая платежную информацию, и настоятельно рекомендует вообще не создавать для root долгоживущие access keys.
В общей выборке из 64 024 уникальных ключей 10 625, или 16,6%, оказались root-ключами. Они относились к 9945 разным AWS-аккаунтам.
Еще 130 действующих root-ключей исследователи обнаружили у management accounts в AWS Organizations — управляющих аккаунтов организаций. Через такие аккаунты администрируют структуру AWS Organizations и организационные настройки.
Возраст учетных данных оказался одной из самых показательных частей исследования.
Точную дату создания удалось получить для 2903 действующих ключей, разрешавших вызов iam:ListAccessKeys. Их медианный возраст составил 1831 день — примерно пять лет. Самому старому действующему ключу было 17,4 года.
Свежих ключей в этой выборке почти не оказалось: только 25, или 0,9%, были созданы в течение 30 дней перед проверкой.
Еще показательнее ситуация с заменой учетных данных. Из тех же 2903 ключей только 398, или 13,7%, имели более новый ключ того же пользователя. Для остальных исследователи более свежего ключа не обнаружили.
AWS рекомендует по возможности использовать вместо постоянных ключей временные учетные данные и IAM-роли. Временные credentials имеют ограниченный срок жизни и после его окончания больше не могут использоваться.
У части ключей есть еще более явный признак того, что об утечке уже было известно. Исследователи изучили 7590 действующих ключей IAM-пользователей и обнаружили, что 929 пользователей имели одну из политик AWSCompromisedKeyQuarantine. AWS применяет такие политики, если учетные данные пользователя были скомпрометированы или публично раскрыты.
Карантин не означает полную блокировку учетной записи. Текущая политика AWSCompromisedKeyQuarantineV3 запрещает ряд потенциально опасных операций — например, запуск некоторых EC2-инстансов и изменение отдельных настроек IAM — с целью уменьшить возможный ущерб и нежелательные расходы, не остановив уже работающие ресурсы.
Еще 112 пользователей сохраняли первоначальную версию карантинной политики, которую AWS перестала назначать в 2023 году. Из этого исследователи делают вывод, что такие учетные данные были обнаружены как скомпрометированные как минимум несколько лет назад, но на момент проверки все еще проходили аутентификацию.
Самым крупным отдельным источником в массиве Truffle Security стал Hugging Face. Сканеры обнаружили там 8482 уникальных ключа, которые были действующими на момент обнаружения, в 3394 публичных наборах данных. Среди них 17,9% относились к root-пользователям — это самая высокая доля корневых ключей среди отслеживаемых исследователями источников.
Причина большого количества секретов в наборах данных связана в том числе с происхождением самих датасетов. Многие из них представляют собой снимки публичного исходного кода, собранные для обучения моделей. Если разработчик однажды закоммитил ключ в репозиторий, секрет мог попасть в датасет, а затем распространиться вместе с его копиями.
В общей выборке 43% ключей встречались более чем в одном публичном источнике. Поэтому простого удаления строки из текущей версии Git-репозитория недостаточно: секрет может оставаться в истории Git, контейнерах, артефактах сборки, наборах данных и их копиях.
Действующий облачный ключ опасен даже в ситуации, когда атакующего совершенно не интересуют внутренние документы компании.
Злоумышленник с достаточными правами может попытаться запустить дорогостоящие вычислительные ресурсы за счет владельца учетной записи — например, для майнинга криптовалюты.
Truffle Security смогла прочитать настройки AWS Budgets для 2754 ключей. Только 262 соответствующих аккаунта, или 9,5% доступной для проверки выборки, имели хотя бы одно бюджетное оповещение.
Для 1059 ключей был доступен Cost Explorer. Аккаунты из этой выборки потратили на AWS в июле в общей сложности $420 631. Пятьдесят аккаунтов потратили больше $1000, девять — больше $10 тыс.
Есть новость? Станьте автором.
Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.