URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 134512
[ Назад ]

Исходное сообщение
"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с правами пользователя, запускающего pg_dump"

Отправлено opennews , 09-Авг-24 12:44 
Сформированы корректирующие обновления для всех поддерживаемых веток PostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20, в которых исправлено 56 ошибок, выявленных за последние три месяца. Среди прочего в новых версиях устранена уязвимость (CVE-2024-7348), помеченная как опасная (уровень опасности 8.8 из 10). Уязвимость вызвана состоянием гонки в утилите pg_dump, позволяющем атакующему, имеющему возможность создания  и удаления постоянных объектов в СУБД, добиться выполнения произвольного SQL-кода с правами пользователя, под которым запускается утилита pg_dump (обычно  pg_dump запускается с правами суперпользователя для резервного копирования СУБД)...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=61677


Содержание

Сообщения в этом обсуждении
"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 12:44 
Интересно, сколько хомячков запускало постгрешный дамп на продакшене из под суперпользователя, не пользуясь специально создаваемым бекап пользователем?

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 12:53 
Хах, вот же хомячки! Не ожидали наверное, что pg_dump внезапно начнет выполнять код, присланный из БД? Хах, выкусите, хомячки! <сарказм>

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 13:02 
Хорошие годные параноики ждут такого поведения всегда и везде.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено 1 , 09-Авг-24 12:55 
А разве не через pg_basebackup идёт бекапирование ?

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 16:01 
Можно и так и так, "в зависимости от", но где гарантии что и в нём нет какой нбиудь недосмотренной бяки?
😉

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 16:08 
ну и для особо ушлых - проверь у себя, pg_basebackup не идет ли у тебя так же от суперпользователя, и если нет, настраивай через выдачу прав на репликации.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 13:27 
pg_dump на проде? Ох лол, кто ещё тут хомячок.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 13:37 
Тут свидетель не лазать руками на прод.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено vvm13 , 09-Авг-24 13:50 
pg_dump же не годится и не предназначен для создания бекапа базы на проде. Только для чего-то такого, что совсем не важное и не жалко. Можно ещё вспомнить про миграцию между версиями или архитектурами, но даже так дело очень редкое.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 15:20 
Ты объясняешь это подкроватным админам, вершина карьеры которых - поднять nextcloud для бухов. Они даже не понимают о чем речь)

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 15:20 
Кроме миграций и бекапов на проде бывает много других интересных занятий.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 15:29 
Я ж говорю не понимают))

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 18:20 
> pg_dump же не годится и не предназначен для создания бекапа базы на проде

Сам придумал? Годится и предназначен.


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 18:54 
Если нет задачи его потом восстановить, то конечно. Ты на собесе только такое не скажи, а то на этом он будет окончен моментально.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 19:02 
В чём проблема с восстановлением? У нас он регулярно восстанавливается на staging. Я вижу что ты очень сильно что-то нам хочешь сообщить про своё непонимание pg_dump, но у тебя плохо получается.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 19:49 
Возможно он начитался статей каких нибудь гениев на гипотетическом хабре,
о кривизне бекапов, например баз 1с находящихся в работе онлайн,
не вникая в суть - когда и как можно и нужно использовать pg_dump
и какие условия для этого необходимо соблюсти для консистентности данных.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено User , 09-Авг-24 17:40 
Это не хомячок, это суслик. Ты его не видишь - а он есть! Неподалеку от сурикатов, которые папку с базой тарят и кротов, которые в снапшот vm веруют...

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 18:19 
Почему нет-то? Только его и используем.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 18:55 
Используем? Название конторы срочно.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 19:00 
Не поверишь, postgrespro)

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Я , 10-Авг-24 16:57 
А как же пгпробэкап??

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Ныряние со штангой , 13-Авг-24 10:37 
https://docs.gitlab.com/ee/administration/backup_restore/#da...

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 13:49 
Я, конечно, все понимаю, но...
Когда я там в последний раз запускал pg_dump? Ах да - никогда.
Запускать pg_dump при работающей базе? Чтобы что?

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено vvm13 , 09-Авг-24 13:59 
pg_dump internally executes SELECT statements.
pg_dump is used to transfer data to newer versions of PostgreSQL.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 14:36 
>pg_dump is used to transfer data to newer versions of PostgreSQL.

pg_upgrade же есть для этого:

$ /usr/pgsql-16/bin/pg_upgrade -b /usr/pgsql-13/bin/ -B /usr/pgsql-16/bin/ -d /var/lib/pgsql/13/data/ -D /var/lib/pgsql/16/data/ -o ' -c config_file=/var/lib/pgsql/13/data/postgresql.conf'  -O ' -c config_file=/var/lib/pgsql/16/data/postgresql.conf'


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 18:21 
Это дичь требующая ставить две версии постгреса и 2x места. Не нужно нам нахрен такого.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено 312 , 10-Авг-24 14:51 
Оно же хардлинками умеет, и не займет x2 места

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 11-Авг-24 15:22 
Но от двух версий сразу все равно не уйти, если применяется хоть одно расширение.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 12-Авг-24 10:18 
>Это дичь требующая ставить две версии постгреса и 2x места.

Ну а в чем проблема? В вашем любимом Slackware так нельзя без танцев с бубном? В RHEL колнах с этим никаких заморочек нет, и одинаковые экстеншены к разным версиям Postgres поставить через dnf тоже можно.
Поставил новую версию, запустил pg_upgrade, проверил что все хорошо, удалил старый Postgres и его данные (если копировал, а не хардлинками).


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 18:18 
> Запускать pg_dump при работающей базе? Чтобы что?

