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



CVE-2026-35168

CVE-2026-35168: Authenticated Remote Code Execution via SQL Injection in OpenSTAManager Aggiornamenti Module

Alon Barad
Alon Barad
Software Engineer

Apr 3, 2026·5 min read·170 visits

Executive Summary (TL;DR)

A critical SQL injection flaw in OpenSTAManager < 2.10.2 allows authenticated users to execute arbitrary SQL commands via the database conflict resolution feature. The application temporarily disables foreign key checks and runs user-provided queries directly.

OpenSTAManager versions prior to 2.10.2 contain a high-severity SQL Injection vulnerability in the `Aggiornamenti` module. The application accepts raw SQL statements in JSON format and executes them directly against the database without validation. This flaw enables authenticated attackers to modify database schemas, exfiltrate data, and potentially achieve remote code execution depending on database configuration.

Vulnerability Overview

OpenSTAManager is an open-source management software for technical assistance and invoicing. The application includes an Aggiornamenti (Updates) module designed to handle system upgrades and resolve database schema conflicts. This module contains a critical vulnerability in how it processes administrative actions related to database synchronization.

The specific flaw exists within the op=risolvi-conflitti-database endpoint. This feature is intended to apply structural changes to the database to resolve schema disparities. The implementation fails to enforce boundaries between data and control planes, trusting client-side input to dictate the exact SQL commands executed by the backend.

An authenticated attacker with access to the updates module can exploit this design flaw. By supplying a crafted payload, the attacker dictates the precise queries executed by the application database driver. The vulnerability constitutes an Improper Neutralization of Special Elements used in an SQL Command (CWE-89).

Technical Root Cause Analysis

The vulnerability is localized within the modules/aggiornamenti/actions.php script. When a user sends a POST request with the operation parameter set to risolvi-conflitti-database, the application parses a JSON-encoded array from the queries POST parameter. The application decode this payload into a standard PHP array of strings.

The application iterates over this array and executes each string as a direct SQL query via the $dbo->query() method. The backend applies zero validation, sanitization, or allowlist checks to the strings prior to execution. The parameter is entirely user-controlled and treated as a sequence of trusted instructions.

Furthermore, the application explicitly executes SET FOREIGN_KEY_CHECKS=0 before initiating the query loop. This command disables referential integrity checks across the entire database session. The application executes SET FOREIGN_KEY_CHECKS=1 only after the loop concludes. This state change removes structural protections, allowing attackers to delete or mutate records that would normally be protected by relational constraints.

Code Analysis and Patch Implementation

The vulnerable code path implemented a direct pipeline from the HTTP request to the database driver. The original implementation extracted the queries parameter, decoded it, and passed it to the database object without scrutiny.

$queries = json_decode($_POST['queries'], true);
$dbo->query('SET FOREIGN_KEY_CHECKS=0');
foreach ($queries as $query) {
    try {
        $dbo->query($query);
    } catch (Exception $e) {
        $errors[] = $query.' - '.$e->getMessage();
    }
}
$dbo->query('SET FOREIGN_KEY_CHECKS=1');

The maintainers addressed this vulnerability in commit 43970676bcd6636ff8663652fd82579f737abb74 by introducing a regular expression allowlist. The updated logic validates each query string against predefined safe patterns before execution.

$allowed_patterns = [
    '/^ALTER\s+TABLE\s+`?[\w]+`?\s+(ADD|MODIFY|CHANGE|DROP)\s+(COLUMN\s+)?`?[\w]+`?/i',
    '/^CREATE\s+(UNIQUE\s+)?INDEX\s+`?[\w]+`?\s+ON\s+`?[\w]+`?\s*\(/i',
    '/^DROP\s+INDEX\s+`?[\w]+`?\s+ON\s+`?[\w]+`?$/i',
    '/^UPDATE\s+`?zz_views`?\s+SET\s+/i',
    '/^INSERT\s+INTO\s+`?zz_\w+`?\s*\(/i',
    '/^DELETE\s+FROM\s+`?zz_\w+`?\s+WHERE\s+/i',
];

