Oprava vydána CVSS 8,8 Aktuálně

PostgreSQL opravil 52 bezpečnostních chyb, nejzávažnější CVE-2026-6460 dovolí spustit kód na databázovém serveru

Projekt PostgreSQL ve čtvrtek 12. listopadu 2026 vydal verze 18.7, 17.12, 16.16, 15.20 a 14.25 s opravou 52 bezpečnostních chyb a více než 140 dalších. Nejvíc pozornosti si zaslouží CVE-2026-6460 (CVSS 8,8): uživatel, který smí v databázi vytvářet objekty, může přes záměnu typů po ALTER … SET DATA TYPE spustit libovolný kód pod účtem, pod kterým běží databáze. Úplná ochrana navíc vyžaduje přestavět rozšíření psaná v C. Zneužití se nehlásí. PostgreSQL 14.25 je poslední verze řady 14.

Redakce Kyberkitu · · událost ze dne · čtení na 6 minut · Pro správce a analytiky

Oprava vydána: PostgreSQL, CVE-2026-6460, CVSS 8,8

Ve zkratce

  • Týká se: správců vlastních serverů PostgreSQL řad 14 až 18 a vývojářů a dodavatelů rozšíření psaných v C. Spravované databáze v cloudu aktualizuje poskytovatel – ověřte u něj, kdy nasadí nové verze.
  • Nejdůležitější: CVE-2026-6460 (CVSS 8,8) – kdo smí vytvářet objekty (tabulky, typy), může přes záměnu typů po změně datového typu sloupce spustit kód na serveru jako systémový uživatel databáze. Dalších 31 chyb má rovněž skóre 8,8 a většina z nich podle popisu projektu umožňuje spustit kód.
  • Většina chyb vyžaduje přihlášeného uživatele databáze. Riziko je proto největší tam, kde k databázi přistupuje víc lidí nebo aplikací s právem vytvářet objekty: sdílené a vícenájemní instalace, analytické platformy, vývojová prostředí, napadená webová aplikace.
  • Pozor i na nástroje: pg_dump, pg_restore, reindexdb a vacuumdb mají vlastní chyby (SQL injection, spuštění kódu při obnově nedůvěryhodné zálohy). Aktualizujte i klientské balíčky na stanicích a v CI.

Zranitelnosti: CVE-2026-6460, CVE-2026-18447, CVE-2026-14661, CVE-2026-116314, CVE-2026-116330

Co se stalo

PostgreSQL Global Development Group ve čtvrtek 12. listopadu 2026 vydal opravné verze všech podporovaných řad: 18.7, 17.12, 16.16, 15.20 a 14.25 (a k tomu druhého kandidáta na vydání PostgreSQL 19). Opravují 52 bezpečnostních chyb (CVE) a podle oznámení přes 140 dalších chyb.

Jde o vedlejší verze: stačí zastavit server a vyměnit binární soubory, dump a obnova ani pg_upgrade nejsou potřeba. Kvůli opravě CVE-2026-6460 je ale potřeba přestavět rozšíření psaná v C a po aktualizaci podle situace i přeindexovat některé indexy.

Oznámení zneužití neuvádí. PostgreSQL 14.25 je poslední verzí řady 14 – řada 14 už další opravy nedostane.

Technické podrobnosti

Údaje jsou z bezpečnostního oznámení PostgreSQL, poznámek k vydání 18.7 a záznamu NVD. Návod ke zneužití nezveřejňujeme.

CVE-2026-6460 (CVSS 3.1 8,8, CWE-843 – záměna typů): uživatel, který smí vytvářet objekty, může spustit libovolný kód pod účtem operačního systému, pod kterým běží databáze. Hlavní cestou je ALTER … SET DATA TYPE (změna datového typu sloupce nebo složeného typu), projekt uvádí i další sekvence příkazů DDL, například přidání sloupce, ROLLBACK a nové přidání sloupce.

Příčina: PostgreSQL nedostatečně sledoval, jakého typu jsou uložené hodnoty, a hodnoty samy svůj typ nenesly. Po změně struktury typu tak v systému mohly zůstat „zastaralé“ hodnoty se starým rozložením – v katalogu, v proměnných PL/pgSQL a jinde. Když je server přečetl podle nové struktury, četl paměť špatně. Nebezpečné byly hlavně změny složených typů souběžně s dotazy, které je používají.

Oprava podle poznámek k vydání:

  • zavádí verzování složených hodnot, aby server poznal hodnotu, která neodpovídá aktuálnímu popisu typu,
  • přidává zámky (např. proti ALTER TYPE na typu použitém v ještě nepotvrzeném CREATE TABLE),
  • zpřísňuje, kdy je ALTER COLUMN TYPE povolené, pokud na typu něco závisí (např. výchozí výraz funkce),
  • přidává parametr serveru composite_type_mismatch, kterým jde kontroly vypnout – s bezpečnostním rizikem.

Chybu nahlásila řada výzkumníků a týmů, mezi nimi OpenAI Security Research, program Anthropic OSS a Ada Logics.

