8.7
HIGH CVSS 4.0
CVE-2026-76848
TypeORM 0.2.21 through 1.1.0 SQL Injection via SelectQueryBuilder.distinctOn
Description

TypeORM's SelectQueryBuilder.distinctOn accepts an array of strings and stores it on the expression map without validation. For PostgreSQL-family drivers, createSelectDistinctExpression in src/query-builder/SelectQueryBuilder.ts joins that array and interpolates the result into the generated statement as SELECT DISTINCT ON (values), with no escaping, quoting, identifier validation or allowlist, and without routing the values through replacePropertyNames or the driver's escape helper. Because the interpolation point is a parenthesized SQL expression list rather than an identifier-only position, a supplied element may carry arbitrary expressions, including correlated subqueries. An application that forwards a client-controlled value into distinctOn, for instance to let a caller choose a deduplication column, allows that client to read data anywhere the application's database role can reach through boolean or time-based inference, independently of the entity being queried. validateOrderByCondition, the allowlist check guarding the orderBy family in the same class, is not applied to this path.

INFO

Published Date :

Aug. 24, 2026, 2:17 p.m.

Last Modified :

Aug. 24, 2026, 2:17 p.m.

Remotely Exploit :

Yes !
Affected Products

The following products are affected by CVE-2026-76848 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

No affected product recoded yet

CVSS Scores
The Common Vulnerability Scoring System is a standardized framework for assessing the severity of vulnerabilities in software and systems. We collect and displays CVSS scores from various sources for each CVE.
Score Version Severity Vector Exploitability Score Impact Score Source
CVSS 3.1 HIGH 83251b91-4cc7-4094-a5c7-464a1b83ea10
CVSS 3.1 HIGH [email protected]
CVSS 4.0 HIGH 83251b91-4cc7-4094-a5c7-464a1b83ea10
CVSS 4.0 HIGH [email protected]
Solution
Avoid using user-controlled input in distinctOn and ensure proper SQL escaping.
  • Validate and sanitize all input passed to distinctOn.
  • Ensure all SQL values are properly escaped.
  • Update TypeORM to the latest secure version.
  • Review database query construction logic.
References to Advisories, Solutions, and Tools

Here, you will find a curated list of external links that provide in-depth information, practical solutions, and valuable tools related to CVE-2026-76848.

URL Resource
https://github.com/typeorm/typeorm
https://github.com/typeorm/typeorm/blob/1.1.0/src/query-builder/SelectQueryBuilder.ts
https://www.vulncheck.com/advisories/typeorm-through-sql-injection-via-selectquerybuilder-distincton
CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-76848 is associated with the following CWEs:

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2026-76848 vulnerability anywhere in the article.

The following table lists the changes that have been made to the CVE-2026-76848 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.

  • New CVE Received by [email protected]

    Aug. 24, 2026

    Action Type Old Value New Value
    Added Affected [{'vendor': 'typeorm', 'product': 'typeorm', 'versions': [{'status': 'affected', 'version': '0.2.21', 'versionType': 'semver', 'lessThanOrEqual': '1.1.0'}], 'packageURL': 'pkg:npm/typeorm', 'packageName': 'typeorm', 'collectionURL': 'https://www.npmjs.com/package/typeorm', 'defaultStatus': 'unaffected'}]
    Added Description TypeORM's SelectQueryBuilder.distinctOn accepts an array of strings and stores it on the expression map without validation. For PostgreSQL-family drivers, createSelectDistinctExpression in src/query-builder/SelectQueryBuilder.ts joins that array and interpolates the result into the generated statement as SELECT DISTINCT ON (values), with no escaping, quoting, identifier validation or allowlist, and without routing the values through replacePropertyNames or the driver's escape helper. Because the interpolation point is a parenthesized SQL expression list rather than an identifier-only position, a supplied element may carry arbitrary expressions, including correlated subqueries. An application that forwards a client-controlled value into distinctOn, for instance to let a caller choose a deduplication column, allows that client to read data anywhere the application's database role can reach through boolean or time-based inference, independently of the entity being queried. validateOrderByCondition, the allowlist check guarding the orderBy family in the same class, is not applied to this path.
    Added CVSS V4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
    Added CVSS V3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    Added CWE CWE-89
    Added Reference https://github.com/typeorm/typeorm
    Added Reference https://github.com/typeorm/typeorm/blob/1.1.0/src/query-builder/SelectQueryBuilder.ts
    Added Reference https://www.vulncheck.com/advisories/typeorm-through-sql-injection-via-selectquerybuilder-distincton
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.