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-27461

Pimcore SQL Injection: When 'Enterprise' Logic Meets 'Select * From Disaster'

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 25, 2026·6 min read·80 visits

Executive Summary (TL;DR)

Pimcore versions prior to 12.3.3 contain a classic SQL Injection flaw in the `Dependency Dao` class. Authenticated admins can exploit the `filter` parameter to dump the entire database, including password hashes, despite the application using an ORM.

A critical SQL Injection vulnerability in the Pimcore platform allows authenticated administrators to execute arbitrary SQL commands via the dependency listing feature. By manipulating JSON filter parameters, attackers can bypass sanitization and inject malicious payloads directly into `RLIKE` clauses.

The Hook: Enterprise Complexity, Enterprise Bugs

Pimcore is one of those massive, 'do-it-all' platforms. It handles Product Information Management (PIM), Digital Asset Management (DAM), and Customer Data Platforms (CDP). It’s the digital equivalent of a Swiss Army knife that also tries to be a toaster. When software tries to do everything, the attack surface expands exponentially.

In this episode of 'Why is my database leaking?', we're looking at a feature designed to help administrators track dependencies. For example, if you want to delete an image, Pimcore checks if that image is used in a product page. Useful? Absolutely. Safe? Well, usually.

But in CVE-2026-27461, this innocent dependency checker becomes a gateway to the database's soul. The vulnerability lies deep within the Data Access Object (DAO) layer—specifically where the application tries to filter these dependencies using regular expressions. Spoiler alert: mixing SQL, Regex, and user input without a condom (parameterization) is a bad idea.

The Flaw: Concatenation in the Year of Our Lord 2026

You would think that by 2026, direct string concatenation in SQL queries would be an extinct species, like the Dodo or a printer that works on the first try. Unfortunately, it’s alive and well in models/Dependency/Dao.php.

The flaw occurs in two methods: getFilterRequiresByPath and getFilterRequiredByPath. These functions accept a $value parameter, which comes from a JSON-decoded query string sent by the frontend. The developer intended to let users filter the list of dependencies using a search string.

Instead of passing this search string to a prepared statement, the code takes the raw value and drops it directly into a SQL RLIKE clause. The RLIKE operator in MySQL/MariaDB checks if a string matches a regular expression. The logic looked something like this:

... AND column RLIKE '" . $value . "'

See the problem? If $value contains a single quote, the string terminates, and the SQL parser starts interpreting the rest of the input as commands. It’s the oldest trick in the book, and it still works because developers often forget that 'Search Filters' are just as dangerous as 'Login Forms'.

The Code: The Smoking Gun

Let's look at the crime scene. In the vulnerable version of models/Dependency/Dao.php, the query construction was reckless. Here is the simplified vulnerable code:

// VULNERABLE CODE
$query = "SELECT ... FROM dependencies d ...
          WHERE ... AND LOWER(CONCAT(o.path, o.key)) RLIKE '" . $value . "'";
 
// Execution (No parameter binding for $value)
$this->db->fetchAllAssociative($query);

There is zero sanitation here. If $value is admin, the query is safe. If $value is admin' OR '1'='1, the query becomes a logic bomb.

The fix, introduced in version 12.3.3, is a textbook example of how to do it right. The developers switched to Doctrine DBAL's prepared statements:

// PATCHED CODE
$query = "SELECT ... FROM dependencies d ...
          WHERE ... AND LOWER(CONCAT(o.path, o.key)) RLIKE :value";
 
$params = [
    'value' => preg_quote((string) $value) // Double protection!
];
 
$types = ['value' => ParameterType::STRING];
 
$this->db->fetchAllAssociative($query, $params, $types);

Notice two things here. First, the use of :value placeholder ensures the database driver handles the escaping. Second, they wrapped the value in preg_quote(). This is clever—since RLIKE expects a regex, a malicious user could potentially inject a "Regular Expression Denial of Service" (ReDoS) payload even if they couldn't inject SQL. By quoting the regex characters, they neutralized both the SQL injection and the regex complexity attack.

The Exploit: Dumping the Database

Now for the fun part. How do we weaponize this? The vulnerability requires authentication, specifically as an administrator with access to the dependency tab. While this sounds like a high barrier, consider the insider threat or a scenario where an attacker compromises a low-level admin account via XSS or phishing.

The Setup:

  1. Log in as an admin.
  2. Open your browser's DevTools Network tab.
  3. Navigate to an object and click the 'Dependencies' tab.
  4. Look for a request with a filter parameter.

The Attack: The filter parameter is a JSON object. It looks like this: {"value": "search_term"}. We can intercept this request and inject our SQL payload.

Payload Construction: We need to break out of the single quotes inside the RLIKE.

{
  "value": "') OR (SELECT SLEEP(5)) -- "
}

When the backend processes this, the SQL becomes:

... RLIKE '') OR (SELECT SLEEP(5)) -- '

If the server hangs for 5 seconds, we have confirmed blind SQL injection. From here, we can use tools like sqlmap or manual enumeration to extract the users table. Since we are already an admin, why do we care? Because we might be a restricted admin, and this vulnerability allows us to dump the hashes of the super admins, or access tables containing customer PII that our specific user role shouldn't see.

The Impact: Why 'Admin Only' Still Hurts

A common dismissal for vulnerabilities like this is, "But you need admin access!" This is true, and it does lower the CVSS score (hence the 6.9 Medium). However, in the real world, the perimeter is often soft.

If an attacker gains initial access to the Pimcore backend—perhaps through a weak password or a leaked session cookie—they are usually confined to specific permissions. Pimcore has a granular permission system (Object-level security). This SQL Injection blows that wide open.

With this vulnerability, a user who is only supposed to edit "Blog Posts" can execute SELECT * FROM payment_gateways or SELECT * FROM users. It is a vertical privilege escalation from "Content Editor" to "Database God." Furthermore, if this Pimcore instance is connected to other internal systems via database links, the attacker could pivot laterally across the infrastructure.

The Fix: Parameterize All The Things

The remediation is straightforward: Update Pimcore to version 12.3.3 or later. The patch effectively closes the hole by enforcing strict typing and parameter binding.

If you cannot upgrade immediately (perhaps you're stuck on a legacy 11.x build), you can manually patch models/Dependency/Dao.php. You must replace the string concatenation with Doctrine's placeholders.

Developer Takeaway: Never trust input, even if it comes from an 'Admin'. Just because a user is authenticated doesn't mean they aren't malicious (or compromised). Also, treat RLIKE, REGEXP, and ORDER BY clauses with extreme suspicion—they are often overlooked by automatic scanners and ORMs, making them prime targets for manual code review.

Official Patches

PimcorePull Request #18991 fixing the vulnerability

Fix Analysis (1)

Technical Appendix

CVSS Score
6.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
EPSS Probability
0.02%
Top 94% most exploited

Affected Systems

Pimcore CMSPimcore DAMPimcore PIM

Affected Versions Detail

Product
Affected Versions
Fixed Version
Pimcore
Pimcore
<= 11.5.14.112.3.3
Pimcore
Pimcore
>= 12.0.0, < 12.3.312.3.3
AttributeDetail
CWE IDCWE-89 (SQL Injection)
CVSS v4.06.9 (Medium)
Attack VectorNetwork (Authenticated Admin)
Vulnerable ParameterJSON 'filter' -> 'value'
SinkSQL RLIKE clause
Exploit MaturityProof of Concept (High Probability)

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1059.006Command and Scripting Interpreter: Python
Execution
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 when it is sent to a downstream component.

Known Exploits & Detection

Manual AnalysisExploit derived from patch diff showing lack of sanitization in RLIKE clause.

Vulnerability Timeline

Patch committed to GitHub
2026-02-19
GHSA Advisory Published
2026-02-24
CVE ID Assigned
2026-02-24

References & Sources

  • [1]GitHub Security Advisory
  • [2]NVD Entry

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

•26 minutes ago•CVE-2026-105749
6.5

CVE-2026-105749: Unbounded Table Attributes in Docling Backends Leads to Resource Exhaustion

An uncontrolled resource consumption vulnerability exists in the Docling document conversion library. Maliciously structured HTML, JATS, ODS, or BoxNote inputs containing table cells with excessively large 'rowspan' or 'colspan' attribute values trigger algorithmic complexity conditions. This allows unauthenticated remote attackers to initiate resource exhaustion states, crashing or hanging the target document processing pipeline while bypassing configured timeouts.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 1 hour ago•CVE-2026-105748
4.3

CVE-2026-105748: Local File Inclusion and Arbitrary File Disclosure in Docling Document Parser

A Local File Inclusion (LFI) and Arbitrary File Disclosure vulnerability exists in Docling and Docling Slim versions >= 2.16.0 up to 2.131.0. When parsing serialized DoclingDocument structures using the JSON input format, the backend fails to restrict image URI schemes, allowing remote attackers to retrieve local files and verify path existence on the host system during embedded document export.

Amit Schendel
Amit Schendel
5 views•5 min read
•about 2 hours ago•CVE-2026-105744
7.5

CVE-2026-105744: Arbitrary File Read and Remote Code Execution in Docling Tectonic Engine

Docling, a tool for parsing and processing diverse document formats, is vulnerable to arbitrary file read, arbitrary file write, and potential remote code execution (RCE) in versions 2.94.0 through 2.131.0. The vulnerability occurs when applications configure Docling to use the Tectonic engine for rendering TikZ diagrams into images. Because the compilation did not restrict hazardous TeX primitives or sandbox the environment, an attacker can supply crafted documents containing malicious TikZ definitions to access or modify local files and execute arbitrary commands under the privileges of the processing application.

Amit Schendel
Amit Schendel
7 views•7 min read
•about 3 hours ago•CVE-2026-105743
4.0

CVE-2026-105743: Server-Side Request Forgery Guard Bypass in Docling Document Conversion Engine

An SSRF guard bypass vulnerability in the Docling document conversion engine allows unauthenticated attackers to bypass internal IP access controls. The vulnerability exists due to a DNS rebinding Time-of-Check Time-of-Use (TOCTOU) condition, URL authority parsing inconsistencies, and unvalidated network requests triggered during headless browser page rendering.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 4 hours ago•CVE-2026-105742
3.7

CVE-2026-105742: Sensitive Custom Header Leakage in Docling Image Resource Loader

A technical analysis of CVE-2026-105742 (GHSA-p3fw-7699-7926), a sensitive information disclosure vulnerability in the Docling document processing library. Vulnerable versions of Docling indiscriminately forward custom HTTP headers, such as authentication tokens, to arbitrary third-party origins and during cross-origin redirects while fetching remote image assets from untrusted HTML and EPUB documents.

Alon Barad
Alon Barad
6 views•6 min read
•about 5 hours ago•CVE-2026-106121
4.9

CVE-2026-106121: Denial of Service via Infinite Loop in RabbitMQ Java Client JSON Parser

CVE-2026-106121 is a Denial of Service (DoS) vulnerability in the RabbitMQ Java Client library (amqp-client) affecting versions prior to 5.37.0. The vulnerability resides in the legacy, custom JSON-RPC parsing class com.rabbitmq.tools.json.JSONReader. When parsing malformed or truncated payloads ending within a quoted string or single-line comment, the parser's scanner enters an infinite loop. This occurs because the loop lacks an exit condition for the end-of-input sentinel character returned by the iterator, leading to either CPU exhaustion or a JVM crash from an OutOfMemoryError.

Amit Schendel
Amit Schendel
8 views•6 min read