Další chyby ze stejného vydání (výběr):

CVE Co dělá CVSS
CVE-2026-18447 záměna typů u výstupních parametrů → spuštění kódu 8,8
CVE-2026-14661 dblink a předplatné logické replikace mohou připisovat do libovolných souborů 8,1
CVE-2026-120145 logická replikace může zapisovat do systémového katalogu odběratele → spuštění kódu 8,8
CVE-2026-116314 pg_restore nekontroluje archivy jiného než textového formátu → spuštění kódu 8,8
CVE-2026-116330 restore.sql v tar záloze z pg_dump neblokuje příkazy psql 8,8
CVE-2026-116318, CVE-2026-116325 SQL injection v pg_dump (název omezení) a reindexdb (název indexu) 8,8 / 8,0
CVE-2026-116313 vacuumdb --missing-stats-only: vlastník databáze spustí kód jako uživatel vacuumdb 7,2
CVE-2026-6467, CVE-2026-120153 skripty rozšíření: podvržení objektů a SQL injection přes názvy 7,2
několik CVE use-after-free v PL/Perl a PL/Tcl → spuštění kódu 8,8
CVE-2026-116311, CVE-2026-120154 obejití politik zabezpečení na úrovni řádků (RLS) 5,4 / 4,3

Celkem 32 chyb má skóre 8,8 a většina z nich podle popisu vede ke spuštění kódu; většina chyb vyžaduje přihlášeného uživatele databáze, typicky s právem vytvářet objekty.

Jak se z uživatele databáze stane útočník na serveru1. Útočník má účet v databázi s právem vytvářet objekty – vlastní, aplikační, nebo získaný přes SQL injection; 2. Sekvencí příkazů DDL (změna datového typu) vyvolá záměnu typů; 3. Spustí kód jako systémový uživatel databáze (obvykle postgres); 4. Čte všechna data na serveru bez ohledu na práva v PostgreSQL a pokračuje dál do sítě1Útočník má účet v databázi s právemvytvářet objekty – vlastní,aplikační, nebo získaný přes SQLinjection2Sekvencí příkazů DDL (změna datovéhotypu) vyvolá záměnu typů3Spustí kód jako systémový uživateldatabáze (obvykle postgres)4Čte všechna data na serveru bezohledu na práva v PostgreSQLa pokračuje dál do sítě
Možný průběh útoku přes CVE-2026-6460 na neopraveném serveru (podle oznámení PostgreSQL)

Koho se to týká

Řada Zranitelné Opravené
PostgreSQL 18 před 18.7 18.7
PostgreSQL 17 před 17.12 17.12
PostgreSQL 16 před 16.16 16.16
PostgreSQL 15 před 15.20 15.20
PostgreSQL 14 před 14.25 14.25 (poslední verze řady)
  • Nejvíc ohrožené jsou servery, kde mají právo vytvářet objekty nedůvěryhodní nebo méně důvěryhodní uživatelé: sdílený hosting databází, vícenájemní aplikace, analytická prostředí, kde si analytici vytvářejí vlastní tabulky, a aplikace s jedním všemocným účtem.
  • Rozšíření psaná v C (vlastní i od třetích stran) je potřeba přestavět proti nové verzi; některá podle projektu vyžadují úpravu kódu.
  • Chyby v pg_dump, pg_restore, reindexdb a vacuumdb se týkají i klientských balíčků – stanic správců, zálohovacích serverů a CI, které obnovují zálohy.
  • Starší řady (13 a dřív) projekt už nepodporuje a opravy pro ně nevydává.

Jak poznat napadení

Projekt indikátory napadení nezveřejnil a zneužití neuvádí. Co doporučujeme zkontrolovat (vlastní doporučení, ne pokyn projektu):

  • Kdo smí vytvářet objekty: projděte práva CREATE na schématech (\dn+ v psql), vlastníky schémat a role s CREATEDB nebo CREATEROLE (\du).
  • Neobvyklé příkazy DDL v logu: zapněte dočasně log_statement = 'ddl' a hledejte opakované ALTER … TYPE a ALTER TABLE … ADD COLUMN s ROLLBACK od aplikačních účtů, které za běžného provozu strukturu nemění.
  • Pády backendů v logu serveru (server process … was terminated by signal 11) – záměna typů a use-after-free se často projeví pádem procesu.
  • Podřízené procesy a soubory účtu postgres v systému: neznámé procesy spuštěné pod uživatelem databáze, nové soubory mimo datový adresář, nové úlohy cron.

Vektor CVSS si rozeberete v CVSS kalkulačce.

Co udělat

  1. Aktualizujte server na 18.7, 17.12, 16.16, 15.20 nebo 14.25 (balíčky distribuce nebo PGDG). Ověřte verzi SELECT version();.
  2. Přestavte rozšíření v C – balíčky rozšíření aktualizujte spolu se serverem, vlastní rozšíření přeložte znovu. Parametr composite_type_mismatch vypínejte jen dočasně a s vědomím rizika.
  3. Aktualizujte klientské nástroje (pg_dump, pg_restore, reindexdb, vacuumdb) na stanicích, zálohovacích serverech a v CI. Neobnovujte zálohy z nedůvěryhodných zdrojů.
  4. Omezte právo vytvářet objekty: aplikační účty by neměly vlastnit schéma ani mít CREATE, pokud ho nepotřebují; migrace struktury pouštějte samostatným účtem.
  5. Po aktualizaci projděte doporučení z oznámení: přeindexujte indexy GIN při podezření na poškození, GiST indexy pg_trgm s gist_trgm_ops, tabulky s chybou missing chunk number a B-tree indexy na sloupcích bpchar bez délky; při přírůstkových zálohách udělejte novou plnou zálohu a zkontrolujte omezení NOT NULL NO INHERIT na partitionovaných tabulkách.
  6. PostgreSQL 14: naplánujte přechod na novější hlavní verzi, oprav už nebude.

Časová osa

Časová osa listopadových oprav PostgreSQL v roce 202612. 11. 2026: PostgreSQL vydává 18.7, 17.12, 16.16, 15.20, 14.25 a 19 RC 2 s opravou 52 CVE; 14.25 je poslední verze řady 14; 12. 11. 2026: NVD zveřejňuje CVE-2026-6460 (8,8, CWE-843), CISA hodnotí zneužití jako žádné; 13. 11. 2026: Zneužití nehlášeno, technický rozbor ani veřejný exploit nevyšel; 19. 11. 2026: Plánované vydání PostgreSQL 19 (podle projektu, pokud se neposune)12. 11. 2026PostgreSQL vydává 18.7,17.12, 16.16, 15.20, 14.25a 19 RC 2 s opravou 52 CVE;14.25 je poslední verze řady1412. 11. 2026NVD zveřejňuje CVE-2026-6460(8,8, CWE-843), CISA hodnotízneužití jako žádné13. 11. 2026Zneužití nehlášeno, technickýrozbor ani veřejný exploitnevyšel19. 11. 2026Plánované vydání PostgreSQL19 (podle projektu, pokud seneposune)
Vydání oprav a záznamy (PostgreSQL, NVD)

Aktualizace

  • 13. 11. 2026 – první verze článku.

Časté otázky

Zneužívá se CVE-2026-6460?

Projekt PostgreSQL zneužití neuvádí a CISA v záznamu NVD z 13. 11. 2026 hodnotí stav zneužití jako žádný. Technický rozbor ani veřejný exploit jsme k 13. 11. nenašli. Opravy ale ukazují, kde chyba je, a databázové servery bývají cílem, proto aktualizujte v nejbližším údržbovém okně.

Útočník potřebuje účet v databázi. Proč je to tak vážné?

Protože z uživatele databáze se stane uživatel operačního systému. Kdo spustí kód jako účet postgres, přečte všechna data ve všech databázích na serveru (bez ohledu na práva v PostgreSQL), může měnit konfiguraci a odtud pokračovat dál do sítě. Účet s právem vytvářet tabulky mívají běžně aplikace – a útočník ho získá třeba přes SQL injection ve webové aplikaci.

Proč musím přestavět rozšíření?

Oprava CVE-2026-6460 přidává do PostgreSQL verzování složených hodnot, aby server poznal, že hodnota neodpovídá aktuální struktuře typu. Poznámky k vydání výslovně píší, že plná ochrana vyžaduje přestavět rozšíření v jazyce C a některá budou potřebovat i úpravu zdrojového kódu. Balíčky z distribuce nebo z repozitáře PGDG přestavují jejich správci – aktualizujte je spolu se serverem. Vlastní rozšíření přeložte znovu proti nové verzi.

Můžu kontrolu vypnout, když mi rozšíření po aktualizaci nefunguje?

Nový parametr serveru composite_type_mismatch kontroly vypíná, ale projekt výslovně upozorňuje na bezpečnostní riziko. Použijte ho jen dočasně, než dodavatel rozšíření vydá opravenou verzi, a jen na serveru, kde nemají práva k vytváření objektů nedůvěryhodní uživatelé.

Používáme PostgreSQL 14. Co teď?

Verze 14.25 je podle oznámení poslední verzí řady 14 – další opravy chyb ani bezpečnostní opravy už nevyjdou. Nainstalujte 14.25 hned a naplánujte přechod na novější hlavní verzi (pg_upgrade nebo dump a obnova). PostgreSQL 19 má podle projektu vyjít 19. 11. 2026.

Zdroje

  1. PostgreSQL – CVE-2026-6460: type confusion after ALTER … SET DATA TYPE executes arbitrary code
  2. PostgreSQL – PostgreSQL 18.7, 17.12, 16.16, 15.20, 14.25, and 19 RC 2 Released! (12. 11. 2026)
  3. PostgreSQL – poznámky k vydání 18.7
  4. NVD – CVE-2026-6460 (zveřejněn 12. 11. 2026)

Našli jste v článku chybu? Dejte nám vědět, opravu vyznačíme.