---
title: "PostgreSQL 一次修補 52 個漏洞 十四分支同步步入終點"
url: https://sammy.hk/postgresql-52-cves-november/
author: Ethan
published: 2026-11-13T13:37:00+08:00
modified: 2026-11-13T09:55:32+08:00
description: "PostgreSQL 全球開發組於 2026 年 11 月 12 日發布 18.7、17.12、16.16、15.20、14.25，以及 19 第二個候選版本（19 RC 2）。這次更新合共修補 52 個安全漏洞與超過 140 個程式錯誤，多個漏洞的 CVSS 3.1 評分達 8.8，屬於可執行任意程式碼的類型混淆與 …"
categories: ["開放源碼"]
tags: [CVE, PostgreSQL, "安全漏洞", "資料庫", "開源"]
source: https://sammy.hk
---
![PostgreSQL 安全更新 52 漏洞](https://sammy.hk/wp-content/uploads/2026/11/postgresql-security-og.jpg)PostgreSQL 全球開發組於 2026 年 11 月 12 日發布 18.7、17.12、16.16、15.20、14.25，以及 19 第二個候選版本（19 RC 2）。這次更新合共修補 52 個安全漏洞與超過 140 個程式錯誤，多個漏洞的 CVSS 3.1 評分達 8.8，屬於可執行任意程式碼的類型混淆與 use-after-free 問題\[1\]。

## 高危漏洞集中在類型混淆

官方公告列出的漏洞中，大量條目描述為類型混淆後執行任意程式碼，涉及 `ALTER ... SET DATA TYPE`、輸出參數、平行 `RECORD`、複合類型別位藉值、`plperl` 預編譯查詢等路徑，CVSS 評分普遍為 8.8，具備低權限的已認識帳戶即可觸發\[1\]。另有 `pg_restore` 缺少非 plain 封存檔驗證、`pg_dump` 的 not-null 約束名稱導致 SQL 注入等問題，部分只需受害者誘入惡意封存檔便會中招。

權限邊界方面，`INSERT ... ON CONFLICT` 可繞過自動更新檢查的 `WHERE` 條件，亦可無視行級安全政策讀取資料；`DROP OWNED` 能移除不屬於自己的資料表的 restrictive row security 政策。`vacuumdb --missing-stats-only` 更可讓資料庫擁有者以 `vacuumdb` 使用者身分執行程式碼。這些問題顯示，即使用已限制資料庫權限，仍難假定帳戶之間完全隔離。

## 更新後需要動手的地方

官方明確指出這是累積更新，不需要 dump 與 reload，也不需要 `pg_upgrade`，停止服務並替換二進位即可\[1\]。但若曾懷疑 GIN 索引受影響，須以 `REINDEX INDEX` 重建；使用 `pg_trgm` 的話，要重建所有採用 `gist_trgm_ops` 的 GiST 索引。

如果讀取資料表時出現 `missing chunk number` 錯誤，代表 TOAST 相關索引可能已失效，需要以 `REINDEX TABLE` 一併重建。使用增量備份的環境，官方建議更新後先做一次完整備份，再以差異備份作為後續增量備份的基礎。分區表方面，過去可能存在 `NOT NULL NO INHERIT` 約束，公告提提供查詢語句列出受影響約束，開發者可選擇刪除，或以 `ALTER TABLE ... ALTER CONSTRAINT ... INHERIT` 修復，後者在任何分區含 NULL 值時會失敗。

此外，本次更新把時區資料更新至 tzdata 2026f，涉及加拿大西北地區與湄公河省改為全年固定時區，以及古巴夏季節氣節約時間的約定時間。

## 十四分鐘終止支援

公告同時宣布 14.25 是 PostgreSQL 14 的最後一個版本，即刻分正式終止支援，不再提供安全與錯誤修正。仍在生產環境運營 14 的機構，需要計劃升級至受支援版本。按官方版本政策，每個主版本自首個版本起提供五年支援，錯過終止支援之後，即使發現新漏洞也不會有修補\[3\]。

PostgreSQL 19 方面，RC 2 修正了多項候選期發現的問題，包括回傳 `JSON_ARRAY()`、`JSON_OBJECT()` 在表達式索引、生成藉位與分割鍵的使用（這些索引可能變成過時），以及 `GROUPING SETS` 結構錯誤、`first_value()` 與 `nth_value()` 配合 `IGNORE NULLS` 的無限迴圈等。如果在測試 19 期建立過相關索引或生成藉位，升級前必須先刪除或重新定義，否則 `pg_dump`、`pg_restore` 與 `pg_upgrade` 會失效。官方計劃若無意外，19 將於 2026 年 11 月 19 日正式發布\[1\]。

## 升級注意

實務上建議先在測試環境驗證，重點驗證含 GIN 與 `pg_trgm` 索引的查詢是否仍返回正確結果，然後才在生產環境滾動更新。自行編譯的環境需同步更新 contrib 及 `plperl`、`pltcl` 等程式語言模組，否則部分修正不會生效。個別高危漏洞的技術細節可參考官方安全公告，例如 `ALTER ... SET DATA TYPE` 的類型混淆問題\[2\]。

## 參考資料

\[1\] [PostgreSQL 18.7, 17.12, 16.16, 15.20, 14.25, and 19 RC 2 Released!（2026-11-12）](https://www.postgresql.org/about/news/postgresql-187-1712-1616-1520-1425-and-19-rc-2-released-3442/)

\[2\] [CVE-2026-6460: Type confusion after ALTER … SET DATA TYPE](https://www.postgresql.org/support/security/CVE-2026-6460/)

\[3\] [PostgreSQL Versioning Policy](https://www.postgresql.org/support/versioning/)

### 相關文章：

1. [PHP 修補兩個嚴重漏洞：未認證即可遙距執行代碼，官方籲即時更新](https://sammy.hk/php2shell/ "PHP 修補兩個嚴重漏洞：未認證即可遙距執行代碼，官方籲即時更新")
2. [PostgreSQL 19 延期至 11 月 19 日：RC2 先出，官方稱「不尋常的週期」](https://sammy.hk/postgresql-rc2/ "PostgreSQL 19 延期至 11 月 19 日：RC2 先出，官方稱「不尋常的週期」")
3. [PostgreSQL Anonymizer 3.3 修補十二個嚴重漏洞，遮罩角色可讀真實資料](https://sammy.hk/postgresql-anonymizer-3-3/ "PostgreSQL Anonymizer 3.3 修補十二個嚴重漏洞，遮罩角色可讀真實資料")
4. [Python 五個分支同步推出維護版本，封鎖外洩的中間憑證金鑰](https://sammy.hk/python-security-releases/ "Python 五個分支同步推出維護版本，封鎖外洩的中間憑證金鑰")