Чтобы получить слепок базы для бэкапа или клонирования. В чём проблема?


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 16:14 
Раз уж пошла такая пьянка, господа, кто что использует для резервного копирования с Pg:
1. pg_dump
2. pg_basebackup
3. различные виды репликации на бекап-негра.
4. что то упустил, типа ZFS\HAMMER снапшотов...

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 16:29 
5. Какие ещё бекапы?

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 17:30 
6 pg barman

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено User , 09-Авг-24 17:44 
Тут интересней не "что используется для бэкапа", а "что используется для restore'a" не всего кластера целиком, а ну вот - отдельной базы в нем)

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 19:24 
Ну если ты делаешь целиком basebackup, то как ты собираешься restore одной базы?
Сам себе злобный буратина?

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено User , 09-Авг-24 19:59 
> Ну если ты делаешь целиком basebackup, то как ты собираешься restore одной
> базы?
> Сам себе злобный буратина?

Ух, лапа - сколько же замечательных открытий ожидает тебя при чтении документации... Но чот боюсь - не дождутся.


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 22:07 
Какой документации? Максимум, что читает киса это "как зделоть бэкап nextcloud на руспбери" на яндекс.дзене.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 22:44 
Ты прав, сам я такого не нашел.
Итак, у нас есть бекап-архив (ну или директория) сделанная через pg_basebackup с дефолтового таблспейса.
Как же восстановить только одну отдельную базу 1с из десятка\сотни забекапированных, не разворачивая их все в соседний инстанс?
Ты же знаешь, не правда ли, иначе бы не язвил.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено User , 10-Авг-24 12:48 
> Ты прав, сам я такого не нашел.
> Итак, у нас есть бекап-архив (ну или директория) сделанная через pg_basebackup с
> дефолтового таблспейса.
> Как же восстановить только одну отдельную базу 1с из десятка\сотни забекапированных, не
> разворачивая их все в соседний инстанс?
> Ты же знаешь, не правда ли, иначе бы не язвил.

Use pg_probackup или pgbackrest, Luke!


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 10-Авг-24 13:02 
Ну, как бы на русском было написано:
"сделанная через pg_basebackup"...
перечитай https://www.opennet.me/openforum/vsluhforumID3/134512.html#44 и https://www.opennet.me/openforum/vsluhforumID3/134512.html#47
Если хочешь, замнем для ясности. (А так то я могу и Barman пользовать, и любую другую внешнюю тулзу.)

Вопрос, в том, что если ты делаешь бекап базы (например 1с) через pg_probackup, ты уверен, что в сохраненном тобой бекапе окажутся все данные баз?
Самое простое - как мы помним, права доступа к указанной базе и хранение Tablespace вынесены на уровень кластера, что, как мы понимаем, несколько выше, чем таблички сданными и индексы.
Вопрос - pg_probackup корректно их архивирует (и, естественно, восстанавливает)?


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено User , 10-Авг-24 22:18 
> Ну, как бы на русском было написано:
> "сделанная через pg_basebackup"...
> перечитай https://www.opennet.me/openforum/vsluhforumID3/134512.html#44 и https://www.opennet.me/openforum/vsluhforumID3/134512.html#47

Ну как бы на русском было написано - "кто что использует для restore'а одиночной базы в инстансе\кластере" -  basebackup, который для этой цели не то, чтобы подходит - притащили уже вы.  

> Если хочешь, замнем для ясности. (А так то я могу и Barman
> пользовать, и любую другую внешнюю тулзу.)

Эм, да - но нет. В смысле, если я ничего не путаю - то barman partial restore как раз таки и не.
Вот такая у нас замечательная субд - надежная, как швейцарские часы. Можно сделать дамп (который - нифига не бэкап in general - ну или очень-очень хреновый backup) отдельной бд - и иногда можно его даже восстановить. Правда - оказывается, есть риск поисполнять при этом чужой код. Можно вот сделать бэкап... всего сервера, с возможностью исключить при восстановлении ненужные базы... с нюансами в виде необходимости чтения всего бэкапа целиком, что, разумеется, аффектит RTO. Ну и можно вот по базе на инстанс распихать - с соответствующими накладными.
А других СУБД у меня для вас\нас не осталось :)

> Вопрос, в том, что если ты делаешь бекап базы (например 1с) через
> pg_probackup, ты уверен, что в сохраненном тобой бекапе окажутся все данные
> баз?

Эм, да. Но опять же - с нюансами. Есть поле для хорошо так "облажаццо".


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 10-Авг-24 23:33 
Ну, я притащил (как гипотетическую задачу), а вы подхватили...
Но спасибо за (не релевантный) ответ.


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 18:19 
pg_dump, конечно.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 10-Авг-24 14:10 
Для физического бэкапа (который нужен исключительно как бэкап) - pg_basebackup с hot standby.

Для логического бэкапа (когда может понадобиться поднять на другой версии, дампить только часть, погрепать, в конце концов, чтобы найти, в каком дампе удаленные данные) - pg_dump со слейва.


"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Аноним , 09-Авг-24 19:06 
Постгрес.
Отследить, маняпуляйции, Луна в Сатурне.
Понятно. Теоретическая возможность на верирарной СУБД.
Ок, да.

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено QULISA , 09-Авг-24 19:34 
Лучший способ сделать бекап

"Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с пра..."
Отправлено Rollo99 , 11-Авг-24 23:42 
Анонимы, которые НИКОГДА не используют pg_dump, расскажите секрет, как вы восстанавливаете только одну БД на дату или момент времени на том же или другом кластере с несколькими БД без его остановки?

imho, если и есть такие "волшебные" инструменты решающие эту задачу, то они используют pg_dump под капотом.