Apr 3, 2026·5 min read·122 visits
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.
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).
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.
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 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.
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.
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.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
openstamanager devcode-it | < 2.10.2 | 2.10.2 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-89 |
| Attack Vector | Network |
| CVSS v3.1 | 8.8 (High) |
| Privileges Required | Low (Authenticated) |
| Impact | High Confidentiality, Integrity, Availability |
| Exploit Status | Proof of Concept Available |
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.
An authenticated administrator with privileges to manage admin accounts (such as change_serversettings) can execute arbitrary SQL commands via a second-order SQL injection vulnerability. The flaw resides in Froxlor's administrative API endpoints, specifically during the handling of IP address mapping parameters which are stored as serialized arrays and later interpolated without sanitization into active database queries. This vulnerability allows high-privileged administrative attackers to compromise the database. By injecting a payload into administrative profile metadata, an attacker can extract sensitive credentials, manipulate backend settings, or potentially disrupt database integrity. The vulnerability affects all versions of Froxlor prior to 2.3.8.
CVE-2026-54543 is a DNS Resource Record (RR) Injection vulnerability in Froxlor, an open-source server administration control panel. Prior to version 2.3.8, the DomainZones.add API command failed to perform strict sanitization and validation on the user-controlled record (label) and type parameters before serializing them into BIND-compatible zone files. An authenticated customer with DNS zone management permissions can inject control characters, breaking out of the original record context to define unauthorized resource records within managed zones.
CVE-2026-42533 is a critical security vulnerability discovered in NGINX Open Source, NGINX Plus, NGINX Ingress Controller, and related products, referred to as the 'Two-Pass Capture-Clobbering' bug. The flaw is situated within NGINX's internal evaluation engine when handling complex variables, exposing a heap-based buffer overflow and information leak when a configuration chains regular expression-based map directives with numbered capture groups. An unauthenticated remote attacker can exploit this weakness by transmitting crafted HTTP requests to trigger remote code execution or defeat ASLR.
Froxlor prior to version 2.3.8 contains a high-severity architectural flaw where the standalone lib/ajax.php entry point bypasses the centralized request validation in lib/init.php. Unauthenticated remote attackers can leverage Cross-Site Request Forgery (CSRF) to induce authenticated administrators to submit forged requests that modify API key whitelists and expiration dates, potentially yielding persistent, out-of-band administrative control.
An insecure data retrieval flaw in the Froxlor server administration panel API allows authenticated remote attackers to retrieve unredacted bcrypt password hashes and Base32-encoded Time-Based One-Time Password (TOTP) seeds. Affected endpoints include several 'get' and 'listing' handlers for customers, administrators, and FTP accounts. Utilizing these leaked parameters, attackers can crack the password hashes offline and concurrently generate valid second-factor authentication codes to completely bypass access controls.
CVE-2026-70666 is a critical Server-Side Request Forgery (SSRF) vulnerability in Netflix Lemur's ACME certificate management integration. Prior to version 1.9.3, the system allowed authority-role users to bypass initial ACME URL allowlist validations when updating an existing authority. Additionally, the underlying ACME network client blindly parsed and connected to dynamic endpoint URLs supplied in JSON responses from the configured ACME directory, allowing attackers to route arbitrary JWS-signed requests to internal services or cloud metadata endpoints.