22-летний баг в PostgreSQL превратился в удалённое выполнение кода

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

22-летний баг в PostgreSQL превратился в удалённое выполнение кода

Мехмет Индже, исследуя расширение pg_clickhouse, заинтересовался, как PostgreSQL определяет типы данных. Он обнаружил, что Datum не хранит информацию о типе — её задаёт OID из pg_type, а функции вывода слепо доверяют этим метаданным. С помощью LANGUAGE internal он намеренно вызвал путаницу типов, что привело к падению бэкенда. Дальнейшее развитие идеи позволило превратить 22-летнюю уязвимость в надёжный эксплойт для удалённого выполнения кода (CVE-2026-6460).

Я передал PostgreSQL значение внутри составного типа, изменил тип одного из его полей и попросил прочитать значение обратно. Эта путаница типов привела к одному из самых надёжных эксплойтов повреждения памяти, которые я видел.

Ещё за этот день

2026-11-12