Недавно мы писали про устранение серьезной уязвимости PostgreSQL в свежем выпуске Greenplum 6.21.1. Продолжая тему cybersecurity, сегодня разберем другие значимые угрозы, которые были устранены в этой MPP-СУБД в 2022 и 2021 годах.
Угрозы безопасности Greenplum и PostgreSQL
Будучи основанной на объектно-реляционной СУБД PostgreSQL, что мы разбирали здесь, Greenplum подвержен многим ее уязвимостям. В частности, уязвимость CVE-2022-1552, связанная с тем, что автоочистка (Autovacuum), переиндексация (REINDEX), индексация (CREATE INDEX), обновление материализованного представления (REFRESH MATERIALIZED VIEW), CLUSTER и pg_amcheck и другие операции не использовали изолированную программную среду с ограничениями безопасности. Это приводило к тому, что привилегированный пользователь обслуживал объекты другого пользователя, а сами команды активировали соответствующие защиты слишком поздно или вообще не делали этого. В итоге злоумышленник, имеющий разрешение на создание невременных объектов хотя бы в одной схеме, мог выполнять произвольные функции SQL под учетной записью суперпользователя.
Эта уязвимость устранена в обновлении PostgreSQL и Greenplum. Альтернативой обновлению является отключение автоочистки и отказ от ручного запуска вышеперечисленных команд. Также придется отказаться от восстановления на основе вывода команды pg_dump. Впрочем, такое обходное решение может снизить производительность системы. Впрочем, если доверенный пользователь владеет целевым объектом, все указанные команды являются безопасными.
В 2022 году была обнаружена еще одна важная уязвимость PostreSQL, типичная для многих реляционных баз данных под названием SQL-инъекция, когда злоумышленник может внедрить в SQL-запрос вредонослный код. В частности, уязвимость CVE-2022-31197 связана с JDBC-драйвером PostgreSQL (PgJDBC), которая позволяет Java-программам подключаться к базе данных PostgreSQL, используя стандартный независимый код Java. Реализация PgJDBC-метода java.sql.ResultRow.refreshRow() не выполняет экранирование имен столбцов, поэтому имя вредоносного столбца, содержащее терминатор оператора, например, `;`, может привести к SQL-инъекции. Это чревато выполнением дополнительных SQL-команд от имени пользователя JDBC-приложения. Другие пользовательские приложения, которые не вызывают этот метод, не затрагиваются.
А пользовательское приложение, вызывающее метод java.sql.ResultRow.refreshRow(), подвергается воздействию уязвимости, если базовая база данных, к которой они обращаются через свое JDBC-приложение, находится под контролем злоумышленника. Атака требует, чтобы злоумышленник обманом заставил пользователя выполнить SQL-запрос для имени таблицы, имена столбцов которой будут содержать вредоносный SQL-код, и вызвать метод обновления строки для результирующей выборки (ResultSet). При этом пользователь JDBC-приложения и владелец схемы данных могут не совпадать. Поэтому приложение JDBC, которое выполняется от имени привилегированного пользователя, запрашивающего схемы базы данных, принадлежащие потенциально злонамеренным пользователям с меньшими привилегиями, будет уязвимо. В этой ситуации злоумышленник может создать схему данных, которая заставит приложение выполнять команды от имени привилегированного пользователя. Эта уязвимость будет устранена в версиях PostgreSQL 42.2.26 и 42.4.1, до которых рекомендуется обновиться. Примечательно, что других альтернатив обхода этой проблемы нет.
В ноябре 2021 года в версиях Greenplum до 5.28.14 и 6.17.0 выполнение определенных SQL-операторов приводило к сохранению конфиденциальной (учетной) информации в журналах базы данных. В итоге злоумышленник с доступом к журналам мог прочитать конфиденциальную (учетные данные) информацию о пользователях. Эта уязвимость CVE-2021-22030 отмечена средним уровнем серьезности и была оперативно устранена разработчиками MPP-СУБД.
Впрочем, в то же самое время была обнаружена еще одна важная уязвимость CVE-2021-22028 критического уровня. В версиях Greenplum до 5.28.6 и 6.14.0 была возможность обхода пути к файлу, приводящая к раскрытию информации из файловой системы. Благодаря этому злоумышленник мог читать из файловой системы и записывать информацию в нее. Как и предыдущая уязвимость, она была оперативно устранена выпуском патча, который нужно было установить пользователям.
Освойте администрирование и эксплуатацию Greenplum и Arenadata DB для эффективного хранения и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники