PostgreSQL 全球開發組針對當前所有被支援版本釋出了一次更新,版本包括:PostgreSQL 14.3、13.7、12.11、11.16 和 10.21。此次更新修復了一個安全漏洞並修復了過去三個月報告的 50 多個錯誤。
如果你在使用 ltree 資料型別的列上有任何 GiST 索引,你將需要在升級後重新索引它們。獲取完整變更列表。
值得注意的是,PostgreSQL 10 將於 2022 年 11 月 10 日停止接收修復。如果你在生產環境中執行 PostgreSQL 10,官方建議你計劃升級到受支援的 PostgreSQL 更新版本。
:Autovacuum、REINDEX 等省略了「security restricted operation」沙箱。
受影響的版本:10 - 14。安全團隊通常不會測試不受支援的版本,但這個問題已經很老了。
Autovacuum、REINDEX、CREATE INDEX、REFRESH MATERIALIZED VIEW、CLUSTER 和 pg_amcheck 在特權使用者維護其他使用者的物件時,沒有完全做到安全操作。這些命令太晚或根本沒有啟用相關的保護措施。一個有許可權在至少一個模式中建立非臨時物件的攻擊者可以在超級使用者的身份下執行任意的 SQL 函數。
雖然及時更新 PostgreSQL 是大多數使用者的最佳補救措施,但無法做到這一點的使用者可以通過禁用 autovacuum、不手動執行上述命令以及不從pg_dump
命令輸出恢復來解決該漏洞。在此解決方法下,效能可能會迅速下降。VACUUM
是安全的,當受信任的使用者擁有目標物件時,所有的命令都是好的。
錯誤修復和改進
下面的列出的問題會影響 PostgreSQL 14,其中一些問題也可能會影響其他受支援的 PostgreSQL 版本:
- 修復了可能導致 列上的 GiST 索引損壞的問題。升級後,使用者需要重新索引列上的所有 GiST 。
- 由
SELECT
列表頂層之外的整行變數(例如tbl.*
)生成的 tuples 中的列名現在總是與關聯的命名複合型別(如果有的話)相關聯。 - 修復從
interval
型別中提取 epoch 值時不正確的舍入。 - 防止呼叫
pg_stat_get_replication_slot(NULL)
時出現問題。 - 修復
table_to_xmlschema()
中timestamptz
和timetz
型別的錯誤輸出。 - 修復與影響非同步遠端查詢的計劃程式問題相關的錯誤。
- 如果使用
SEARCH
或CYCLE
功能的查詢包含重複的公用表表示式 (WITH
) 名稱,則修復規劃器故障。 - 修復
ALTER FUNCTION
以支援在同一命令中更改函數的並行屬性及其SET
-variable 列表。 - 修復在前導鍵是表示式的索引上使用
CLUSTER
時對錶行的錯誤排序。 - 如果在排序的 GiST 索引構建後不久發生系統崩潰,防止資料丟失。
- 修復刪除分割區索引時出現死鎖失敗的風險。
- 修復
DROP TABLESPACE
和 checkpointing 之間的 race condition,該條件可能無法從表空間目錄中刪除所有死檔案。 - 修復
TRUNCATE
與 checkpointing 重疊的命令後崩潰恢復的潛在問題。 - 重新允許
_
作為自定義設定引數名稱中的第一個字元。 - 修復 PANIC:當有一個缺失的 WAL 延續記錄時,在備用升級期間 xlog 重新整理請求未被滿足的故障。
- 修復熱備衝突處理中出現 self-deadlock 的可能性。
- 確保當伺服器接近
max_sync_workers_per_subscription
限制時可以重新啟動邏輯複製應用 workers。 - 不允許在 PL/Perl 函數編譯期間執行 SPI 函數。
- libpq 現在接受 root 擁有的 SSL 私鑰檔案,這與伺服器自 9.6 版本以來使用的規則相匹配。
- 在 psql、pg_dump 和 pg_amcheck 中重新允許 database.schema.table 模式。
- 對 pageinspect 進行了一些修復,以提高整體穩定性。
- 當外部表上存在
BEFORE INSERT ... FOR EACH ROW
觸發器時禁用批次插入。 - 更新 JIT 程式碼以使用 LLVM 14。
下載地址: