Średnia

NocoDB: Postgres SQL Injection in Formula `ARRAYSORT`

  • Ujawniono: 05.06.2026
  • Aktualizacja: 11.10.2026 10:22

Summary

An authenticated user with columnAdd permission on a Postgres-backed base can inject arbitrary SQL into the formula engine via the optional direction argument of ARRAYSORT(...). The value is unrestricted by formula validation and embedded into a knex.raw ORDER BY clause, executing during column creation and on every subsequent record read of the formula column.

Details

The vulnerability is specific to the Postgres mapping for ARRAYSORT in packages/nocodb/src/db/functionMappings/pg.ts. Two factors combine:

  1. ARRAYSORT declares only argument count, not validation.args.type, so validate-extract-tree.ts does not enforce an allowlist on the second argument.
  2. The Postgres mapping then passes the attacker-controlled value through sanitize(knex.raw(...)) into a raw SQL fragment:
ts
const direction = pt.arguments[1]
  ? sanitize(
      knex.raw(pt.arguments[1]?.value ?? (await fn(pt.arguments[1])).builder),
    )
  : knex.raw('asc');

return {
  builder: knex.raw(`ARRAY(SELECT UNNEST(??) ORDER BY 1 ??)`, [source, direction]),
};

sanitize() in sqlSanitize.ts only escapes ? placeholder characters; it does not validate SQL syntax. A payload such as "desc, (SELECT COUNT(*) FROM generate_series(1,30000000))" is accepted, persisted, and re-executed on every read of the formula column.

Impact

  • Authenticated SQL injection against Postgres-backed bases.
  • Requires columnAdd permission (creator/owner-level).
  • Proven impact: attacker-controlled heavy SQL causing multi-second query stalls (DoS).
  • Potentially extendable to broader SQL injection outcomes depending on database permissions and deployment hardening.
  • Limited to Postgres backends.

Credit

This issue was reported by @leduckhuong.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm nocodb < 2026.04.1 2026.04.1

Odnośniki

Ocena CVSS 6/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:H
Słabość (CWE)
CWE-89
Platforma
npm
Paczka
nocodb
Ujawniono
05.06.2026
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-cxv7-gmmp-228p - CC BY 4.0

Historia podatności: nocodb

Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (54) w archiwum
Wszystkich wpisów
54
Pierwsza → ostatnia
06.2022 06.2026
Bez poprawki
13
Wykorzystywana w atakach
0

Rozkład istotności

  • Wysoka 7
  • Średnia 41
  • Niska 6

Ujawnienia w latach

  1. 2022: 5
  2. 2023: 2
  3. 2024: 3
  4. 2025: 1
  5. 2026: 43
Istotność:
  1. Wysoka CVE-2026-47387 < 2026.05.1 2026.05.1
  2. Wysoka CVE-2026-47383 < 2026.05.1 2026.05.1
  3. NocoDB: Postgres SQL Injection in Formula `ARRAYSORT` ten wpis
    Średnia · 6.0 CVE-2026-47375 < 2026.04.1 2026.04.1
  4. Wysoka CVE-2026-24769 < 0.301.0 0.301.0
  5. Wysoka · 7.3 CVE-2023-49781 < 0.202.9 0.202.9
  6. Wysoka · 8.8 CVE-2022-2064 < 0.91.9 0.91.9
  7. Wysoka · 8.8 CVE-2022-2063 < 0.91.8 0.91.8
  8. Wysoka · 7.5 CVE-2022-2062 < 0.91.7 0.91.7

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.