Strona główna / Blog / PG Anonymizer: patch lineage → variant analysis

Blog · analiza

PostgreSQL Anonymizer 3.1.4: kolejna ścieżka low-priv → code execution. Kiedy patch lineage powinien uruchomić variant analysis

CVE-2026-19633 pozwala użytkownikowi o niskich uprawnieniach wykorzystać obiekty SQL — operatory, domain casts, subqueries w widokach — tak, aby kontrolowane wyrażenia wykonały się w bardziej uprzywilejowanym kontekście podczas anonimizacji. CVSS 3.1: 8.8; fix w PostgreSQL Anonymizer 3.1.4. Gdyby patrzeć tylko na ten rekord: affected < 3.1.4 → upgrade → close. Ale to już czwarty pokrewny problem w 2026.

Patch lineage 2026: CVE-2026-2361 (temp view/funkcja, fix 3.0.1), CVE-2026-9617 (malicious identyfikator kolumny, fix 3.1.0), CVE-2026-11945 (malicious expression w importowanych regułach JSON, fix 3.1.1), CVE-2026-19633 (operators/domain casts/view subqueries, fix 3.1.4).
Wspólny wzorzec: obiekty tworzone przez mniej uprzywilejowanego użytkownika są później interpretowane w uprzywilejowanym kontekście anonimizacji.

Nie należy automatycznie nazywać każdego kolejnego CVE „incomplete fixem”, jeśli maintainer tego nie potwierdził. Ale powtarzalny wzorzec to sygnał do variant analysis.

Dlaczego ten produkt jest trudny

PostgreSQL Anonymizer z definicji operuje na granicy między danymi produkcyjnymi, regułami maskowania, rolami DB, funkcjami SECURITY DEFINER i obiektami tworzonymi przez różnych użytkowników. Każdy punkt, w którym untrusted SQL object jest później dynamicznie oceniany, jest potencjalną granicą bezpieczeństwa: untrusted catalog object → dynamic evaluation → privileged function.

CVSS 8.8, ale exploitability zależy od modelu uprawnień

CVE zakłada low privileges — to nie znaczy, że każdy użytkownik aplikacyjny wykona exploit. VE ustala: kto może tworzyć operatory, domains, casts, views; w jakim schema; jakie CREATE privileges są przyznane; czy system był upgradowany ze starszej wersji PostgreSQL; które funkcje anonimizera wywołują bardziej uprzywilejowane role. To mocno zmienia population of exploitable instances.

PostgreSQL 14 vs 15+ to ważny kontekst

W pokrewnych advisory projekt wskazywał, że domyślne CREATE privileges na public różnią się między wersjami: w PG15 zaostrzono je, a instancje starsze lub upgradowane mogą zachować liberalny stan. Same CPE/package versions nie wystarczą — potrzebny jest configuration evidence (\dn+ public) i realny privilege graph.

Jak powinien wyglądać finding

Zamiast „PostgreSQL Anonymizer < 3.1.4 — High” lepiej model warunkowy:

component: postgresql_anonymizer version: 3.1.3 cve: CVE-2026-19633 low_priv_object_creation: {operators, domains, views} privileged_anonymizer_execution: true/false exploitable: conditional

Remediation, variant analysis i compromise assessment

Podstawa: upgrade do ≥ 3.1.4. Dodatkowo: przegląd CREATE privileges, ograniczenie tworzenia obiektów SQL przez role untrusted, review ownership, analiza funkcji SECURITY DEFINER, przegląd wcześniej utworzonych operatorów/domains/views, monitoring DDL. Jeśli low-priv users mieli możliwość tworzenia wymaganych obiektów, a uprzywilejowane funkcje były wykonywane — samo patchowanie nie odpowiada na pytanie o wcześniejsze wykorzystanie (przejrzyj nietypowe DDL, nowe operatory/casts/domains/views, obiekty o nietypowym ownerze, zmiany ról, audit logi).

Wniosek

Operacyjnie każdy CVE to osobny ticket. Inżyniersko — seria CVE jest telemetrycznym sygnałem, że dana security boundary jest trudna. Dojrzały VM przechodzi z CVE → patch → close w CVE cluster → root security boundary → variant analysis → hardening → verification.

Powiązane na blogu

Źródła

Nota redakcyjna: stan informacji 7 września 2026. CVE-2026-19633 (PostgreSQL Anonymizer < 3.1.4, CVSS 8.8): low-priv object creation wykonywany w uprzywilejowanym kontekście anonimizacji; czwarty pokrewny CVE w 2026. Artykuł koncentruje się na patch lineage jako sygnale variant analysis i zależności exploitability od modelu uprawnień (PG14 vs 15+).

Zapamiętaj jedno

Kiedy w jednym produkcie w krótkim czasie pojawia się kilka różnych ścieżek do podobnego privilege boundary violation, to sygnał telemetryczny: dana granica bezpieczeństwa jest trudna i zasługuje na własny program analizy. Dojrzały VM przechodzi z „CVE → patch → close” do „CVE cluster → root boundary → variant analysis → hardening”.