DbGate w wersjach 7.1.8 i wcześniejszych umożliwia nieautoryzowane zdalne wykonanie kodu (RCE) poprzez wstrzyknięcie kodu w parametrze `functionName` endpointu `POST /runners/start`. Podatność nie wymaga żadnego uwierzytelnienia, a jej krytyczność (CVSS 10.0) czyni ją natychmiastowym zagrożeniem dla każdej wystawionej na sieć instancji.
▸ Pokaż oryginał (EN)
DbGate is cross-platform database manager. In versions 7.1.8 and prior, DbGate's JSON script runner (`POST /runners/start`) allows remote code execution via code injection in the `functionName` parameter of JSON script `assign` commands. The `functionName` value is interpolated directly into dynamically generated JavaScript source code via string concatenation. The generated code is then executed in a forked Node.js child process. Version 7.1.9 contains a patch.
Endpoint `POST /runners/start` obsługuje wykonywanie skryptów JSON, w tym poleceń typu `assign`. Wartość parametru `functionName` jest bezpośrednio wstrzykiwana do dynamicznie generowanego kodu JavaScript poprzez konkatenację ciągów znaków — bez jakiejkolwiek walidacji ani sanityzacji danych wejściowych (CWE-20, CWE-94). Tak spreparowany kod jest następnie wykonywany w procesie potomnym Node.js (forked child process). Atakujący może w ten sposób przemycić dowolny kod JavaScript, który zostanie wykonany po stronie serwera.
Atakujący bez żadnego uwierzytelnienia może wykonać dowolny kod na serwerze hostującym DbGate, uzyskując pełną kontrolę nad systemem — w tym dostęp do danych, możliwość modyfikacji plików, a także dalszy lateral movement w sieci wewnętrznej.
Należy niezwłocznie zaktualizować DbGate do wersji 7.1.9, która zawiera patch eliminujący podatność. Do czasu aktualizacji należy ograniczyć dostęp sieciowy do endpointu `POST /runners/start` na poziomie firewall lub serwera proxy, blokując dostęp z niezaufanych źródeł.
DbGate w wersji 7.1.8 oraz wszystkich wcześniejszych wersjach (wszystkie platformy obsługiwane przez DbGate).
W referencjach dostępny jest publiczny szablon Nuclei (runZeroInc/nuclei-templates) umożliwiający automatyczne wykrycie i potwierdzenie podatności. Patch dostępny w wersji 7.1.9 opublikowanej na GitHub.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H