Новоразкрита уязвимост в PostgreSQL, следена като CVE-2026-6471 и наречена PostGREShell, може да позволи на атакуващи с достъп за репликация на ниско ниво да изпълнят произволен код върху сървъри с бази данни.

Дефектът в логическото декодиране на PostgreSQL е съществувал приблизително 12 години и вече е отстранен в поддържаните версии. PostgreSQL се използва широко за съхранение на бизнес данни, записи на приложения, данни за клиенти, финансова информация и облачни работни товари.

Уязвимостта е особено тревожна, тъй като засяга тип акаунти, които обикновено се използват за резервни копия, репликация, възстановяване след бедствие и операции за улавяне на промени в данните (change data capture).

Проблемът засяга обикновени (не-superuser) акаунти в PostgreSQL, които притежават атрибута REPLICATION. Тези акаунти обикновено се използват за поддръжка на репликация на бази данни, позволявайки на пасивни (standby) сървъри и системи за архивиране да получават промени в данните от основния сървър.

Изследователите обаче установиха, че акаунт с активирана репликация може да злоупотреби с функцията за логическо декодиране, за да принуди PostgreSQL да зареди библиотека, контролирана от атакуващия.

Логическото декодиране позволява на външни инструменти да четат промените в базата данни от журнала за предварително записване (write-ahead log) на PostgreSQL. То използва приставки за изход (output plugins), за да форматира тези промени за инструменти за репликация, анализи, миграция и потоци от данни.

12-годишна уязвимост в PostgreSQL

В уязвимите версии PostgreSQL не ограничава правилно пътя до библиотеката, предоставен като име на приставка за изход. В резултат на това атакуващ с привилегии за REPLICATION би могъл да насочи PostgreSQL към зловредна споделена библиотека, налична за акаунта на операционната система, работещ с базата данни.

След това PostgreSQL зарежда файла, използвайки функции на операционната система за зареждане на библиотеки, като dlopen() в Linux и macOS или LoadLibrary() в Windows. Зловредният код се изпълнява с правата на процеса на сървъра PostgreSQL.

Това е от изключителна важност, тъй като на киберпрестъпника не са му необходими права на администратор (superuser) в PostgreSQL, за да започне атаката. Репликационен акаунт с ниски привилегии може да се превърне във входна точка за изпълнение на код върху сървъра за бази данни.

Оттам атакуващите могат да се опитат да получат достъп до чувствителни бази данни, да откраднат идентификационни данни, да променят разрешенията на акаунти, да инсталират постоянни задни врати (backdoors) или да се придвижат по-дълбоко в мрежовата среда.

Cyera Research откри CVE-2026-6471 – дефект, датиращ от версията PostgreSQL 9.4 от 2014 г., който произтича от недостатъчни ограничения за пътя до библиотеките в работния процес за логическа репликация.

Проектът PostgreSQL е пуснал корекции за сигурност за уязвимостта. Организациите трябва да преминат към PostgreSQL 18.6, 17.11, 16.15, 15.19 или 14.24, в зависимост от използваната от тях клонова версия. Версиите, по-стари от тези коригирани издания, са засегнати.

Администраторите трябва също така да одитират всички акаунти с атрибута REPLICATION и да премахнат тази привилегия от акаунти, за които тя не е абсолютно необходима. Връзките за репликация трябва да бъдат ограничени чрез строги правила в pg_hba.conf и доверени изходни IP адреси.

Екипите, отговарящи за базите данни, трябва да прегледат активността по логическа репликация за необичайни опити за създаване на слотове за репликация или съмнителни имена на приставки, съдържащи файлови пътища, низове за обхождане на директории (directory traversal) или неочаквани имена на библиотеки.

Ограничаването на ненужния изходящ мрежов достъп от сървърите за бази данни, особено на SMB и NFS трафик, също може да намали риска от отдалечено доставяне на зловредни библиотеки.

CVE-2026-6471 показва, че оперативните акаунти за бази данни могат да се превърнат в цел с голямо въздействие. Идентификационните данни за архивиране може да изглеждат с нисък риск, но в този случай те могат да осигурят път към изпълнение на код и пълно компрометиране на средата на PostgreSQL.