PHP2Shell: Read our blog on the critical RCE vulnerabilities affecting 70% of the Internet

CVE-2026-96883: 
PostgreSQL vulnerability analysis and mitigation

Overview

CVE-2026-96883 is a type confusion vulnerability in AWS pgcollection, an open-source PostgreSQL extension, that may allow an authenticated remote user to execute arbitrary code as the PostgreSQL operating system user via crafted SQL statements. The flaw affects pgcollection versions 2.0.0 through 2.1.1 and was disclosed on September 24, 2026. Amazon RDS for PostgreSQL and Amazon Aurora PostgreSQL are not affected, as those managed services only ship version 1.1.1. The vulnerability carries a CVSS v3.1 base score of 8.8 (High) and a CVSS v4.0 base score of 8.7 (High) (AWS Security Bulletin, GitHub Advisory).

Technical details

The root cause is a type confusion issue (CWE-843: Access of Resource Using Incompatible Type) in pgcollection's collection value retrieval and array conversion functions. Specifically, the extension used can_coerce_type() checks that permitted type mismatches, causing datumCopy to operate on metadata inconsistent with the actual stored datum representation; the icollection_to_array two-argument polymorphic overload also incorrectly assumed the output element type matched the stored type rather than deriving it from get_fn_expr_rettype(). An authenticated database user can trigger this by requesting a stored icollection value as a type incompatible with how it was originally stored, causing the backend to misinterpret the datum's memory layout and potentially enabling arbitrary code execution or a backend crash (GitHub Advisory, pgcollection v2.1.2 Release).

Impact

Successful exploitation allows an authenticated database user to crash the PostgreSQL backend (denial of service) or execute arbitrary code with the privileges of the PostgreSQL operating system user, resulting in high confidentiality, integrity, and availability impact. This could enable an attacker to read or modify all data managed by the PostgreSQL instance, install backdoors, or pivot to other systems accessible from the database host. The scope is limited to self-hosted deployments of pgcollection 2.0.0–2.1.1; managed AWS services (RDS, Aurora) are unaffected (AWS Security Bulletin, GitHub Advisory).

Exploitability

There is no public proof-of-concept exploit and no evidence of in-the-wild exploitation at this time (Feedly). The EPSS score is approximately 0.65%, reflecting a low but non-negligible probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires valid database credentials (low privileges), making it accessible to any authenticated database user but not to unauthenticated attackers (GitHub Advisory).

Exploitation steps

  1. Identify target: Locate a PostgreSQL instance running a self-compiled and deployed version of pgcollection 2.0.0–2.1.1 (not managed RDS/Aurora).
  2. Obtain database access: Authenticate to the PostgreSQL database with any valid user account that has permission to interact with pgcollection objects.
  3. Store a typed icollection value: Insert a value into an icollection column using a specific type (e.g., integer).
  4. Request with incompatible type: Craft a SQL statement that retrieves the stored icollection value while specifying a type incompatible with the stored representation, or invoke the icollection_to_array polymorphic overload in a way that causes the output element type to be inferred incorrectly.
  5. Trigger type confusion: The extension misinterprets the datum's memory layout due to mismatched type metadata, leading to memory corruption.
  6. Achieve code execution or crash: Depending on memory state, the corrupted datum processing may result in arbitrary code execution as the postgres OS user or a backend crash (GitHub Advisory, pgcollection v2.1.2 Release).

Indicators of compromise

  • Logs: Unexpected PostgreSQL backend crash logs (FATAL or SIGSEGV entries in postgresql.log) associated with icollection or icollection_to_array function calls; error messages referencing type coercion or datum representation failures.
  • Process: Unusual child processes spawned by the postgres OS user (e.g., shells, network utilities) following execution of icollection-related SQL.
  • Database: Audit logs showing SQL statements that invoke icollection_to_array with mismatched type arguments, particularly from non-administrative users; repeated backend restarts triggered by the same session or user.
  • Network: Unexpected outbound connections from the PostgreSQL server host following database activity involving pgcollection functions.

Mitigation and workarounds

The fix is available in pgcollection version 2.1.2, which tightens type coercion by replacing can_coerce_type() with exact type match or IsBinaryCoercible() checks and corrects the icollection_to_array overload to derive the output element type from get_fn_expr_rettype(). There is no supported workaround; affected users must upgrade to v2.1.2 or later. Amazon RDS for PostgreSQL and Amazon Aurora PostgreSQL customers are not impacted and require no action. As a defense-in-depth measure, restrict database access to trusted users and apply the principle of least privilege to database accounts (AWS Security Bulletin, pgcollection v2.1.2 Release).

Community reactions

AWS published an official security bulletin (2026-118-AWS) on September 24, 2026, clearly scoping the impact to self-hosted deployments and confirming managed services are unaffected (AWS Security Bulletin). The vulnerability received routine coverage from vulnerability tracking services and security news aggregators, with no notable researcher commentary or significant community discussion identified beyond standard disclosure channels.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Ubuntu

Unknown

bionic (esm-infra)

postgresql-10

Not Affected

devel

postgresql-18

Not Affected

focal (esm-infra)

postgresql-12

Not Affected

jammy

postgresql-14

Not Affected

noble

postgresql-16

Not Affected

resolute

postgresql-18

Not Affected

trusty (esm-infra-legacy)

postgresql-9.3

Deferred

xenial (esm-infra-legacy)

postgresql-9.5

Not Affected

Source: This report was generated using AI

Related PostgreSQL vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-103484HIGH8.8
  • PostgreSQL logoPostgreSQL
  • pgvector
NoYesOct 01, 2026
CVE-2026-19633HIGH8.8
  • PostgreSQL logoPostgreSQL
  • postgresql16-anonymizer
NoYesSep 06, 2026
CVE-2026-96883HIGH8.7
  • PostgreSQL logoPostgreSQL
  • postgresql-12
NoNoSep 24, 2026
CVE-2026-83534MEDIUM6.4
  • PostgreSQL logoPostgreSQL
  • postgresql16-anonymizer-debugsource
NoYesSep 06, 2026
CVE-2026-19634MEDIUM6.4
  • PostgreSQL logoPostgreSQL
  • postgresql16-anonymizer-debugsource
NoYesSep 06, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management