Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Network-reachable low-complexity SQLi, but a signed-up authenticated account is required so PR:L not PR:N; COPY TO PROGRAM executes OS commands beyond the DBMS, so scope changes with full C/I/A loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Lifecycle Timeline
4DescriptionCVE.org
NocoBase is an AI-powered no-code/low-code platform for building business applications and enterprise solutions. Prior to 2.0.61, NocoBase @nocobase/plugin-notification-in-app-message exposed GET /api/myInAppChannels:list, where the filter[latestMsgReceiveTimestamp][$lt] value was inserted into a Sequelize.literal() template string without escaping or parameter binding, allowing a signed-up authenticated user to run stacked PostgreSQL statements and potentially execute commands with COPY ... TO PROGRAM. This vulnerability is fixed in 2.0.61.
Articles & Coverage 1
AnalysisAI
SQL injection in NocoBase's @nocobase/plugin-notification-in-app-message (before 2.0.61) lets any signed-up authenticated user reach GET /api/myInAppChannels:list and inject into the filter[latestMsgReceiveTimestamp][$lt] parameter, which is concatenated into a Sequelize.literal() template with no escaping or parameter binding. Because PostgreSQL permits stacked statements through this sink, an attacker can run arbitrary SQL and escalate to operating-system command execution via COPY ... TO PROGRAM. No public exploit identified at time of analysis and the flaw is not in CISA KEV, but the code fix and regression tests are public in the vendor commit, and the vendor rates it CVSS 10.0.
Technical ContextAI
NocoBase is an open-source no-code/low-code platform built on Node.js and the Sequelize ORM, backed here by PostgreSQL. The vulnerable endpoint filters in-app notification channels by the timestamp of the latest received message. Instead of passing the user-supplied $lt value as a bound parameter, the plugin embedded it inside a Sequelize.literal() call - a raw-SQL escape hatch that Sequelize inserts verbatim into the generated query. This is a textbook CWE-89 (SQL Injection): untrusted input crosses into a raw-SQL string. The severity is amplified by two PostgreSQL-specific behaviors: the driver's support for stacked/multi-statement queries (allowing '...; <attacker SQL>') and the COPY ... TO PROGRAM feature, which executes shell commands on the database server host, turning a data-layer injection into remote command execution. The affected component per CPE is cpe:2.3:a:nocobase:nocobase across all versions prior to the fix.
RemediationAI
Vendor-released patch: 2.0.61 - upgrade NocoBase to 2.0.61 or later, which replaces the unsafe Sequelize.literal() concatenation with validated/parameterized handling and rejects non-numeric timestamp input (see the release at https://github.com/nocobase/nocobase/releases/tag/v2.0.61 and advisory GHSA-p849-8hwh-84j9). If you cannot patch immediately, reduce exposure by disabling or unloading the in-app message notification plugin (removes the vulnerable endpoint but breaks in-app notifications), disabling public user self-signup so untrusted accounts cannot obtain the authenticated access the attack needs, and restricting network access to the NocoBase instance to trusted users. At the PostgreSQL layer, run the database service account as a low-privilege, non-superuser role to blunt COPY ... TO PROGRAM (note superuser or pg_execute_server_program membership is required for TO PROGRAM, so removing it prevents the RCE escalation even if injection occurs); these controls limit but do not fully eliminate SQL-injection data exposure, so patching remains the priority.
More in PostgreSQL
View allPostgreSQL libpq functions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), and PQescapeStringConn() improperl
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
Argument injection vulnerability in PostgreSQL 9.2.x before 9.2.4, 9.1.x before 9.1.9, and 9.0.x before 9.0.13 allows re
Unauthenticated arbitrary file write in Splunk Enterprise (below 10.2.4 and 10.0.7) and Splunk Cloud Platform (below 10.
PostgreSQL versions before 9.2.22, 9.3.18, 9.4.13, 9.5.8 and 9.6.4 are vulnerable to incorrect authentication flaw allow
The build_tablename function in pgsql.c in the PostgreSQL (aka pgsql) extension in PHP through 5.6.7 does not validate t
A vulnerability in the h2oai/h2o-3 REST API versions 3.46.0.4 allows unauthenticated remote attackers to execute arbitra
In PostgreSQL 9.3 through 11.2, the "COPY TO/FROM PROGRAM" function allows superusers and users in the 'pg_execute_serve
Unauthenticated SQL injection in Vendure Shop API allows remote attackers to execute arbitrary SQL commands against the
Parse Server is an open source http web server backend. Rated critical severity (CVSS 10.0), this vulnerability is remot
Hard-coded default PostgreSQL credentials shipped in the docker-compose.yaml of langgenius Dify through version 1.5.1 al
A vulnerability in the FinanceChatLlamaPack of the run-llama/llama_index repository, versions up to v0.12.3, allows for
Same weakness CWE-89 – SQL Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-44802
GHSA-p849-8hwh-84j9