Почему переменные среды безопасны после взлома Heroku в 2022 году?

Вопрос или проблема

В их сообщении о нарушении безопасности в апреле 2022 года (резюме здесь) Heroku заявляет, что переменные окружения (кроме Review-приложений и CI-переменных) были в безопасности, поскольку они зашифрованы в покое.

Также мы хотели ответить на вопрос о том, как это повлияло на переменные окружения. Хотя мы подтвердили, что злоумышленник имел доступ к зашифрованным секретам клиентов Heroku, хранящимся в переменной конфигурации, секреты зашифрованы в покое, и злоумышленник не имел доступа к ключу шифрования, необходимому для расшифровки секретов переменной конфигурации.

Мне интересно, что мешает хакеру, который смог их скачать, попробовать множество случайных ключей шифрования для переменной окружения DATABASE_URL, например, пока не расшифрует её в нечто, что начинается с postgres, и таким образом найдёт ключ. Как только они получат ключ, они смогут расшифровать всё остальное.

Что я здесь упускаю?

То, что вы предлагаете, это попытка брутфорса расшифровки. Если бы это было возможно, то не существовало бы криптографии с открытым ключом, а это значит, что не было бы и Ethereum.

Переменные окружения никогда не безопасны, поскольку они фактически подвергают себя каждому интерфейсу, который взаимодействует с развертыванием вашего сервиса. Конечно, шифрование в покое — это хорошая идея, но почти каждый сервис использует какого-то провайдера, который делает это по умолчанию. Это немного похоже на утверждение, что ваши деньги в безопасности, потому что вы положили их в банк.

Существует множество причин никогда не использовать переменные окружения для хранения учетных данных. Основные причины заключаются в том, что это фактически добавляет точки уязвимости для ваших учетных данных, а не уменьшает их.

Удивительно, но это именно то неправильное, что предлагает Heroku:

Храните свои секреты в переменных окружения. Библиотека, такая как dotenv, может бесшовно загружать и использовать эти переменные, при условии, что они доступны в безопасном месте. Другой вариант — использовать продукт, такой как Hashicorp Vault, который позволяет вашему приложению управлять секретами через настраиваемый CLI.

Я искренне не могу поверить, что есть провайдер, которому люди доверяют и который дает такие советы. И поскольку существует всего лишь несколько стратегий, последние из которых — это переменные окружения, я чувствую себя обязанным поделиться ссылкой на этот разговор о взрослых решениях проблемы.

Ответ или решение

После инцидента с безопасностью на Heroku в апреле 2022 года многие пользователи задаются вопросом, насколько безопасны переменные среды и почему их считали защищенными. Давайте разберемся в этом вопросе.

Согласно официальным сообщениям от Heroku, переменные среды (или конфигурационные переменные) были защищены, потому что они шифруются на уровне хранения данных. Это означает, что даже если злоумышленник получил доступ к зашифрованным значениям переменных, он не имел доступа к ключу шифрования, необходимому для их декодирования. Важно понимать, что криптографические методы, используемые для шифрования данных, строятся таким образом, что простое перебор всех возможных ключей (брутфорс) практически невозможно, особенно если используются современные алгоритмы шифрования. Они обеспечивают такую степень сложности, что даже мощные вычислительные ресурсы потребуют астрономического времени для нахождения правильного ключа.

Однако ваше беспокойство относительно возможности шифрования переменных среды вполне оправдано, особенно с учетом того, что они могут быть доступны через множество интерфейсов, взаимодействующих с вашим приложением. В этом контексте переменные среды действительно представляют собой одну из уязвимостей. Поэтому эксперты по безопасности настоятельно рекомендуют избегать использования переменных среды для хранения чувствительных данных, таких как учетные записи и пароли.

Несмотря на это, использование переменных среды, как предложено в документации Heroku, является распространенной практикой, которая рекомендуется многими поставщиками сервисов. Их довод заключается в том, что переменные среды позволяют удобно управлять конфиденциальной информацией, обеспечивая доступ к данным в безопасной среде. Однако это лишь частично правда, и существуют более безопасные альтернативы, такие как использование специализированных решений для управления секретами, например HashiCorp Vault. Такие инструменты позволяют централизованно хранить и управлять секретами, минимизируя потенциальные точки уязвимости.

Таким образом, несмотря на то, что переменные среды на Heroku шифруются и в определенной степени защищены, это не избавляет вашу конфиденциальную информацию от угроз. Лучше использовать продуманные стратегии управления секретами, которые включают в себя минимизацию доступа, центральное управление и шифрование, чтобы обеспечить большую безопасность ваших данных.

Оцените материал
Добавить комментарий

Капча загружается...