CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-48QW-824M-86PR

GHSA-48QW-824M-86PR: Privilege Escalation and Sandbox Escape in ArcadeDB Server

Alon Barad
Alon Barad
Software Engineer

Jul 17, 2026·6 min read·15 visits

Executive Summary (TL;DR)

ArcadeDB Server before 26.7.1 allows authenticated users with read-only privileges to escape the GraalVM scripting sandbox using reflection on bound Java objects, resulting in arbitrary host filesystem read access.

A high-severity privilege escalation and sandbox escape vulnerability exists in ArcadeDB Server prior to version 26.7.1. This flaw permits an authenticated user with read-only privileges to execute arbitrary JVM code in a sandboxed JavaScript context via the API command endpoint. By utilizing reflection on bound Java objects, an attacker can bypass the GraalVM guest environment's whitelist, access the Java ClassLoader, and perform arbitrary file reads on the host filesystem.

Vulnerability Overview

ArcadeDB Server before version 26.7.1 contains an improper privilege management vulnerability that permits authenticated database users with minimal permissions to escape the execution sandbox. The vulnerability resides within the polyglot scripting endpoint, which provides support for multi-language query execution including JavaScript via GraalVM. Under default configurations, the API endpoint fails to validate whether the executing security context possesses administrative authority.

By leveraging this lack of access control, an authenticated attacker with a read-only role can submit arbitrary JavaScript commands. The script execution environment utilizes a sandboxed GraalVM context designed to restrict access to underlying JVM features and host files. However, because a Java database reference is exposed directly to the guest context, the guest environment can traverse reflective boundaries to escape these restrictions.

This security bypass permits the attacker to load non-whitelisted Java classes, bypass filesystem access restrictions, and read arbitrary files from the host operating system. The flaw does not require administrative privileges or complex configurations, making exploitation highly reliable once an attacker gains basic database access.

Root Cause Analysis

The vulnerability stems from two distinct logical flaws in the application design. The first flaw is the complete absence of authorization checks within the PolyglotQueryEngine command processing pathway. In ArcadeDB, standard SQL and Cypher operations are strictly restricted according to role-based access control policies. However, the system did not enforce equivalent permission checks when processing scripting commands through the /api/v1/command/{database} endpoint.

The second flaw is an insufficient host-access configuration in the GraalVM guest engine. To facilitate query operations, the application binds a live Java database instance into the JavaScript context. The sandbox implementation restricts standard class lookups by enforcing an allowedPackages whitelist, which prevents scripts from directly importing packages like java.io.

Despite this restriction, the default GraalVM host-access policy (HostAccess.ALL) allowed the guest environment to perform reflection on any public methods of the bound database object. By invoking database.getClass().getClassLoader(), a script could obtain the JVM's ClassLoader object. Since the ClassLoader itself is outside the scope of the package whitelist filters, the script could use it to load arbitrary Java classes such as java.io.File and java.util.Scanner, effectively escaping the sandbox.

Code Analysis & Patch Inspection

To resolve the privilege escalation, the maintainers implemented authorization enforcement on the scripting engine and restricted GraalVM host access. The patch gates the scripting operations under PolyglotQueryEngine behind the UPDATE_SECURITY role requirement. The check executes synchronously within the calling thread, blocking low-privileged database readers from accessing the scripting engine.

// Patched PolyglotQueryEngine.java
private void checkScriptingPermissions() {
  // Restricts execution to users with UPDATE_SECURITY permissions
  database.checkPermissionsOnDatabase(SecurityDatabaseUser.DATABASE_ACCESS.UPDATE_SECURITY);
}

Additionally, the patch replaces the permissive HostAccess.ALL configuration with a customized sandbox policy. The new policy, defined as SANDBOXED_HOST_ACCESS, explicitly denies guest scripts from accessing the reflection API, the Class representation, and ClassLoader objects.

// Patched GraalPolyglotEngine.java
private static final HostAccess SANDBOXED_HOST_ACCESS = HostAccess.newBuilder(HostAccess.ALL)
    .denyAccess(Class.class)
    .denyAccess(ClassLoader.class)
    .denyAccess(java.lang.reflect.AccessibleObject.class)
    .denyAccess(java.lang.reflect.Member.class)
    .build();

By denying access to these critical Java classes, the reflection chain is severed at the source. Any attempt by a script to call .getClass() or retrieve a ClassLoader on a bound host object now results in an immediate security exception, preventing the guest context from loading arbitrary external classes.

Exploitation Method

Exploitation of this vulnerability requires network access to the ArcadeDB HTTP API and valid credentials for a database reader. An attacker submits a POST request to the /api/v1/command/{database} endpoint, specifying js as the query language. The command string contains the payload designed to escape the package whitelist using reflective access on the bound database instance.