While the patch significantly reduces the attack surface, the regular expressions validate only the prefix of the queries. The UPDATE and INSERT regex patterns do not inspect the right-hand side of the query. Attackers can still inject subqueries into the SET or VALUES clauses of permitted tables to exfiltrate data.

Exploitation Methodology

Exploitation requires an active user session with authorization to access the Aggiornamenti module. The attacker intercepts or crafts an HTTP POST request directed at the actions.php endpoint. The attacker structures the payload as a JSON array of malicious SQL statements.

The attacker constructs the queries POST variable. An example payload designed to destroy data is queries=["DROP TABLE users;"]. An attacker focused on persistence or privilege escalation creates queries that manipulate authentication tables or configuration parameters.

The application returns database driver errors in the HTTP response if a query fails. The attacker parses these error strings to enumerate database schemas, table names, and column types. This immediate feedback loop facilitates reliable exploitation and lateral movement within the database layer.

Impact Assessment

The vulnerability completely compromises the confidentiality, integrity, and availability of the application database. The attacker controls the specific SQL statements executed, circumventing all application-layer access controls. The severity is reflected in the CVSS v3.1 vector string CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H.

The attacker executes commands in the context of the database user configured for the application. Management applications typically provision database users with extensive privileges, including Data Definition Language (DDL) rights. The attacker leverages these privileges to modify database schemas, alter stored procedures, or extract sensitive financial data.

The application relies on MySQL or MariaDB backends. If the database user retains the FILE privilege, the attacker utilizes SELECT INTO OUTFILE to write arbitrary files to the host filesystem. This technique directly escalates the database compromise into arbitrary remote code execution on the application server.

Remediation and Defensive Posture

Organizations utilizing OpenSTAManager must upgrade the application to version 2.10.2 or later immediately. The official release integrates the regex-based allowlist, preventing arbitrary query execution. System administrators should verify the deployed version via the application dashboard.

Administrators must enforce the principle of least privilege at the database layer. The application database user must not possess global administrative privileges or the FILE privilege. Revoking DROP and ALTER permissions during normal operations limits the blast radius of similar vulnerabilities.

Security teams should deploy Web Application Firewall (WAF) rules targeting the specific API endpoint. WAF implementations should inspect the queries parameter within POST requests directed at modules/aggiornamenti/actions.php. Rules detecting JSON-encoded SQL keywords provide an additional defensive layer against exploitation attempts.

Official Patches

devcode-itOfficial fix commit implementing query validation
devcode-itRelease Notes for version 2.10.2

Fix Analysis (1)

Technical Appendix

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

Affected Systems

OpenSTAManager Aggiornamenti Module (modules/aggiornamenti/actions.php)Underlying MySQL/MariaDB Database

Affected Versions Detail

Product
Affected Versions
Fixed Version
openstamanager
devcode-it
< 2.10.22.10.2
AttributeDetail
CWE IDCWE-89
Attack VectorNetwork
CVSS v3.18.8 (High)
Privileges RequiredLow (Authenticated)
ImpactHigh Confidentiality, Integrity, Availability
Exploit StatusProof of Concept Available

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-89
Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

The software constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command.

Vulnerability Timeline

Fix commit pushed to GitHub repository.
2026-03-05
CVE-2026-35168 published in NVD and CVE.org.
2026-04-02
GitHub Advisory (GHSA-2fr7-cc4f-wh98) released.
2026-04-02

References & Sources

  • [1]NVD Vulnerability Detail
  • [2]GitHub Security Advisory GHSA-2fr7-cc4f-wh98
  • [3]Fix Commit
  • [4]v2.10.2 Release Notes

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 3 hours ago•GHSA-C9XM-49CP-XCR9
6.3

GHSA-C9XM-49CP-XCR9: Server-Side Request Forgery in rmcp OAuth Client

