Skip to content
Heist/ feed
Back to feed
High

NocoBase Vulnerable to SQL Injection via String Concatenation in Recursive Eager Loading

Type: advisorySources: OSV

NocoBase is an AI-powered no-code/low-code platform for building business applications and enterprise solutions. Prior to version 2.0.39, the queryParentSQL() function in the core database package constructs a recursive CTE query by joining nodeIds with string concatenation instead of using parameterized queries. The nodeIds array contains primary key values read from database rows. An attacker who can create a record with a malicious string primary key can inject arbitrary SQL when any subsequent request triggers recursive eager loading on that collection. This issue has been patched in version 2.0.39.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-41640
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 03:57 UTC · Revision 1

Source evidence

NocoBase Vulnerable to SQL Injection via String Concatenation in Recursive Eager Loading

core-osv · Original source

Published 7 May 2026, 04:09 UTC

NocoBase is an AI-powered no-code/low-code platform for building business applications and enterprise solutions. Prior to version 2.0.39, the queryParentSQL() function in the core database package constructs a recursive CTE query by joining nodeIds with string concatenation instead of using parameterized queries. The nodeIds array contains primary key values read from database rows. An attacker who can create a record with a malicious string primary key can inject arbitrary SQL when any subsequent request triggers recursive eager loading on that collection. This issue has been patched in version 2.0.39.

