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-2022-50807

The Phantom Menace: Dissecting the 'Fake' ConcreteCMS XPath Injection

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 18, 2026·5 min read·29 visits

Executive Summary (TL;DR)

CVE-2022-50807 is a **REJECTED** vulnerability originally claimed to be an XPath Injection in ConcreteCMS. In reality, it is a non-security bug where malformed URLs cause the caching driver to throw a verbose error (Information Disclosure) if debug mode is enabled. There is no actual injection or RCE risk.

A cautionary tale in vulnerability research: CVE-2022-50807 represents a classic false positive where a verbose error message was mistaken for a critical injection flaw. Originally reported as an XPath Injection in ConcreteCMS 9.1.3, this issue was later rejected by CNAs after analysis revealed it was merely a functional error triggering a stack trace in debug environments. This report dissects the confusion between 'application crash' and 'arbitrary code execution'.

The Hook: When a Bug Isn't a Feature (or a Vulnerability)

In the high-stakes world of bug bounty hunting and CVE chasing, there is a dangerous trap that ensnares even seasoned researchers: confirmation bias. You see a URL, you throw a single quote (') at it, the server screams in agony with a 500 Internal Server Error, and you immediately draft a report titled 'Critical Injection'. This is precisely what happened with CVE-2022-50807.

ConcreteCMS (formerly Concrete5) is a popular open-source CMS. In late 2022, a researcher claimed to have found an XPath Injection (CWE-643) in version 9.1.3. The claim was bold: by injecting boolean logic into the URL path, one could allegedly manipulate XML queries. The exploit made its way into Exploit-DB, a CVE ID was assigned, and scanners started flagging it.

But there was a catch. The 'exploit' didn't actually retrieve data. It didn't bypass authentication. It just made the server vomit a stack trace. This deep dive isn't about how to hack ConcreteCMS; it's a masterclass in reading stack traces and distinguishing between a security vulnerability and a code quality issue.

The 'Exploit': Boolean Voodoo

The original researcher, nu11secur1ty, provided a Proof of Concept (PoC) that looked suspiciously like a standard SQL injection fuzzer payload pasted into a URL path. The logic was that if the application processed the URL as an XPath query, injecting a TRUE condition would change the behavior.

The payload looked like this:

GET /concrete-cms-9.1.3/index.php/ccm50539478' or 4591=4591-- /assets/localization/moment/js HTTP/1.1
Host: target-host

To the untrained eye, this looks dangerous. You have the single quote to break syntax, the OR operator, a tautology (4591=4591), and the comment characters (--). When sent to a ConcreteCMS instance running in a development environment (like XAMPP), the server responded with a massive, detailed error page. The researcher saw the chaos and assumed valid injection. However, correlation does not imply causation.

The Analysis: Reading the Tea Leaves (Stack Traces)

So, what actually happened? Was the application blindly concatenating this URL into an XPath query? No. The stack trace, which was ironically included in the researcher's own report, tells the real story. The error wasn't an XML parsing failure; it was a file system inclusion error generated by the caching layer.

ConcreteCMS uses a library called Stash for caching. When a request comes in, the CMS often tries to map the URL path to a cache key or a localized resource. The relevant part of the stack trace looked something like this:

Whoops\Exception\ErrorException: include(): 
Failed opening 'C:/xampp/.../expensive...php' for inclusion
In Stash\Driver\FileSystem\NativeEncoder

The NativeEncoder in Stash was trying to handle the incoming path. The malformed URL—containing spaces, quotes, and dashes—likely confused the file system driver or resulted in a generated filename that was invalid or missing. The application didn't know how to handle the garbage input, so it threw an exception.

Because the target system was running with Debug Mode (Whoops handler) enabled, it displayed the exception. This is Information Disclosure, sure, but it is effectively "Debug Mode is on," not "XPath Injection."

The Verdict: Why It Was Rejected

A true injection vulnerability allows an attacker to alter the control flow of an application to execute unintended commands or retrieve unauthorized data. In this case, the attacker provided garbage, and the application threw an error saying, "I can't read this garbage."

There was no evidence that the boolean logic (4591=4591) was ever evaluated. You could likely have replaced that payload with GET /index.php/banana_pancake_recipe and received a similar 404 or 500 error depending on the routing configuration. The boolean operators were red herrings.

Consequently, the CVE was REJECTED and withdrawn. The CNA (VulnCheck) and the vendor correctly identified that this was a functional bug in how the router/cache handled invalid characters, magnified by a misconfigured server (Debug Mode). It serves as a reminder: Just because it breaks, doesn't mean it's pwned.

Mitigation: Silence is Golden

While this specific CVE is a dud, it highlights a critical configuration weakness that plagues many organizations: leaving Debug Mode on in production. The only reason the researcher knew the file paths (C:/xampp/htdocs/...) and the library versions was because the server told them.

To mitigate the risk of Information Disclosure (and to stop researchers from filing false positives against you):

  1. Disable Display Errors: In your php.ini, ensure display_errors = Off.
  2. Disable ConcreteCMS Debug: Go to the Dashboard -> System & Settings -> Environment -> Debug Settings and ensure "Hide errors from the visitor" is selected.
  3. Sanitize Inputs: While not an injection, it's bad practice for an application to crash on special characters. Ensure your routing layer handles 404s gracefully rather than bubbling up 500 exceptions for bad paths.

Technical Appendix

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

Affected Systems

ConcreteCMS 9.1.3 (specifically in Debug Mode)

Affected Versions Detail

Product
Affected Versions
Fixed Version
ConcreteCMS
PortlandLabs
= 9.1.3N/A
AttributeDetail
Vulnerability TypeInformation Disclosure (False Positive Injection)
Original CWECWE-643 (XPath Injection) - Incorrectly Assigned
Actual RiskPath Disclosure via Debug Trace
CVSS0.0 (Rejected)
StatusREJECTED
VectorNetwork (URL Path)

MITRE ATT&CK Mapping

T1592Gather Victim Host Information
Reconnaissance
CWE-643
Improper Neutralization of Data within XPath Expressions ('XPath Injection')

The software uses external input to build an XPath query to a database or XML file, but it does not neutralize or incorrectly neutralizes that input. (Note: This was the claimed weakness, not the actual flaw.)

Known Exploits & Detection

Exploit-DBProof of Concept demonstrating the 500 error trigger

Vulnerability Timeline

Vulnerability reported by nu11secur1ty
2022-11-08
Exploit-DB PoC published
2022-11-28
GitHub Advisory withdrawn
2022-12-05
NVD formally lists as REJECTED
2026-01-13

References & Sources

  • [1]Exploit-DB Entry (PoC)
  • [2]NVD Record (Rejected)
  • [3]GitHub Advisory (Withdrawn)

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 6 hours ago•GHSA-JHJP-4C2Q-XMX4
8.1

GHSA-JHJP-4C2Q-XMX4: Falco k8saudit Plugin Ruleset Bypass via initContainers and ephemeralContainers

A security feature bypass vulnerability in the Falco k8saudit plugin (and its cloud-specific variants) allowed privileged workloads to run undetected. This bypass occurred because the plugin's default extraction logic and rules only evaluated standard containers, completely omitting initContainers and ephemeralContainers.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 7 hours ago•CVE-2026-61630
4.2

CVE-2026-61630: Time-Based One-Time Password (TOTP) Reuse/Replay in nginx-ignition

nginx-ignition is a web-based user interface for managing the Nginx web server. In versions 2.33.0 through 2.35.0, the application is vulnerable to an improper authentication flaw (CWE-287) in its Multi-Factor Authentication (MFA) implementation. The stateless validation of Time-Based One-Time Passwords (TOTP) allows an attacker to reuse a captured, active verification code multiple times within the standard 30-second validity window, successfully bypassing secondary authentication checks if primary credentials are known.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 8 hours ago•CVE-2026-61629
7.5

CVE-2026-61629: CPU Amplification Denial of Service via ParseAcceptLanguage Underscore Bypass

A vulnerability exists in the i18n middleware of nginx-ignition, enabling CPU amplification attacks. By transmitting a crafted Accept-Language header containing malformed tags separated by underscores, an unauthenticated remote attacker can bypass the length-guard threshold of the underlying Go parsing library. Normalization of underscores to hyphens occurs after the initial validation checks, forcing the parser into expensive quadratic-time loops that consume 100% of available CPU resources. This leads to a complete denial of service for the administrative API and potentially degrades the availability of the hosting system. This vulnerability has been resolved in version 2.40.1.

Alon Barad
Alon Barad
6 views•7 min read
•about 9 hours ago•CVE-2026-61628
8.1

CVE-2026-61628: Unauthenticated Admin Account Creation via Onboarding Race Condition in Nginx Ignition

Nginx Ignition prior to version 2.41.1 contains a Time-of-Check to Time-of-Use (TOCTOU) race condition in its unauthenticated onboarding API endpoint. This flaw allows remote, unauthenticated attackers to register an administrative account by sending concurrent HTTP requests during the initial system configuration phase, bypassing the check meant to restrict onboarding to a single initial administrator.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 15 hours ago•CVE-2026-61687
7.1

CVE-2026-61687: OAuth State Validation Bypass and Login CSRF in Hatchet

A logic error in Hatchet's OAuth state validation mechanism allows unauthenticated remote attackers to bypass state parameter verification. By submitting an empty state parameter, attackers can exploit an equality collision with cleared session keys, facilitating Login Cross-Site Request Forgery (Login CSRF) or Session Fixation.

Amit Schendel
Amit Schendel
10 views•10 min read
•3 days ago•CVE-2026-58197
8.8

CVE-2026-58197: Host Escape and Lateral Movement via Insecure Container Network Defaults in ToolHive

A high-severity access control vulnerability in ToolHive CLI before v0.30.1 and ToolHive Studio before v0.38.0 allows local containerized MCP servers to bypass network isolation. This enables malicious workloads to establish TCP/IP connections to administrative and control plane endpoints exposed on the host loopback interface.

Amit Schendel
Amit Schendel
12 views•8 min read