Zostały opracowane poprawki dla wszystkich wspieranych wersji PostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20, które naprawiają 56 błędów wykrytych w ciągu ostatnich trzech miesięcy. W nowych wersjach usunięto również lukę (CVE-2024-7348), ocenioną jako niebezpieczna (poziom zagrożenia 8.8 na 10). Luka ta spowodowana jest stanem wyścigu w narzędziu pg_dump, co pozwala atakującemu, który ma możliwość tworzenia i usuwania trwałych obiektów w bazie danych, na wykonanie dowolnego kodu SQL z uprawnieniami użytkownika, pod którym uruchomiono narzędzie pg_dump (zwykle pg_dump jest uruchamiane z uprawnieniami superużytkownika do tworzenia kopii zapasowych bazy danych).
Aby skutecznie przeprowadzić atak, należy śledzić moment uruchomienia narzędzia pg_dump, co jest łatwe do zrealizowania poprzez manipulacje z otwartą transakcją. Atak polega na zamianie sekwencji (sequence) na widok lub zewnętrzną tabelę, które definiują uruchamiany kod SQL, w momencie uruchomienia pg_dump, gdy informacja o obecności sekwencji została już uzyskana, ale dane jeszcze nie zostały wyświetlone. Aby zablokować lukę, dodano ustawienie „restrict_nonsystem_relation_kind”, które zabrania ujawniania nie-systemowych widoków i dostępu do zewnętrznych tabel w pg_dump.
Źródło: opennet.ru
