Исследователи безопасности недавно изучили инфраструктуру базы данных IBM Cloud как услуги и обнаружили несколько проблем безопасности, которые позволили им получить доступ к внутренним серверам, используемым для создания образов баз данных для развертывания у клиентов. Продемонстрированная атака подчеркивает некоторые распространенные ошибки в системе безопасности, которые могут привести к компрометации цепочки поставок в облачной инфраструктуре.
The attack, developed by researchers at security firm Wiz, combines a privilege escalation vulnerability in the IBM Cloud Databases for PostgreSQL service, cleartext credentials scattered throughout the environment, and overly lax internal network access controls that allow lateral movement within the infrastructure. 4gdtu
PostgreSQL - привлекательная цель в облачных средах
Проведенный Wiz аудит IBM Cloud Databases for PostgreSQL является частью более масштабного исследовательского проекта, в рамках которого анализируются развертывания PostgreSQL крупнейшими облачными провайдерами, предлагающими этот механизм баз данных в качестве части своих управляемых решений "база данных как услуга". Ранее в этом году исследователи Wiz также обнаружили и раскрыли уязвимости в реализации PostgreSQL в Microsoft Azure и Google Cloud Platform (GCP).
[Advance your career with top security certifications: What they do, how much they cost, and what you need. | Sign up for the CSO newsletter. ]
Реляционная база данных PostgreSQL с открытым исходным кодом разрабатывается уже более 30 лет с упором на стабильность, высокую доступность и масштабируемость. Однако это сложное программное обеспечение не было разработано с моделью разрешений, подходящей для многопользовательских облачных сред, где экземпляры баз данных должны быть изолированы друг от друга и от базовой инфраструктуры.
1 секунда из 28 секундОбъем 0%
PostgreSQL обладает мощными возможностями, позволяющими администраторам вносить изменения в файловую систему сервера и даже выполнять код с помощью запросов к базе данных, но эти операции небезопасны и должны быть ограничены в общей облачной среде. В то же время другие операции управления, такие как репликация базы данных, создание контрольных точек, установка расширений и триггеров событий, должны быть доступны клиентам, чтобы сервис функционировал должным образом. Поэтому поставщикам облачных услуг (CSP) приходится придумывать обходные пути и вносить изменения в модель разрешений PostgreSQL, чтобы включить эти функции, даже если клиенты работают только с ограниченными учетными записями.

Повышение привилегий с помощью SQL-инъекций
Анализируя реализацию PostgreSQL в IBM Cloud, исследователи Wiz обратили внимание на механизмы логической репликации, доступные пользователям. Эта функциональность реализована с помощью нескольких функций базы данных, включая функцию create_subscription, которая принадлежит и выполняется суперпользователем базы данных с именем ibm.
Проанализировав код этой функции, исследователи обнаружили уязвимость SQL-инъекции, вызванную неправильной санацией передаваемых ей параметров. Это означает, что в функцию можно передать произвольные SQL-запросы, и она выполнит их от имени суперпользователя ibm. Исследователи использовали эту уязвимость с помощью оператора PostgreSQL COPY для выполнения произвольных команд на базовой виртуальной машине, на которой размещен экземпляр базы данных, и открытия обратного командного интерпретатора.
С помощью оболочки на системе Linux они начинают проводить разведку, чтобы понять свое окружение, например, составляют список запущенных процессов, проверяют активные сетевые соединения, проверяют содержимое файла /etc/passwd, в котором перечислены пользователи системы, и запускают сканирование портов в Linux. Внутренняя сеть обнаруживает другие серверы. Широко распространенное сканирование портов привлекло внимание службы безопасности IBM, которая связалась с командой Wiz и поинтересовалась их деятельностью.
"Обсудив нашу работу и поделившись с ними своими идеями, они любезно разрешили нам продолжить наши исследования и еще больше расширить границы безопасности, что отражает здоровую культуру безопасности в организации", - говорит команда Wiz.
Хранящиеся учетные данные приводят к атакам на цепочки поставок
The information gathered, such as environment variables, told the researchers that they were inside a Kubernetes (K8s) pod container, and after searching the file system, they discovered that the K8s API access token was stored locally in a file named /var/run/secrets/kubernetes middle. io/serviceaccount/token. The API token allows them to gather more information about the K8s cluster, but it turns out that all pods are associated with their account and run under the same namespace. But it’s not a dead end.
K8s - это система оркестровки контейнеров для развертывания программного обеспечения, в которой контейнеры обычно развертываются из образов - предварительно созданных пакетов, содержащих все файлы, необходимые для запуска контейнера и его предварительно настроенных служб. Эти образы обычно хранятся на сервере реестра контейнеров, который может быть публичным или частным. В случае IBM Cloud это частный реестр контейнеров, который требует аутентификации.
Исследователи использовали API-токены для чтения конфигурации подсистем в их пространстве имен и обнаружили в этих конфигурационных файлах ключи доступа к четырем различным внутренним реестрам контейнеров. Описание нового обнаруженного ключа в IBM Cloud's Identity and Access Management (IAM) API указывает на то, что он имеет доступ на чтение и запись к реестру контейнеров, что позволит исследователям перезаписывать существующие образы вредоносными.
Но позже я обнаружил, что описание ключа было неточным и я мог загружать только изображения. Такой уровень доступа имел последствия для безопасности, но не представлял прямой угрозы для других клиентов IBM Cloud, поэтому исследователи пошли дальше.
Образы контейнеров могут содержать множество конфиденциальной информации, которая используется при развертывании и впоследствии удаляется, включая исходный код, внутренние скрипты, ссылающиеся на другие сервисы в инфраструктуре, и учетные данные, необходимые для доступа к ним. Поэтому исследователи решили загрузить все образы из службы реестра и с помощью автоматизированных инструментов просканировать их на наличие секретов, таких как учетные данные и API-токены.
“To comprehensively scan the secrets, we decompressed the images and examined the combination of files that make up each image,” the researchers said. “Container images are based on one or more layers; each of them may contain secrets unintentionally. For example, if a secret exists in one layer but is removed from the next layer, it will be completely invisible inside the container. Therefore, scanning individually Each layer may reveal more secrets.”
В файле манифеста JSON для образа контейнера есть раздел "history", в котором перечислены исторические команды, выполненные в процессе сборки каждого образа. В нескольких из этих файлов исследователи обнаружили пароли, переданные им в качестве аргументов командной строки.
Уроки других организаций
Хотя обо всех этих проблемах команда IBM Cloud сообщила в частном порядке и устранила их, они не являются уникальными для IBM. По словам команды Wiz, проблема "разрозненных секретов" характерна для всех облачных сред.
Automated build and deployment workflows often leave secrets in various places such as configuration files, Linux bash history, log files, etc., which developers forget to clear after deployment is complete. Additionally, some developers accidentally upload their entire .git and CircleCI configuration files to the production server. Forgotten secrets that the Wiz team often uncovers include cloud access keys, passwords, CI/CD credentials, and API access tokens.
Еще одна распространенная проблема, играющая ключевую роль в атаках на IBM Cloud, - отсутствие строгого контроля доступа между производственными серверами и внутренними системами CI/CD. Это часто позволяет злоумышленникам перемещаться вбок и закрепиться в инфраструктуре организации.
Finally, private container registries can provide attackers with extensive information beyond credentials. They can reveal information about critical servers inside the infrastructure, or they can contain code that reveals other vulnerabilities. The Wiz team says organizations should ensure their container registry solutions implement appropriate access controls and scoping.