@@ -277,18 +277,20 @@ only the operator itself.
277277
278278These releases introduce changes worth reviewing before you upgrade. Two are
279279security changes that apply to ** 1.30.0, 1.29.2, and 1.28.4** : operator-side
280- password encoding and ` search_path ` hardening. The other three are new in
280+ password encoding (` CVE-2026-55765 ` ) and ` search_path ` hardening
281+ (` CVE-2026-55769 ` ). The other three are new in
281282** 1.30.0** only: the ` DatabaseRole ` resource for declarative role management,
282283safe primary election via a per-cluster Lease, and operator-to-instance
283- authentication on the instance manager's status port.
284+ authentication on the instance manager's status port ( ` GHSA-7qwx-x8ff-3px9 ` ) .
284285In addition, if you are upgrading from a release ** older than 1.29.1 or 1.28.3** ,
285286the metrics-exporter privilege separation from ` CVE-2026-44477 ` also applies.
286287Each is covered in its own subsection below.
287288
288- #### Operator-side password encoding
289+ #### Operator-side password encoding ( ` CVE-2026-55765 ` )
289290
290- Starting from versions 1.30.0, 1.29.2, and 1.28.4, for security reasons,
291- CloudNativePG SCRAM-SHA-256 encodes role passwords ** operator-side**
291+ Starting from versions 1.30.0, 1.29.2, and 1.28.4, for security reasons
292+ (` CVE-2026-55765 ` / ` GHSA-w3gf-xc94-wvmj ` ), CloudNativePG SCRAM-SHA-256 encodes
293+ role passwords ** operator-side**
292294(client-side from PostgreSQL's point of view) before issuing
293295` CREATE ` /` ALTER ROLE ` statements. As a result, the literal that reaches
294296the PostgreSQL parser (and that extensions such as ` pg_stat_statements `
@@ -328,10 +330,11 @@ according to its own `password_encryption` GUC.
328330See [ "Opting out of operator-side encoding"] ( declarative_role_management.md#opting-out-of-operator-side-encoding )
329331for details.
330332
331- #### ` search_path ` hardening
333+ #### ` search_path ` hardening ( ` CVE-2026-55769 ` )
332334
333- Also starting from versions 1.30.0, 1.29.2, and 1.28.4, for security reasons,
334- CloudNativePG pins the ` search_path ` to a fixed `pg_catalog, public,
335+ Also starting from versions 1.30.0, 1.29.2, and 1.28.4, for security reasons
336+ (` CVE-2026-55769 ` / ` GHSA-x8c2-3p4r-v9r6 ` ), CloudNativePG pins the ` search_path `
337+ to a fixed `pg_catalog, public,
335338pg_temp` on every connection it opens to PostgreSQL, so that a
336339tenant-controlled ` ALTER DATABASE ` /` ALTER ROLE ` setting can no longer
337340influence how operator-issued queries resolve unqualified object names.
@@ -389,13 +392,16 @@ and `watch` verbs on `leases` in the `coordination.k8s.io` API group before
389392upgrading, otherwise primaries will be unable to promote.
390393:::
391394
392- #### Operator-to-instance authentication
395+ #### Operator-to-instance authentication ( ` GHSA-7qwx-x8ff-3px9 ` )
393396
394397Starting from version 1.30.0, the operator authenticates its calls to the
395398sensitive endpoints of the instance manager's status port (backup,
396399` pg_controldata ` , partial WAL archive, and instance-manager upgrade) by pinning
397400an in-memory client certificate. This is enabled automatically and requires no
398- configuration. Status, health, and probe endpoints remain unauthenticated. See
401+ configuration. Status, health, and probe endpoints remain unauthenticated.
402+ This hardening is not backported; on releases earlier than 1.30.0, continue to
403+ restrict the status port (TCP 8000) with a ` NetworkPolicy ` , which remains its
404+ security boundary there. See
399405[ Operator-to-instance authentication] ( security.md#operator-to-instance-authentication )
400406for details.
401407
0 commit comments