22 年前 PostgreSQL 漏洞竟成远程代码执行

22-Year-Old PostgreSQL Bug Turned into Remote Code Execution

22 年前 PostgreSQL 漏洞竟成远程代码执行

2026 年 4 月,一个关于是否使用托管 PostgreSQL 的简单问题,让我坠入职业生涯最深的兔子洞。在研究 pg_clickhouse 扩展漏洞时,我被迫深入 PostgreSQL 核心,探究其如何处理 Datum 和类型系统。借助 AI 助手 pg_expert,我逐步理解了 PostgreSQL 的类型机制,并发现了一个惊人的事实:Datum 本身并不知道自己代表什么类型,完全依赖 pg_type 系统目录中的 OID 来解释。这一发现让我联想到 TOCTOU 漏洞,进而利用 LANGUAGE internal 特性人为制造类型混淆,最终在 PostgreSQL 核心中挖掘出一个存在 22 年的零日漏洞(CVE-2026-6460)。这是一个关于好奇心、技术深度与意外发现的真实故事。

我给 PostgreSQL 一个复合类型中的值,修改了其中某个字段的类型,然后让它读取回该值,这种类型混淆导致了我见过的最可靠的内存破坏利用方式。

同日更多故事

2026-11-12