Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as NocoBase admin
-
DeliveryNavigate to SQL Collection feature
-
ExploitSubmit SELECT query targeting pg_shadow or pg_roles
-
ExecutionBypass incomplete keyword blacklist via direct or subquery form
-
PersistReceive PostgreSQL password hashes in query results
-
ImpactCrack hashes offline to obtain plaintext database credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation completeness
|
| Exploitation Conditions | Exploitation requires an authenticated NocoBase admin-role account (confirmed by PR:H in the CVSS vector). The @nocobase/plugin-collection-sql plugin must be installed and active - it is a separately enabled plugin, not a core NocoBase component. The backend database must be PostgreSQL; pg_shadow, pg_roles, and pg_stat_activity are PostgreSQL-specific system catalog tables unavailable in MySQL or SQLite deployments. The PostgreSQL role used by NocoBase must have sufficient privileges to query pg_shadow - typically true when NocoBase connects as a superuser or pg_shadow-read-capable role, which is common in default deployments. Non-admin NocoBase users cannot define SQL Collections and are not affected. No network-level special conditions are required beyond admin access to the NocoBase web interface. |
| Impact | The CVSS 3.1 score of 6.8 (Medium) with vector AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N captures the tension between high confidentiality impact and a high-privilege prerequisite. The PR:H requirement substantially constrains real-world risk - exploitation is limited to actors who already hold a trusted NocoBase admin account. That said, the S:C metric is accurate: a successful exploit crosses the application boundary into PostgreSQL system catalogs, returning bcrypt password hashes that could enable offline cracking and lateral movement into the database directly. Risk escalates in shared NocoBase deployments where the admin role is distributed across multiple operators who are not fully trusted database superusers, or in scenarios where a lower-privilege account is escalated to admin through a separate vulnerability. No EPSS data was provided in the input; exploitation probability cannot be quantified. This CVE is not in CISA KEV, and no public exploit code has been identified. The commit-confirmed subquery bypass (wrapping pg_shadow in a derived table) demonstrates the original blocklist was exploitable by any admin through trivially obfuscated SQL, which increases confidence that in-the-wild exploitation was feasible for any admin with knowledge of PostgreSQL internals. |
| Exploit ScenarioDerived | An authenticated NocoBase administrator navigates to the SQL Collection configuration interface and creates a new collection using the query SELECT usename, passwd FROM pg_shadow or its subquery variant SELECT * FROM (SELECT usename, passwd FROM pg_shadow) AS passwords. Both forms bypass the original keyword blacklist, and the application executes the query against PostgreSQL, returning bcrypt-hashed credentials for all database users. The attacker then runs offline hash-cracking against the retrieved hashes to recover plaintext passwords, enabling direct database access independent of the NocoBase application. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 15, 2026
PostgreSQL password hash disclosure in NocoBase 2.0.59 and earlier allows an authenticated administrator to extract pg_shadow credential hashes and database metadata by submitting raw SQL queries that reference system catalog tables omitted from the checkSQL() keyword blacklist. The SQL Collection plugin's blocklist-based validation failed to restrict pg_shadow, pg_roles, pg_stat_activity, and information_schema, and the commit diff confirms the bypass also worked via subquery wrapping (e.g., SELECT * FROM (SELECT usename, passwd FROM pg_shadow) AS passwords). No public exploit identified at time of analysis, and this CVE is not listed in CISA KEV; a vendor-released patch is available in v2.1.0-alpha.46.
RemediationAI
Upgrade to NocoBase 2.1.0-alpha.46 or later, which expands the checkSQL() blocklist to include pg_catalog, pg_shadow, pg_authid, pg_auth_members, pg_roles, pg_stat_activity, and information_schema, and closes the subquery bypass vector. The patched release is available at https://github.com/nocobase/nocobase/releases/tag/v2.1.0-alpha.46; the specific fix commit is https://github.com/nocobase/nocobase/commit/87c548969ce9258dd7f0d9571c9453ae10bc3fc4. If an immediate upgrade is not possible, disable the @nocobase/plugin-collection-sql plugin entirely - this removes the attack surface at the cost of SQL-backed collection functionality. As a partial mitigation, audit all existing SQL Collection definitions for references to pg_shadow, pg_roles, pg_stat_activity, information_schema, or subqueries that alias these tables, and delete any offending collections. Organizations with strict security requirements should note that blocklist-based SQL validation is inherently fragile against novel bypass patterns; consider restricting the PostgreSQL role used by NocoBase to a least-privilege account that cannot read pg_shadow even if a bypass is discovered.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is @nocobase/plugin-collection-sql, a NocoBase plugin that allows administrators to define database-backed views using raw SQL through the 'SQL Collection' feature. Input is gated by the checkSQL() function in packages/plugins/@nocobase/plugin-collection-sql/src/server/utils.ts, which implements CWE-184 (Incomplete List of Disallowed Inputs) - a blocklist approach that originally omitted the PostgreSQL system catalog identifiers pg_shadow (password hashes), pg_authid, pg_auth_members, pg_roles, pg_stat_activity, pg_catalog, and the information_schema schema. The CVSS Scope:Changed metric reflects that the query crosses from the NocoBase application boundary into the PostgreSQL system catalog layer. A secondary bug - sql.trim().split(';').shift() could return undefined rather than an empty string - was also patched in the same commit, closing a potential edge-case bypass. The CPE cpe:2.3:a:nocobase:nocobase:*:*:*:*:*:*:*:* covers all NocoBase versions through 2.0.59. The vulnerability is PostgreSQL-specific; pg_shadow and related catalogs do not exist in MySQL or SQLite deployments.
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
AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N
Admin role required to access SQL Collection (PR:H); scope changes as query reaches PostgreSQL system catalogs (S:C); confidentiality high (password hashes); no integrity or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
NocoBase is an AI-powered no-code/low-code platform for building business applications and enterprise solutions. In 2.0.59 and earlier, NocoBase @nocobase/plugin-collection-sql used the checkSQL() function in packages/plugins/@nocobase/plugin-collection-sql/src/server/utils.ts with an incomplete keyword blacklist that did not restrict PostgreSQL system catalog tables such as pg_shadow, pg_roles, and pg_stat_activity, allowing an admin-role user to read password hashes and database metadata through the SQL Collection feature. This vulnerability is fixed in 2.1.0-alpha.46.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
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-44800
GHSA-v8vm-cqh8-q87q
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB