Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as collection-sql privileged user
-
DeliveryCall sqlCollection:setFields to store malicious SQL
-
ExploitBypass checkSQL() validation
-
ExecutionTrigger execution on collection reload
-
ImpactRead pg_shadow hashes / pg_read_file arbitrary files
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated NocoBase user who holds the 'collection-sql' snippet permission (a specific privilege grant, not merely any logged-in account) and the ability to invoke the sqlCollection:setFields action. The backend must be PostgreSQL for the described impact, since the attack leverages PostgreSQL-specific primitives (pg_shadow table and the pg_read_file function). The flaw works against affected versions through 2.2.28 by replacing a previously-validated benign collection query with malicious SQL that bypasses checkSQL(), which executes on the next collection reload. Limiting factors: no unauthenticated access, no self-service registration path to this privilege by default, high privilege requirement (PR:H), and PostgreSQL-specific payloads for the hash-dump/file-read impact - in environments where collection-sql operators are already trusted near-admins, the marginal risk is lower. |
| Impact | This is a genuine but conditional priority rather than a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N, VC/VI/VA all High, score 8.6) is internally consistent with the description: network-reachable, low complexity, no user interaction, but requiring HIGH privileges - specifically a user already holding the collection-sql snippet. That PR:H is the single most important risk-limiting signal and it is corroborated by the description's phrase 'allows privileged users.' No EPSS score, KEV listing, or SSVC decision data was provided in the input. The vulnerability is sourced from a VulnCheck advisory and a public GitHub issue (#10629) with a direct link to the vulnerable source (sql.ts#L14-L104), which raises the practical likelihood that working exploit logic can be reconstructed, but no explicit public exploit code (POC) is claimed - so per precision rules this is 'no public exploit identified at time of analysis.' Signals are not conflicting: both CVSS and description agree exploitation needs privileged/authenticated access. The realistic risk is post-authentication privilege-to-database/host escalation (reading pg_shadow password hashes and pg_read_file for arbitrary file disclosure), not mass unauthenticated compromise - making this high-value in multi-tenant or least-privilege NocoBase deployments where a 'collection-sql' operator is not meant to reach the raw database or filesystem. EPSS and KEV absence means widespread automated exploitation is unproven. |
| Exploit ScenarioDerived | An attacker who already holds the collection-sql snippet permission in NocoBase (a mid-tier privileged user, not an admin) crafts a request to the sqlCollection:setFields action to store malicious SQL that bypasses the checkSQL() validation. When the SQL collection is reloaded, the stored statement executes against the PostgreSQL backend, letting the attacker dump pg_shadow password hashes or read arbitrary files via pg_read_file. No public POC is identified, though the advisory and the linked vulnerable source code (sql.ts) substantially lower the barrier to weaponization. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
SQL injection in NocoBase's @nocobase/plugin-collection-sql through 2.2.28 allows an authenticated user with the collection-sql snippet permission to bypass checkSQL() through the sqlCollection:setFields action and persist malicious SQL that executes when the collection reloads. The issue requires high privileges and a PostgreSQL backend for the described impact, where injected statements can read pg_shadow password hashes or invoke pg_read_file; no public exploit was identified at time of analysis. It is a conditional, high-privilege risk rather than an unauthenticated emergency.
RemediationAI
No vendor-released patch or fixed version was identified in the provided data; track GitHub issue https://github.com/nocobase/nocobase/issues/10629 and NocoBase releases for a version beyond 2.2.28, then upgrade @nocobase/plugin-collection-sql. Until a patch is available, restrict the collection-sql snippet permission and the sqlCollection:setFields action to fully trusted administrator accounts, and audit or remove stored SQL collections that are not essential. Where the plugin is not required, disable or remove @nocobase/plugin-collection-sql; this removes the attack surface but may break SQL-backed collections. Run the NocoBase database connection under a least-privilege PostgreSQL role that is not superuser and lacks pg_read_server_files or equivalent file-read rights, which limits pg_shadow and pg_read_file impact but may affect legitimate administrative features. See the VulnCheck advisory https://www.vulncheck.com/advisories/nocobase-plugin-collection-sql-through-2.2.28-sql-injection-via-sqlcollection-setfields.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
NocoBase is a Node.js low-code/no-code platform, and the @nocobase/plugin-collection-sql package lets users define SQL-backed collections. The flaw is CWE-89 (improper neutralization of special elements used in SQL) in the plugin's server-side sql.ts logic referenced at lines 14-104: the sqlCollection:setFields action accepts a stored collection query, and checkSQL() can be bypassed so unvalidated SQL persists in configuration and is executed on the next collection reload. Exploitation requires an authenticated NocoBase account holding the collection-sql snippet privilege and access to that action; the data-exfiltration primitives described, pg_shadow and pg_read_file, are PostgreSQL-specific, so the highest-impact path applies to PostgreSQL-backed deployments. The CPE cpe:2.3:a:nocobase:nocobase:*:*:*:*:*:*:*:* covers affected NocoBase releases through 2.2.28.
Know when Nocobase gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Network-reachable action with low complexity and no user interaction, but requires the high-privilege collection-sql snippet (PR:H); arbitrary SQL yields full confidentiality, integrity, and availability impact on the database.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
NocoBase @nocobase/plugin-collection-sql through 2.2.28 contains an SQL injection vulnerability that allows privileged users to store unvalidated SQL by bypassing checkSQL() through the sqlCollection:setFields action. Attackers holding the collection-sql snippet can replace a benign collection query with dangerous statements executed on reload, reading pg_shadow password hashes or calling pg_read_file.
Executive ViewAI
NocoBase's collection-SQL plugin through version 2.2.28 contains a high-severity SQL injection flaw that allows users with the collection-sql snippet permission to persist malicious SQL, which can then expose PostgreSQL password hashes or read server files when the collection reloads. Leadership should care because this creates a data-exposure pathway on PostgreSQL-backed deployments for accounts with elevated permissions, although exploitation requires significant access and no public exploit has been identified at time of analysis.
No vendor-released patch identified at time of analysis; restrict the collection-sql snippet permission to trusted administrators, disable @nocobase/plugin-collection-sql if not required, enforce least-privilege PostgreSQL roles that cannot read pg_shadow or invoke pg_read_file, and monitor for sqlCollection:setFields abuse and persisted SQL changes.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
SQL injection in NocoBase's @nocobase/plugin-notification-in-app-message (before 2.0.61) lets any signed-up authenticate
SQL injection in NocoBase v2.1.21 lets an attacker reach the SQL handling path behind the checkSQL function and submit c
Sandbox escape in NocoBase's plugin-workflow-javascript (all 2.0.x releases through 2.0.23) originates from a defective
Server-side request forgery in NocoBase through v2.1.20 allows authenticated administrators to issue arbitrary outbound
PostgreSQL password hash disclosure in NocoBase 2.0.59 and earlier allows an authenticated administrator to extract pg_s
Command injection in NocoBase's @nocobase/plugin-backups prior to v2.1.19 allows an authenticated backup-management user
Server-side request forgery in NocoBase v2.1.21 lets an authenticated, low-privilege user drive the server's serverReque
EUVD-2026-104398
GHSA-j67h-xf8r-r323
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB