CloudNativePG — это платформа, предназначенная для управления базами данных PostgreSQL в средах Kubernetes. До версий 1.28.4 и 1.29.2 CloudNativePG открывал соединения суперпользователя без закрепления search_path в fillDefaultParameters в pkg/management/postgres/pool/profiles.go. Роль, содержащая DATABASE OWNER, может создавать перегруженные встроенные операторы в общедоступной схеме и изменять базу данных или путь поиска_роли, вызывая запросы самоанализа менеджера экземпляров, такие как SELECT COUNT(*) > 0 FROM pg_catalog.pg_extension WHERE extname = $1, для выполнения функций, контролируемых злоумышленником, от имени суперпользователя postgres.
Та же проблема с доверием затронула сайты прямого вызова sql.Open("pgx", ...) и функцию public.user_search SECURITY DEFINER, обеспечивающую доступ суперпользователя PostgreSQL, выполнение команд операционной системы через COPY... FROM PROGRAM и доступ к токену ServiceAccount модуля. Эта проблема исправлена в версиях 1.28.4, 1.29.2 и 1.30.0.
Показать оригинальное описание (EN)
CloudNativePG is a platform designed to manage PostgreSQL databases within Kubernetes environments. Prior to 1.28.4 and 1.29.2, CloudNativePG opened superuser connections without pinning search_path in fillDefaultParameters in pkg/management/postgres/pool/profiles.go. A role holding DATABASE OWNER could create overloaded built-in operators in the public schema and change the database or role search_path, causing instance-manager introspection queries such as SELECT COUNT(*) > 0 FROM pg_catalog.pg_extension WHERE extname = $1 to execute attacker-controlled functions as the postgres superuser. The same trust issue affected direct sql.Open("pgx", ...) callsites and the public.user_search SECURITY DEFINER function, enabling PostgreSQL superuser access, operating system command execution through COPY ... FROM PROGRAM, and access to the pod ServiceAccount token. This issue is fixed in versions 1.28.4, 1.29.2, and 1.30.0.
Характеристики атаки
Последствия
Строка CVSS v4.0