{"id":"CVE-2026-14678","year":2026,"sequence":14678,"component":"contrib module","score":4.3,"cvss_version":"3.0","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","first_published":"2026-08-13","source_url":"https://www.postgresql.org/support/security/CVE-2026-14678/","facts":{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14678","component":"contrib module","cvss_version":"3.0","description_en":"Buffer over-read in PostgreSQL pg_trgm index picksplit function reads past end of a heap buffer. This might allow a table maintainer to infer limited memory values, via the lossy signal of index split choices. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"id":"CVE-2026-14678","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":4.3,"title":"PostgreSQL pg_trgm picksplit reads past end of buffer","url":"https://www.postgresql.org/support/security/CVE-2026-14678/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N"},"reviewed_hash":"6a65a7884245936f6adaef8709d290d460e999dfce1ad78734fa7c9a324ed325","source_hash":"965b9e2323feab543f3cbeb74c418c3a5b43cbefc6594d2862ff0d24dcf8e6a2","text":{"locale":"zh-Hans","title":"PostgreSQL pg_trgm 的 picksplit 会读取缓冲区末尾之后的数据","description":"PostgreSQL pg_trgm 的 picksplit 会读取缓冲区末尾之后的数据","details":"PostgreSQL pg_trgm 索引的 picksplit 函数存在缓冲区越界读取，会读取堆缓冲区末尾之后的数据。 表维护者可能通过索引分裂选择这一有损信号，推断有限的内存值。PostgreSQL 18.6、17.11、16.15、15.19 和 14.24 之前的版本受此问题影响。","format":"markdown","provenance":{"identity":"immutable_cve_code","sources":[{"observed_at":"2026-10-03 12:08:35.169032+08","raw":{"component":"contrib module","cve":"2026-14678","cvenumber":202614678,"description":"PostgreSQL pg_trgm 的 picksplit 会读取缓冲区末尾之后的数据","details":"PostgreSQL pg_trgm 索引的 picksplit 函数存在缓冲区越界读取，会读取堆缓冲区末尾之后的数据。 表维护者可能通过索引分裂选择这一有损信号，推断有限的内存值。PostgreSQL 18.6、17.11、16.15、15.19 和 14.24 之前的版本受此问题影响。","detailslink":"","id":89,"legacyscore":"","newspost_id":3365,"public":true,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N"},"source":"center","source_id":89,"source_table_sha256":"b57ee28b2263464208af0ccf7512b31f0c1ab7140d12dda09a0c87de341f1372"},{"observed_at":"2026-10-03 12:08:55.967155+08","raw":{"component":"contrib module","cve":"2026-14678","cvenumber":202614678,"description":"PostgreSQL pg_trgm 的 picksplit 会读取缓冲区末尾之后的数据","details":"PostgreSQL pg_trgm 索引的 picksplit 函数存在缓冲区越界读取，会读取堆缓冲区末尾之后的数据。 表维护者可能通过索引分裂选择这一有损信号，推断有限的内存值。PostgreSQL 18.6、17.11、16.15、15.19 和 14.24 之前的版本受此问题影响。","detailslink":"","id":89,"legacyscore":"","newspost_id":3365,"public":true,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N"},"source":"pgweb","source_id":89,"source_table_sha256":"b57ee28b2263464208af0ccf7512b31f0c1ab7140d12dda09a0c87de341f1372"}]},"text_hash":"a22818d9ad04a5f1099536f733e030636e097bfb4bbcbff71e2250997b69e781"},"locales":["en","zh-Hans"],"fixes":[{"major":"14","fixed_version":"14.24","introduced":null,"published_date":"2026-08-13","facts":{"fixed":"14.24","introduced":null,"published":"2026-08-13"}},{"major":"15","fixed_version":"15.19","introduced":null,"published_date":"2026-08-13","facts":{"fixed":"15.19","introduced":null,"published":"2026-08-13"}},{"major":"16","fixed_version":"16.15","introduced":null,"published_date":"2026-08-13","facts":{"fixed":"16.15","introduced":null,"published":"2026-08-13"}},{"major":"17","fixed_version":"17.11","introduced":null,"published_date":"2026-08-13","facts":{"fixed":"17.11","introduced":null,"published":"2026-08-13"}},{"major":"18","fixed_version":"18.6","introduced":null,"published_date":"2026-08-13","facts":{"fixed":"18.6","introduced":null,"published":"2026-08-13"}}],"legacy":[{"source":"center","source_id":89,"observed_at":"2026-10-03 12:08:35.169032+08","raw":{"id":89,"cve":"2026-14678","public":true,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","details":"PostgreSQL pg_trgm 索引的 picksplit 函数存在缓冲区越界读取，会读取堆缓冲区末尾之后的数据。 表维护者可能通过索引分裂选择这一有损信号，推断有限的内存值。PostgreSQL 18.6、17.11、16.15、15.19 和 14.24 之前的版本受此问题影响。","component":"contrib module","cvenumber":202614678,"description":"PostgreSQL pg_trgm 的 picksplit 会读取缓冲区末尾之后的数据","detailslink":"","legacyscore":"","newspost_id":3365},"fixes":[{"source_id":362,"source_version_id":31,"major":"18","fixed_minor":6,"raw":{"id":362,"patch_id":89,"version_id":31,"fixed_minor":6},"version_raw":{"id":31,"tree":18.0,"current":true,"docsgit":"","eoldate":"2030-11-14","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T08:10:47.078613+08:00","latestminor":6,"firstreldate":"2025-09-25"}},{"source_id":363,"source_version_id":30,"major":"17","fixed_minor":11,"raw":{"id":363,"patch_id":89,"version_id":30,"fixed_minor":11},"version_raw":{"id":30,"tree":17.0,"current":false,"docsgit":"","eoldate":"2029-11-08","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T08:10:47.078613+08:00","latestminor":11,"firstreldate":"2024-09-26"}},{"source_id":364,"source_version_id":29,"major":"16","fixed_minor":15,"raw":{"id":364,"patch_id":89,"version_id":29,"fixed_minor":15},"version_raw":{"id":29,"tree":16.0,"current":false,"docsgit":"","eoldate":"2028-11-09","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T08:10:47.078613+08:00","latestminor":15,"firstreldate":"2023-09-14"}},{"source_id":365,"source_version_id":28,"major":"15","fixed_minor":19,"raw":{"id":365,"patch_id":89,"version_id":28,"fixed_minor":19},"version_raw":{"id":28,"tree":15.0,"current":false,"docsgit":"","eoldate":"2027-11-11","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T08:10:47.078613+08:00","latestminor":19,"firstreldate":"2022-10-13"}},{"source_id":366,"source_version_id":27,"major":"14","fixed_minor":24,"raw":{"id":366,"patch_id":89,"version_id":27,"fixed_minor":24},"version_raw":{"id":27,"tree":14.0,"current":false,"docsgit":"","eoldate":"2026-11-12","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T08:10:47.078613+08:00","latestminor":24,"firstreldate":"2021-09-30"}}]},{"source":"pgweb","source_id":89,"observed_at":"2026-10-03 12:08:55.967155+08","raw":{"id":89,"cve":"2026-14678","public":true,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","details":"PostgreSQL pg_trgm 索引的 picksplit 函数存在缓冲区越界读取，会读取堆缓冲区末尾之后的数据。 表维护者可能通过索引分裂选择这一有损信号，推断有限的内存值。PostgreSQL 18.6、17.11、16.15、15.19 和 14.24 之前的版本受此问题影响。","component":"contrib module","cvenumber":202614678,"description":"PostgreSQL pg_trgm 的 picksplit 会读取缓冲区末尾之后的数据","detailslink":"","legacyscore":"","newspost_id":3365},"fixes":[{"source_id":362,"source_version_id":31,"major":"18","fixed_minor":6,"raw":{"id":362,"patch_id":89,"version_id":31,"fixed_minor":6},"version_raw":{"id":31,"tree":18.0,"current":true,"docsgit":"","eoldate":"2030-11-14","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T00:10:45.258078+08:00","latestminor":6,"firstreldate":"2025-09-25"}},{"source_id":363,"source_version_id":30,"major":"17","fixed_minor":11,"raw":{"id":363,"patch_id":89,"version_id":30,"fixed_minor":11},"version_raw":{"id":30,"tree":17.0,"current":false,"docsgit":"","eoldate":"2029-11-08","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T00:10:45.258078+08:00","latestminor":11,"firstreldate":"2024-09-26"}},{"source_id":364,"source_version_id":29,"major":"16","fixed_minor":15,"raw":{"id":364,"patch_id":89,"version_id":29,"fixed_minor":15},"version_raw":{"id":29,"tree":16.0,"current":false,"docsgit":"","eoldate":"2028-11-09","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T00:10:45.258078+08:00","latestminor":15,"firstreldate":"2023-09-14"}},{"source_id":365,"source_version_id":28,"major":"15","fixed_minor":19,"raw":{"id":365,"patch_id":89,"version_id":28,"fixed_minor":19},"version_raw":{"id":28,"tree":15.0,"current":false,"docsgit":"","eoldate":"2027-11-11","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T00:10:45.258078+08:00","latestminor":19,"firstreldate":"2022-10-13"}},{"source_id":366,"source_version_id":27,"major":"14","fixed_minor":24,"raw":{"id":366,"patch_id":89,"version_id":27,"fixed_minor":24},"version_raw":{"id":27,"tree":14.0,"current":false,"docsgit":"","eoldate":"2026-11-12","reldate":"2026-08-13","testing":0,"supported":true,"docsloaded":"2026-09-27T00:10:45.258078+08:00","latestminor":24,"firstreldate":"2021-09-30"}}]}]}