The exploit sequence starts by obtaining the class loader via the bound database instance. The attacker uses the class loader to dynamically resolve the java.io.File and java.util.Scanner classes. These classes are then instantiated reflectively to bypass the standard import restrictions.

{
  "language": "js",
  "command": "var cl = database.getClass().getClassLoader(); var FileClass = cl.loadClass('java.io.File'); var ScannerClass = cl.loadClass('java.util.Scanner'); var fileObj = FileClass.getConstructor(cl.loadClass('java.lang.String')).newInstance('/etc/passwd'); var scannerObj = ScannerClass.getConstructor(cl.loadClass('java.io.File')).newInstance(fileObj); scannerObj.useDelimiter('\\\\A'); var content = scannerObj.hasNext() ? scannerObj.next() : ''; content;"
}

The scanner instance reads the entire contents of the target file, which are returned in the HTTP response body. Because the execution runs within the security context of the ArcadeDB server process, the attacker can read any file that the application process has permissions to access.

Impact Assessment

The vulnerability represents a breakdown of security boundaries, transitioning an attacker from a restricted database reader to an entity capable of reading host files. This is reflected in the CVSS v3.1 score of 7.7, specifically highlighted by the Scope change metric (S:C). The escape from the GraalVM guest environment directly compromises the security of the underlying host operating system.

An attacker can exploit this access to read sensitive configuration files, database credentials, environment variables, or system files such as /etc/passwd. In cloud environments, this may expose metadata service tokens, potentially allowing broader lateral movement.

Although the default GraalVM configuration denies process creation, preventing direct remote code execution (RCE) via system commands, the ability to read arbitrary files remains a severe threat. Exfiltrated credentials can lead to full database compromise or host takeovers.

Remediation & Hardening Guidance

The primary remediation path is upgrading the ArcadeDB Server installation to version 26.7.1 or later. This release incorporates the administrative privilege validation and the hardened SANDBOXED_HOST_ACCESS configuration, which successfully prevents both the unauthorized command access and the reflection bypass.

If upgrading is not immediately feasible, organizations must restrict network access to the database HTTP port (default 2480) and the HA clustering port (default 2481). Implement firewall rules or security groups to ensure only trusted application servers can interact with these interfaces.

Additionally, review all database user roles and revoke command privileges for any non-essential accounts. Treat all users with query permissions as potentially fully trusted until the upgrade is completed, as the application cannot enforce effective database isolation boundaries under the vulnerable versions.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.7/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

Affected Systems

ArcadeDB Server

Affected Versions Detail

Product
Affected Versions
Fixed Version
ArcadeDB Server
ArcadeData
< 26.7.126.7.1
AttributeDetail
CWE IDCWE-269 / CWE-863
Attack VectorNetwork
CVSS7.7
EPSSNot Tracked
ImpactArbitrary Host File Read / Sandbox Escape
Exploit StatusProof-of-Concept
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1068Exploitation for Privilege Escalation
Privilege Escalation
T1548Abuse Elevation Control Mechanism
Privilege Escalation
CWE-269
Improper Privilege Management

The software does not properly restrict privileges, allowing an actor to obtain access to restricted actions or resources beyond their assigned capabilities.

Known Exploits & Detection

GitHubProof of concept exploit and advisory detail showcasing ClassLoader extraction and file read.

Vulnerability Timeline

Fix commit developed and merged into the main repository branch
2026-06-30
Security Advisory GHSA-48QW-824M-86PR formally published
2026-07-16
ArcadeDB version 26.7.1 released containing the security patches
2026-07-16

References & Sources

  • [1]GitHub Advisory Database Entry
  • [2]ArcadeDB Security Advisory
  • [3]Fix Commit
  • [4]ArcadeDB Release v26.7.1

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 11 hours ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
7 views•5 min read
•about 12 hours ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 12 hours ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 14 hours ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
9 views•6 min read
•about 15 hours ago•CVE-2026-70183
7.5

CVE-2026-70183: Elevation of Privilege in ASP.NET Core and Visual Studio via Concurrent Race Condition

An elevation of privilege vulnerability exists in ASP.NET Core and Microsoft Visual Studio due to improper synchronization during concurrent thread execution. Authenticated remote attackers with low privileges can exploit a timing window to manipulate shared resources and assume higher-level execution contexts.

Alon Barad
Alon Barad
8 views•5 min read
•4 days ago•CVE-2026-107844
5.3

CVE-2026-107844: Path Traversal Vulnerability in Contao ImagesController

A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.

Amit Schendel
Amit Schendel
16 views•5 min read