---
id: "CVE-2026-116323"
page: "https://infrastack.ai/live/CVE-2026-116323"
kind: "vulnerability"
aliases: ["CVE-2026-116323"]
title: "PostgreSQL: pltcl use-after-free lets object creators run OS code"
severity: "high"
cvss: 8.8
epss: null
exploited: false
status: "open"
category: "runtime"
products: [{"name": "PostgreSQL", "fixed": [], "affected": "", "ecosystem": "runtime"}]
ecosystems: ["runtime"]
tags: ["database", "postgresql", "runtime", "self-hosted"]
not_affected_if: ["no-untrusted-object-creators", "pltcl-not-installed"]
published_at: "2026-11-12T15:17:40+00:00"
first_seen_at: "2026-11-12T15:41:54+00:00"
updated_at: "2026-11-12T15:43:29+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-116323", "first_seen_at": "2026-11-12T15:41:54+00:00"}]
exploit_sources: []
---

# PostgreSQL: pltcl use-after-free lets object creators run OS code

Link for people: https://infrastack.ai/live/CVE-2026-116323 (this .md is for agents)

PostgreSQL's pltcl procedural language has a use-after-free bug triggered when a domain CHECK constraint re-enters the Tcl interpreter. A user who can create database objects can use it to execute arbitrary code as the operating system user running the database.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- runtime:PostgreSQL affected range not listed fixed no fixed version listed

## How to check

- Run `psql -c "SHOW server_version;"` and compare against the fixed versions below.
- Check whether the pltcl extension is installed: `psql -c "SELECT * FROM pg_extension WHERE extname = 'pltcl';"`.
- Check whether the `pltcl` language is available: `psql -c "SELECT lanname FROM pg_language WHERE lanname = 'pltcl';"`.

## Fix

- PostgreSQL `18.7`, `17.12`, `16.16`, `15.20`, and `14.25` contain the fix; earlier versions in each line are affected.

## Timeline

- 2026-11-12T15:41:54+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-116323

## From the sources

Use after free in PostgreSQL pltcl allows an object creator to execute arbitrary code as the operating system user running the database, via a domain CHECK that re-enters the Tcl interpreter and frees or changes a string still used by the outer result conversion.  Versions before PostgreSQL 18.7, 17.12, 16.16, 15.20, and 14.25 are affected.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