A Server-Side Request Forgery (SSRF) vulnerability exists in the rmcp OAuth client, which is part of the Model Context Protocol (MCP) Rust SDK. The vulnerability arises from insecure processing of the resource_metadata parameter in WWW-Authenticate headers returned by a malicious or compromised MCP server. The client parses and fetches absolute URLs from this header without validation of scheme, origin, or network routing, allowing remote attackers to initiate HTTP GET requests to local network interfaces, RFC 1918 private subnets, or cloud metadata endpoints.

Alon Barad
Alon Barad
4 views•6 min read
•about 8 hours ago•CVE-2026-92945
4.2

CVE-2026-92945: Sandbox Escape and Module Allowlist Bypass via Path Prefix Matching in vm2

A module allowlist bypass vulnerability (CVE-2026-92945 / GHSA-7q3f-wx44-378m) was identified in the vm2 sandboxing library prior to version 3.11.7. This flaw permits unauthenticated or untrusted code running within the sandbox environment to bypass explicit module restrictions. When the transitive resolution option is disabled, the system fails to validate file system path boundaries, allowing prefix-sharing sibling directories to be resolved and loaded, thereby escaping intended sandbox restrictions.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 9 hours ago•CVE-2026-92941
10.0

CVE-2026-92941: Sandbox Escape and Process-Wide TLS Trust Store Manipulation in vm2

CVE-2026-92941 is a critical sandbox-escape and trust-manipulation vulnerability in the vm2 library (versions 3.11.3 to 3.11.6). This security flaw allows untrusted code executing within a NodeVM sandbox environment to compromise the global TLS trust store of the host Node.js process. By leveraging a design flaw where the host's native 'tls.setDefaultCACertificates' can be executed via a proxy wrapper, combined with a bridge unwrapping bypass in the 'url' module, an attacker can modify the process-wide default root Certificate Authorities. Consequently, all subsequent outbound TLS/HTTPS clients running on the host thread are forced to trust attacker-signed certificates, facilitating transparent Man-in-the-Middle (MitM) attacks. The vulnerability was resolved in version 3.11.7 of vm2 by introducing built-in member-level sanitization before applying read-only proxy wrappers.

Amit Schendel
Amit Schendel
5 views•10 min read
•about 10 hours ago•CVE-2026-92944
9.8

CVE-2026-92944: Sandbox Escape in vm2 via Stale V8 PromiseThenLookupChain Protector

A critical engine-level reachability failure in Node.js 26 running V8 14.6 allows attackers to escape the vm2 sandbox environment. When consecutive prototype properties are modified using sequential assignments, a V8 optimization bug fails to invalidate the PromiseThenLookupChain protector. By calling Promise.prototype.finally, the attacker bypasses the vm2 wrappers, hijacks the promise reaction using a custom constructor, triggers a calibrated stack overflow to capture a host-realm RangeError, and executes arbitrary shell commands on the host.

Alon Barad
Alon Barad
7 views•8 min read
•about 11 hours ago•CVE-2026-92939
9.9

CVE-2026-92939: Critical Sandbox Escape via Host Crypto setEngine Native Code Execution in vm2

A critical sandbox escape vulnerability in the vm2 library allows sandboxed JavaScript code to bypass containment and execute arbitrary native code on the host process. This occurs when the host's builtin crypto module is exposed to the NodeVM environment. Although vm2 implements a read-only proxy layer to restrict direct modifications to host properties, it does not prevent invocation of host-level functions. By calling the crypto.setEngine API with a path to a malicious native library on disk, an attacker can trigger OpenSSL's dynamic module loader. The host's operating system loader immediately runs the dynamic library's initializers/constructors before verifying engine compatibility, leading to remote code execution in the context of the host process.

Amit Schendel
Amit Schendel
6 views•5 min read
•about 12 hours ago•CVE-2026-92938
9.9

CVE-2026-92938: Remote Code Execution in vm2 via node:sqlite DatabaseSync Sandbox Escape

CVE-2026-92938 is a critical sandbox escape vulnerability in the vm2 library (versions 3.11.3 through 3.11.6) that allows arbitrary native code execution on the host when the node:sqlite built-in module is loaded inside a sandboxed NodeVM environment.

Amit Schendel
Amit Schendel
8 views•8 min read