Skip to content

Commit b21f202

Browse files
committed
docs: import CloudNativePG main
1 parent 56d8910 commit b21f202

4 files changed

Lines changed: 48 additions & 32 deletions

File tree

website/docs/installation_upgrade.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -277,18 +277,20 @@ only the operator itself.
277277

278278
These releases introduce changes worth reviewing before you upgrade. Two are
279279
security 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,
282283
safe 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`).
284285
In addition, if you are upgrading from a release **older than 1.29.1 or 1.28.3**,
285286
the metrics-exporter privilege separation from `CVE-2026-44477` also applies.
286287
Each 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
294296
the PostgreSQL parser (and that extensions such as `pg_stat_statements`
@@ -328,10 +330,11 @@ according to its own `password_encryption` GUC.
328330
See ["Opting out of operator-side encoding"](declarative_role_management.md#opting-out-of-operator-side-encoding)
329331
for 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,
335338
pg_temp` on every connection it opens to PostgreSQL, so that a
336339
tenant-controlled `ALTER DATABASE`/`ALTER ROLE` setting can no longer
337340
influence 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
389392
upgrading, otherwise primaries will be unable to promote.
390393
:::
391394

392-
#### Operator-to-instance authentication
395+
#### Operator-to-instance authentication (`GHSA-7qwx-x8ff-3px9`)
393396

394397
Starting from version 1.30.0, the operator authenticates its calls to the
395398
sensitive endpoints of the instance manager's status port (backup,
396399
`pg_controldata`, partial WAL archive, and instance-manager upgrade) by pinning
397400
an 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)
400406
for details.
401407

website/docs/release_notes/old/v1.28.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ is no longer supported.
5858

5959
### Security and Supply Chain
6060