osv:CVE-2026-41640
Complete source record
{
  "id": "bbc3e3a3af5f769e8694b830ad1713d96c5228a9312c3ede791114f1e911b49d",
  "url": "https://osv.dev/vulnerability/CVE-2026-41640",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "NocoBase Vulnerable to SQL Injection via String Concatenation in Recursive Eager Loading",
    "summary": "NocoBase is an AI-powered no-code/low-code platform for building business applications and enterprise solutions. Prior to version 2.0.39, the queryParentSQL() function in the core database package constructs a recursive CTE query by joining nodeIds with string concatenation instead of using parameterized queries. The nodeIds array contains primary key values read from database rows. An attacker who can create a record with a malicious string primary key can inject arbitrary SQL when any subsequent request triggers recursive eager loading on that collection. This issue has been patched in version 2.0.39.",
    "evidence": "osv:CVE-2026-41640",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-41640",
      "aliases": [
        "CVE-2026-41640",
        "GHSA-4948-f92q-f432"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/nocobase/nocobase",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "b03cab07e7bc11cf5c79f6b12f28bfcd3ae22aea"
                },
                {
                  "fixed": "202e2b8efe44ba90adbf1087f6f70881ff947604"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:nocobase:nocobase:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.0.39"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "202e2b8efe44ba90adbf1087f6f70881ff947604"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "b03cab07e7bc11cf5c79f6b12f28bfcd3ae22aea"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v2.0.39"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v2.0.38",
            "v2.0.37",
            "v2.0.36",
            "v2.0.35",
            "v2.0.34",
            "v2.0.33",
            "v2.0.32",
            "v2.0.31",
            "v2.0.30",
            "v2.0.29",
            "v2.0.28",
            "v2.0.27",
            "v2.0.26",
            "v2.0.25",
            "v2.0.24",
            "v2.0.23",
            "v2.0.22",
            "v2.0.21",
            "v2.0.20",
            "v2.0.19",
            "v2.0.18",
            "v2.0.17",
            "v2.0.16",
            "v2.0.15",
            "v2.0.14",
            "v2.0.13",
            "v2.0.12",
            "v2.0.11",
            "v2.0.10",
            "v2.0.9",
            "v2.0.8",
            "v2.0.7",
            "v2.0.6",
            "v2.0.5",
            "v2.0.3",
            "v2.0.2",
            "v2.0.1",
            "v2.0.0",
            "v2.0.0-alpha.71",
            "v2.0.0-alpha.70",
            "v2.0.0-alpha.69",
            "v2.0.0-alpha.68",
            "v2.0.0-alpha.67",
            "v2.0.0-alpha.66",
            "v2.0.0-alpha.65",
            "v2.0.0-alpha.64",
            "v2.0.0-alpha.63",
            "v2.0.0-alpha.62",
            "v2.0.0-alpha.61",
            "v2.0.0-alpha.60",
            "v2.0.0-alpha.59",
            "v2.0.0-alpha.58",
            "v2.0.0-alpha.57",
            "v2.0.0-alpha.56",
            "v2.0.0-alpha.55",
            "v2.0.0-alpha.54",
            "v2.0.0-alpha.53",
            "v2.0.0-alpha.52",
            "v2.0.0-alpha.51",
            "v2.0.0-alpha.50",
            "v2.0.0-alpha.49",
            "v2.0.0-alpha.48",
            "v2.0.0-alpha.47",
            "v2.0.0-alpha.46",
            "v2.0.0-alpha.45",
            "v2.0.0-alpha.44",
            "v2.0.0-alpha.43",
            "v2.0.0-alpha.42",
            "v2.0.0-alpha.41",
            "v2.0.0-alpha.40",
            "v2.0.0-alpha.39",
            "v2.0.0-alpha.38",
            "v2.0.0-alpha.37",
            "v2.0.0-alpha.36",
            "v2.0.0-alpha.35",
            "v2.0.0-alpha.34",
            "v2.0.0-alpha.33",
            "v2.0.0-alpha.32",
            "v2.0.0-alpha.31",
            "v2.0.0-alpha.30",
            "v2.0.0-alpha.29",
            "v2.0.0-alpha.28",
            "v2.0.0-alpha.27",
            "v2.0.0-alpha.26",
            "v2.0.0-alpha.25",
            "v2.0.0-alpha.24",
            "v2.0.0-alpha.23",
            "v2.0.0-alpha.22",
            "v2.0.0-alpha.21",
            "v2.0.0-alpha.20",
            "v2.0.0-alpha.19",
            "v2.0.0-alpha.18",
            "v2.0.0-alpha.17",
            "v2.0.0-alpha.16",
            "v2.0.0-alpha.15",
            "v2.0.0-alpha.14",
            "v2.0.0-alpha.13",
            "v2.0.0-alpha.12",
            "v2.0.0-alpha.11",
            "v2.0.0-alpha.10",
            "v2.0.0-alpha.9",
            "v2.0.0-alpha.8",
            "v2.0.0-alpha.7",
            "v2.0.0-alpha.6",
            "v2.0.0-alpha.5",
            "v2.0.0-alpha.4",
            "v2.0.0-alpha.3",
            "v2.0.0-alpha.2",
            "v2.0.0-alpha.1",
            "v1.9.0-alpha.17",
            "v1.9.0-alpha.16",
            "v1.9.0-alpha.15",
            "v1.9.0-alpha.14",
            "v1.9.0-alpha.13",
            "v1.9.0-alpha.12",
            "v1.9.0-alpha.11",
            "v1.9.0-alpha.10",
            "v1.9.0-alpha.9",
            "v1.9.0-alpha.8",
            "v1.9.0-alpha.7",
            "v1.9.0-alpha.6",
            "v1.9.0-alpha.5",
            "v1.9.0-alpha.4",
            "v1.9.0-alpha.3",
            "v1.9.0-alpha.2",
            "v1.9.0-alpha.1",
            "v1.8.0-alpha.14",
            "v1.8.0-beta.13",
            "v1.8.0-alpha.13",
            "v1.8.0-alpha.12",
            "v1.8.0-alpha.11",
            "v1.8.0-alpha.10",
            "v1.8.0-alpha.9",
            "v1.8.0-alpha.8",
            "v1.8.0-alpha.7",
            "v1.8.0-alpha.6",
            "v1.8.0-alpha.5",
            "v1.8.0-alpha.4",
            "v1.8.0-alpha.3",
            "v1.8.0-alpha.2",
            "v1.8.0-alpha.1",
            "v1.7.0-alpha.15",
            "v1.7.0-alpha.14",
            "v1.7.0-alpha.13",
            "v1.7.0-alpha.12",
            "v1.7.0-alpha.11",
            "v1.7.0-alpha.10",
            "v1.7.0-beta.9",
            "v1.7.0-beta.8",
            "v1.7.0-beta.7",
            "v1.7.0-beta.6",
            "v1.7.0-beta.5",
            "v1.7.0-beta.4",
            "v1.7.0-beta.3",
            "v1.7.0-beta.2",
            "v1.7.0-beta.1",
            "v1.6.0-beta.19",
            "v1.6.0-beta.18",
            "v1.6.0-beta.17",
            "v1.6.0-beta.16",
            "v1.6.0-beta.15",
            "v1.6.0-beta.14",
            "v1.6.0-beta.13",
            "v1.6.0-beta.12",
            "v1.6.0-beta.11",
            "v1.6.0-beta.10",
            "v1.6.0-beta.9",
            "v1.6.0-beta.8",
            "v1.6.0-beta.7",
            "v1.6.0-beta.6",
            "v1.6.0-beta.5",
            "v1.6.0-beta.4",
            "v1.6.0-alpha.23",
            "v1.6.0-alpha.22",
            "v1.6.0-alpha.21",
            "v1.6.0-alpha.20",
            "v1.6.0-alpha.19",
            "v1.6.0-alpha.18",
            "v1.6.0-alpha.17",
            "v1.6.0-alpha.16",
            "v1.6.0-alpha.15",
            "v1.6.0-alpha.14",
            "v1.6.0-alpha.13",
            "v1.6.0-alpha.12",
            "v1.6.0-alpha.11",
            "v1.6.0-alpha.10",
            "v1.6.0-alpha.9",
            "v1.6.0-alpha.8",
            "v1.6.0-alpha.7",
            "v1.6.0-alpha.6",
            "v1.6.0-alpha.5",
            "v1.6.0-alpha.4",
            "v1.6.0-alpha.3",
            "v1.6.0-alpha.2",
            "v1.6.0-alpha.1",
            "v1.5.0-alpha.5",
            "v1.5.0-alpha.4",
            "v1.5.0-alpha.3",
            "v1.5.0-alpha.2",
            "v1.5.0-alpha.1",
            "v1.2.11-alpha",
            "v1.2.10-alpha",
            "v1.2.9-alpha",
            "v1.2.8-alpha",
            "v1.2.7-alpha",
            "v1.2.6-alpha",
            "v1.2.5-alpha",
            "v1.2.4-alpha",
            "v1.2.3-alpha",
            "v1.2.2-alpha",
            "v1.2.1-alpha",
            "v1.2.0-alpha",
            "v1.0.1-alpha.3",
            "v1.0.1-alpha.2",
            "v1.0.1-alpha.1",
            "v1.0.0-alpha.17",
            "v1.0.0-alpha.16",
            "v1.0.0-alpha.15",
            "v1.0.0-alpha.14",
            "v1.0.0-alpha.13",
            "v1.0.0-alpha.12",
            "v1.0.0-alpha.11",
            "v1.0.0-alpha.10",
            "v1.0.0-alpha.9",
            "v1.0.0-alpha.8",
            "v1.0.0-alpha.7",
            "v1.0.0-alpha.6",
            "v1.0.0-alpha.5",
            "v1.0.0-alpha.4",
            "v1.0.0-alpha.3",
            "v1.0.0-alpha.2",
            "v1.0.0-alpha.1",
            "v0.21.0-alpha.16",
            "v0.21.0-alpha.15",
            "v0.21.0-alpha.14",
            "v0.21.0-alpha.13",
            "v0.21.0-alpha.12",
            "v0.21.0-alpha.11",
            "v0.21.0-alpha.10",
            "v0.21.0-alpha.9",
            "v0.21.0-alpha.8",
            "v0.21.0-alpha.7",
            "v0.21.0-alpha.6",
            "v0.21.0-alpha.5",
            "v0.21.0-alpha.4",
            "v0.21.0-alpha.3",
            "v0.21.0-alpha.2",
            "v0.21.0-alpha.1",
            "v0.20.0-alpha.17",
            "v0.20.0-alpha.16",
            "v0.20.0-alpha.15",
            "v0.20.0-alpha.14",
            "v0.20.0-alpha.13",
            "v0.20.0-alpha.12",
            "v0.20.0-alpha.11",
            "v0.20.0-alpha.10",
            "v0.20.0-alpha.9",
            "v0.20.0-alpha.8",
            "v0.20.0-alpha.7",
            "v0.20.0-alpha.6",
            "v0.20.0-alpha.5",
            "v0.20.0-alpha.4",
            "v0.20.0-alpha.3",
            "v0.20.0-alpha.2",
            "v0.20.0-alpha.1",
            "v0.19.0-alpha.9",
            "v0.19.0-alpha.8",
            "v0.19.0-alpha.7",
            "v0.19.0-alpha.6",
            "v0.19.0-alpha.5",
            "v0.19.0-alpha.4",
            "v0.19.0-alpha.3",
            "v0.19.0-alpha.2",
            "v0.19.0-alpha.1",
            "v0.18.0-alpha.9",
            "v0.18.0-alpha.8",
            "v0.18.0-alpha.3",
            "v0.18.0-alpha.2",
            "v0.18.0-alpha.1",
            "v0.17.0-alpha.7",
            "v0.17.0-alpha.6",
            "v0.17.0-alpha.5",
            "v0.17.0-alpha.4",
            "v0.16.0-alpha.6",
            "v0.17.0-alpha.3",
            "v0.17.0-alpha.2",
            "v0.17.0-alpha.1",
            "v0.16.0-alpha.5",
            "v0.16.0-alpha.4",
            "v0.16.0-alpha.3",
            "v0.16.0-alpha.1",
            "v0.15.0-alpha.4",
            "v0.15.0-alpha.3",
            "v0.15.0-alpha.2",
            "v0.15.0-alpha.1",
            "v0.14.0-alpha.8",
            "v0.14.0-alpha.7",
            "v0.14.0-alpha.6",
            "v0.14.0-alpha.4",
            "v0.14.0-alpha.3",
            "v0.14.0-alpha.2",
            "v0.14.0-alpha.1",
            "v0.13.0-alpha.10",
            "v0.13.0-alpha.9",
            "v0.13.0-alpha.8",
            "v0.13.0-alpha.7",
            "v0.13.0-alpha.6",
            "v0.13.0-alpha.5",
            "v0.13.0-alpha.3",
            "v0.13.0-alpha.4",
            "v0.13.0-alpha.2",
            "v0.13.0-alpha.1",
            "v0.12.0-alpha.5",
            "v0.12.0-alpha.4",
            "v0.12.0-alpha.3",
            "v0.12.0-alpha.2",
            "v0.12.0-alpha.1",
            "v0.11.1-alpha.5",
            "v0.11.1-alpha.4",
            "v0.11.1-alpha.3",
            "v0.11.1-alpha.2",
            "v0.11.1-alpha.1",
            "v0.11.0-alpha.1",
            "v0.10.1-alpha.1",
            "v0.10.0-alpha.5",
            "v0.10.0-alpha.4",
            "v0.10.0-alpha.3",
            "v0.10.0-alpha.2",
            "v0.9.4-alpha.2",
            "v0.9.4-alpha.1",
            "v0.9.3-alpha.1",
            "v0.9.2-alpha.4",
            "v0.9.2-alpha.3",
            "v0.9.2-alpha.2",
            "v0.9.1-alpha.2",
            "v0.9.1-alpha.1",
            "v0.9.0-alpha.2",
            "v0.9.0-alpha.1",
            "v0.8.1-alpha.4",
            "v0.8.1-alpha.2",
            "v0.8.0-alpha.9",
            "v0.8.0-alpha.5",
            "v0.8.0-alpha.1",
            "v0.7.4-alpha.7",
            "v0.7.4-alpha.4",
            "v0.7.4-alpha.1",
            "v0.7.3-alpha.1",
            "v0.7.2-alpha.1",
            "v0.7.1-alpha.5",
            "v0.7.1-alpha.4",
            "v0.7.0-alpha.82",
            "v0.7.0-alpha.67",
            "v0.7.0-alpha.64",
            "v0.7.0-alpha.60",
            "v0.7.0-alpha.59",
            "v0.7.0-alpha.58",
            "v0.7.0-alpha.57",
            "v0.7.0-alpha.34",
            "v0.7.0-alpha.33",
            "v0.7.0-alpha.30",
            "v0.7.0-alpha.29",
            "v0.7.0-alpha.28",
            "v0.7.0-alpha.24",
            "v0.7.0-alpha.16",
            "v0.7.0-alpha.6",
            "v0.7.0-alpha.5",
            "v0.7.0-alpha.4",
            "v0.7.0-alpha.3",
            "v0.7.0-alpha.2",
            "v0.7.0-alpha.1",
            "v0.7.0-alpha.0",
            "v0.5.0-alpha.33",
            "v0.4.0-alpha.6",
            "v0.4.0-alpha.5",
            "v0.4.0-alpha.2",
            "v0.4.0-alpha.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-41640.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:26.099267369Z",
      "provider": "osv",
      "references": [
        "https://github.com/nocobase/nocobase/releases/tag/v2.0.39",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/41xxx/CVE-2026-41640.json",
        "https://github.com/nocobase/nocobase/security/advisories/GHSA-4948-f92q-f432",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-41640",
        "https://github.com/nocobase/nocobase/commit/202e2b8efe44ba90adbf1087f6f70881ff947604",
        "https://github.com/nocobase/nocobase/pull/9133"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-89"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/41xxx/CVE-2026-41640.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-41640",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 492312,
  "published_at": "2026-05-07T04:09:59.264+00:00"
}