Executive brief
ArcadeDB is a multi-model database system. Users with read-only database access were able to execute JavaScript code and read arbitrary files from the host system outside the database scope due to missing authorization checks and a sandbox bypass. This could allow a read-only database user to exfiltrate sensitive files and data from the host system.
Technical details
ArcadeDB's polyglot query engine (PolyglotQueryEngine.command, PolyglotQueryEngine.analyze, and PolyglotQueryEngine.registerFunctions) failed to enforce database-administrator authorization on the POST /api/v1/command/{database} endpoint when language is set to JavaScript. Additionally, the GraalVM polyglot engine's allowedPackages whitelist could be bypassed via reflection—an attacker could call database.getClass().getClassLoader().loadClass() to load arbitrary host classes. These cooperating defects allowed a read-only database user to execute arbitrary JavaScript and read arbitrary files outside the database scope. OS command execution is blocked by separate restrictions. The vulnerability was fixed in version 26.7.1 by requiring UPDATE_SECURITY authorization on polyglot operations and hardening the GraalVM sandbox to deny Class/ClassLoader/java.lang.reflect member access.
Affected products
- ArcadeData ArcadeDB prior to 26.7.1
Timeline
- 2026-09-15: disclosed: Published on NVD
- 2026-07-01: patched: Fixed in version 26.7.1