61-
- **`search_path` pinning on operator-issued connections**: a database owner
61+
- **`CVE-2026-55769` / `GHSA-x8c2-3p4r-v9r6`: `search_path` pinning on
62+
operator-issued connections**: a database owner
6263
could plant overloaded built-in operators in the `public` schema and alter the
6364
`search_path` so that operator introspection probes, running as the cluster
6465
superuser, resolved those overloads before `pg_catalog`, a `CWE-426`
@@ -67,16 +68,17 @@ is no longer supported.
6768
`search_path = pg_catalog, public, pg_temp` on every pooled connection so it
6869
ships in the startup message and takes precedence over tenant-controlled
6970
defaults.
70-
([#10774](https://github.com/cloudnative-pg/cloudnative-pg/pull/10774)) <!-- 1.29 1.28 1.25 -->
71+
([#10774](https://github.com/cloudnative-pg/cloudnative-pg/pull/10774), [`GHSA-x8c2-3p4r-v9r6`](https://github.com/cloudnative-pg/cloudnative-pg/security/advisories/GHSA-x8c2-3p4r-v9r6)) <!-- 1.29 1.28 1.25 -->
7172

72-
- **Operator-side SCRAM-SHA-256 password encoding**: the operator now
73+
- **`CVE-2026-55765` / `GHSA-w3gf-xc94-wvmj`: operator-side SCRAM-SHA-256
74+
password encoding**: the operator now
7375
SCRAM-SHA-256 encodes cleartext role passwords before issuing
7476
`CREATE`/`ALTER ROLE ... PASSWORD`, so the literal PostgreSQL parses (and that
7577
extensions such as `pg_stat_statements` or `pgaudit` may capture) is the SCRAM
7678
verifier rather than the cleartext secret. Pre-hashed (MD5 or SCRAM) values
7779
are forwarded unchanged, and the per-Secret annotation
7880
`cnpg.io/passwordPassthrough: "enabled"` opts out.
79-
([#10724](https://github.com/cloudnative-pg/cloudnative-pg/pull/10724)) <!-- 1.29 1.28 1.25 -->
81+
([#10724](https://github.com/cloudnative-pg/cloudnative-pg/pull/10724), [`GHSA-w3gf-xc94-wvmj`](https://github.com/cloudnative-pg/cloudnative-pg/security/advisories/GHSA-w3gf-xc94-wvmj)) <!-- 1.29 1.28 1.25 -->
8082

8183
### Changes
8284

website/docs/release_notes/v1.29.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ on the release branch in GitHub.
5959

6060
### Security and Supply Chain
6161

62-
- **`search_path` pinning on operator-issued connections**: a database owner
62+
- **`CVE-2026-55769` / `GHSA-x8c2-3p4r-v9r6`: `search_path` pinning on
63+
operator-issued connections**: a database owner
6364
could plant overloaded built-in operators in the `public` schema and alter the
6465
`search_path` so that operator introspection probes, running as the cluster
6566
superuser, resolved those overloads before `pg_catalog`, a `CWE-426`
@@ -68,16 +69,17 @@ on the release branch in GitHub.
6869
`search_path = pg_catalog, public, pg_temp` on every pooled connection so it
6970
ships in the startup message and takes precedence over tenant-controlled
7071
defaults.
71-
([#10774](https://github.com/cloudnative-pg/cloudnative-pg/pull/10774)) <!-- 1.29 1.28 1.25 -->
72+
([#10774](https://github.com/cloudnative-pg/cloudnative-pg/pull/10774), [`GHSA-x8c2-3p4r-v9r6`](https://github.com/cloudnative-pg/cloudnative-pg/security/advisories/GHSA-x8c2-3p4r-v9r6)) <!-- 1.29 1.28 1.25 -->
7273

73-
- **Operator-side SCRAM-SHA-256 password encoding**: the operator now
74+
- **`CVE-2026-55765` / `GHSA-w3gf-xc94-wvmj`: operator-side SCRAM-SHA-256
75+
password encoding**: the operator now
7476
SCRAM-SHA-256 encodes cleartext role passwords before issuing
7577
`CREATE`/`ALTER ROLE ... PASSWORD`, so the literal PostgreSQL parses (and that
7678
extensions such as `pg_stat_statements` or `pgaudit` may capture) is the SCRAM
7779
verifier rather than the cleartext secret. Pre-hashed (MD5 or SCRAM) values
7880
are forwarded unchanged, and the per-Secret annotation
7981
`cnpg.io/passwordPassthrough: "enabled"` opts out.
80-
([#10724](https://github.com/cloudnative-pg/cloudnative-pg/pull/10724)) <!-- 1.29 1.28 1.25 -->
82+
([#10724](https://github.com/cloudnative-pg/cloudnative-pg/pull/10724), [`GHSA-w3gf-xc94-wvmj`](https://github.com/cloudnative-pg/cloudnative-pg/security/advisories/GHSA-w3gf-xc94-wvmj)) <!-- 1.29 1.28 1.25 -->
8183

8284
### Changes
8385

website/docs/release_notes/v1.30.md

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ on the release branch in GitHub.
132132

133133
### Security
134134

135-
- **`search_path` pinning on operator-issued connections**: a database owner
135+
- **`CVE-2026-55769` / `GHSA-x8c2-3p4r-v9r6`: `search_path` pinning on
136+
operator-issued connections**: a database owner
136137
could plant overloaded built-in operators in the `public` schema and alter the
137138
`search_path` so that operator introspection probes, running as the cluster
138139
superuser, resolved those overloads before `pg_catalog`, a `CWE-426`
@@ -141,25 +142,30 @@ on the release branch in GitHub.
141142
`search_path = pg_catalog, public, pg_temp` on every pooled connection so it
142143
ships in the startup message and takes precedence over tenant-controlled
143144
defaults.
144-
([#10774](https://github.com/cloudnative-pg/cloudnative-pg/pull/10774)) <!-- 1.29 1.28 1.25 -->
145-
146-
- **Authenticated operator-to-instance-manager calls**: the instance manager's
147-
remote webserver previously accepted unauthenticated requests, so any process
148-
on the pod network could trigger backups, instance manager upgrades, or WAL
149-
archival. The operator now generates an in-memory ECDSA P-256 client
150-
certificate at startup and reconciles its SHA-256 fingerprint into the cluster
151-
status; the instance manager rejects requests to sensitive endpoints that do
152-
not present a matching certificate.
153-
([#10579](https://github.com/cloudnative-pg/cloudnative-pg/pull/10579))
154-
155-
- **Operator-side SCRAM-SHA-256 password encoding**: the operator now
145+
([#10774](https://github.com/cloudnative-pg/cloudnative-pg/pull/10774), [`GHSA-x8c2-3p4r-v9r6`](https://github.com/cloudnative-pg/cloudnative-pg/security/advisories/GHSA-x8c2-3p4r-v9r6)) <!-- 1.29 1.28 1.25 -->
146+
147+
- **`GHSA-7qwx-x8ff-3px9`: authenticated operator-to-instance-manager calls**:
148+
the instance manager's remote webserver relied on network isolation rather
149+
than authentication for its operator-only control endpoints, so any party able
150+
to reach the pod's status port could invoke them, disrupting backup
151+
orchestration and WAL archival and reading operational metadata. (The upgrade
152+
endpoint is SHA-256-pinned, so this did not permit arbitrary code execution.)
153+
The operator now generates an in-memory ECDSA P-256 client certificate at
154+
startup and reconciles its SHA-256 fingerprint into the cluster status; the
155+
instance manager rejects requests to sensitive endpoints that do not present a
156+
matching certificate. This hardening is not backported; earlier releases
157+
should continue to restrict the status port with a `NetworkPolicy`.
158+
([#10579](https://github.com/cloudnative-pg/cloudnative-pg/pull/10579), [`GHSA-7qwx-x8ff-3px9`](https://github.com/cloudnative-pg/cloudnative-pg/security/advisories/GHSA-7qwx-x8ff-3px9))
159+
160+
- **`CVE-2026-55765` / `GHSA-w3gf-xc94-wvmj`: operator-side SCRAM-SHA-256
161+
password encoding**: the operator now
156162
SCRAM-SHA-256 encodes cleartext role passwords before issuing
157163
`CREATE`/`ALTER ROLE ... PASSWORD`, so the literal PostgreSQL parses (and that
158164
extensions such as `pg_stat_statements` or `pgaudit` may capture) is the SCRAM
159165
verifier rather than the cleartext secret. Pre-hashed (MD5 or SCRAM) values
160166
are forwarded unchanged, and the per-Secret annotation
161167
`cnpg.io/passwordPassthrough: "enabled"` opts out.
162-
([#10724](https://github.com/cloudnative-pg/cloudnative-pg/pull/10724)) <!-- 1.29 1.28 1.25 -->
168+
([#10724](https://github.com/cloudnative-pg/cloudnative-pg/pull/10724), [`GHSA-w3gf-xc94-wvmj`](https://github.com/cloudnative-pg/cloudnative-pg/security/advisories/GHSA-w3gf-xc94-wvmj)) <!-- 1.29 1.28 1.25 -->
163169

164170
### Changes
165171

0 commit comments

Comments
 (0)