Summary
ArcadeDB: Scripting authorization gate (GHSA-48qw-824m-86pr) bypassed via SQL DEFINE FUNCTION ... LANGUAGE js
Advisory details
The GHSA-48qw-824m-86pr hardening added a checkPermissionsOnDatabase(UPDATE_SECURITY) gate on the polyglot engine (PolyglotQueryEngine.java:112-114,126,176,199), but only there. The SQL route to JavaScript never touches it: DefineFunctionStatement.executeSimple (DefineFunctionStatement.java:37-100), LocalSchema.registerFunctionLibrary, and SQLQueryEngine library-function invocation (SQLQueryEngine.java:198-224) do no scripting-permission check.
Exploit: any user authorized for the DB (including a read-only role) runs POST /api/v1/command/
Fix: gate DefineFunctionStatement.executeSimple, the SQLQueryEngine library-function wrapper (to also cover pre-existing libraries), and DeleteFunctionStatement with UPDATE_SECURITY for js/polyglot languages. Centralize as one assertCanExecuteUserCode(database) invoked by every code-execution surface. Also set IOAccess.NONE / PolyglotAccess.NONE on the Context (GraalPolyglotEngine.java:86,91).
References
Related vulnerabilities
All Supply chain →- MEDIUMCVE-2026-55558
aiosmtplib: STARTTLS response injection
- MEDIUMCVE-2026-54543
Froxlor DomainZones.add allows DNS zone-file RR injection via record/type fields
- HIGHGHSA-c7hr-448w-65px
MeshCentral has unsanitized data fields
- HIGHGHSA-jm78-9fvv-mhgr
GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling forged core.sshCommand/hooksPath (RCE)
- HIGHCVE-2026-71320
Nuxt: Server-Side Remote Code Execution via Runtime Template Injection in Nuxt Server Island Props
- MEDIUMCVE-2026-16729
undici vulnerable to cookie attribute injection via unsanitized domain and unparsed setCookie fields