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

The Invisible Minefield: Weaponizing CSS in XWiki Comments

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 12, 2026·6 min read·57 visits

Executive Summary (TL;DR)

XWiki allowed users to inject raw CSS in comments without adequate scoping. Attackers can use this to create a page-wide, invisible link (`position: fixed; width: 100vw;`) that sits on top of the UI. Clicking anywhere on the wiki triggers a redirect to an attacker-controlled site. The fix involves a JavaScript interceptor that prompts users before leaving the domain.

A UI redressing vulnerability (Clickjacking) in XWiki Platform allows unauthenticated attackers to hijack user clicks via CSS injection in comments. By overlaying invisible anchors on the interface, attackers can silently redirect users to malicious domains, turning a trusted wiki into a phishing launchpad.

The Hook: Trust is the Vulnerability

Enterprise wikis are the digital equivalent of a company's collective brain. They hold documentation, secrets, and the inherent trust of every employee who logs in. When you visit your internal XWiki instance, you don't expect to be navigating a minefield. You expect links to lead where they say they lead, and buttons to do what they say they do.

But CVE-2026-26000 flips that trust on its head. It’s not a fancy memory corruption bug, and it doesn't require a master's degree in heap Feng Shui. It relies on something far more insidious: the browser's blind obedience to Cascading Style Sheets (CSS).

This vulnerability allows an unauthenticated attacker to turn a benign comment section into a trap. By injecting specific CSS, they can hijack the entire viewport. The user thinks they are clicking "Save" on a document, or "Log Out," or just clicking blank space to focus the window. In reality, they are clicking a hidden trapdoor that sends them straight to a phishing site or a drive-by download server. It is the digital equivalent of putting a poster over a hole in the floor.

The Flaw: The Cascading Scope Problem

The root cause here is a classic case of "features over security." XWiki allows users to style their comments using CSS. This sounds nice in principle—maybe you want your text to be red, or your table to have a border. The problem is that CSS, by default, is not scoped to the element it is defined in unless you use specific technologies like Shadow DOM (which XWiki wasn't using for comments).

When you allow a user to write a <style> block in a comment, those styles apply to the entire document. This is the "Cascading" part of CSS, and it's also the security flaw. The developers likely sanitized HTML to prevent Cross-Site Scripting (XSS), scrubbing out <script> tags and on* event handlers. But they left the door wide open for styling.

An attacker doesn't need JavaScript to ruin your day. They just need to break out of the comment box. By using properties like position: fixed, top: 0, and z-index: 99999, an element defined inside a lowly comment can ascend to the heavens and cover the entire application interface. The browser renders this faithfully, because as far as it knows, this is just how the page is supposed to look.

The Exploit: Building the Phantom Overlay

Let's look at how a researcher (or attacker) weaponizes this. The goal is to create a "clickjack" scenario where the user intends to interact with the Wiki but unknowingly interacts with our payload.

We need two things: an anchor tag (<a>) to serve as the destination, and a <style> block to make it weaponized. Here is the payload structure confirmed by the integration tests:

<!-- The Trap -->
<a href="https://attacker-controlled-site.com/login_harvest" class="phantom-link"></a>
 
<!-- The Weaponization -->
<style>
  a.phantom-link {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;   /* 100% of Viewport Width */
    height: 100vh;  /* 100% of Viewport Height */
    z-index: 2147483647; /* Max signed 32-bit integer */
    opacity: 0;     /* Invisible to the eye */
    cursor: default; /* Don't change the mouse cursor */
  }
</style>

The Mechanics:

  1. position: fixed: Rips the element out of the normal document flow and glues it to the browser window.
  2. 100vw/vh: Forces the element to stretch across the entire screen.
  3. z-index: Ensures this element sits on top of everything else—navigation bars, buttons, and content.
  4. opacity: 0: Makes the element invisible. The user still sees the wiki underneath.

The result? The entire screen becomes a single, giant, invisible hyperlink. The next time the user clicks anywhere, the browser triggers the navigation event to the attacker's URL.

The Code: The Interceptor Patch

Fixing this is tricky. You could try to parse and sanitize CSS, but CSS parsers are notoriously difficult to secure (browsers are lenient, parsers are strict). Instead of blocking the CSS, XWiki opted for Frontend Link Protection.

The fix (commits 29cb81f3 and 7b5a4f8c) introduces a JavaScript interceptor, link-protection.js. Instead of preventing the overlay, they prevent the action resulting from the click.

How it works:

  1. Event Listener: The script attaches a global click listener to all <a> tags.
  2. Verification: When a click occurs, it checks the destination URL against a whitelist (trustedDomains).
  3. Intervention: If the domain is external and untrusted, it halts the navigation and throws a window.confirm dialog.
// Pseudo-code representation of the fix logic
document.addEventListener('click', function(event) {
    let target = event.target.closest('a');
    if (!target) return;
 
    if (isExternal(target.href) && !isTrusted(target.href)) {
        event.preventDefault();
        if (confirm("You are leaving the wiki to go to " + target.href)) {
            window.location.href = target.href;
        }
    }
});

This is a "defense in depth" approach. The invisible overlay might still exist, but it can no longer silently spirit the user away. The sudden popup warning breaks the illusion and alerts the user.

Re-Exploitation: Bypassing the Guard

As a hacker, looking at this fix makes my ears perk up. The defense relies entirely on a whitelist and URL parsing. This is where the next vulnerability usually hides.

1. The Open Redirect Bypass The interceptor allows links to trustedDomains. Usually, the wiki itself is trusted. If the wiki (or any other trusted domain in the config) has an Open Redirect vulnerability, the check is bypassed.

  • Scenario: https://wiki.corp.com is trusted.
  • Attack Link: https://wiki.corp.com/redirect?url=https://evil.com
  • Result: The JavaScript sees wiki.corp.com, gives it a thumbs up, and lets the navigation happen. The server then redirects the user to evil.com. Game over.

2. The URL Parser Confusion JavaScript's URL API and the regex used in the protection script might disagree on what constitutes a "host." Techniques involving @ (credentials) or rare unicode characters could potentially trick the parser into thinking a malicious domain is actually a trusted one (e.g., https://trusted.com@attacker.com).

While the patch closes the immediate door, it shifts the burden of security to the integrity of the trusted domains.

Official Patches

XWikiOfficial GitHub Advisory and Patch Information

Fix Analysis (2)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N

Affected Systems

XWiki Platform

Affected Versions Detail

Product
Affected Versions
Fixed Version
XWiki Platform
XWiki
< 16.10.1316.10.13
XWiki Platform
XWiki
>= 17.0.0-rc-1, < 17.4.617.4.6
XWiki Platform
XWiki
>= 17.5.0, < 17.9.017.9.0
AttributeDetail
CWE IDCWE-1021
Attack VectorNetwork (CSS Injection)
CVSS v4.05.3 (Medium)
Privileges RequiredNone
User InteractionPassive (Click required)
Exploit StatusPoC Available

MITRE ATT&CK Mapping

T1204.001User Execution: Malicious Link
Execution
T1566.002Phishing: Spearphishing Link
Initial Access
CWE-1021
Clickjacking

Improper Restriction of Rendered UI Layers or Frames

Known Exploits & Detection

XWiki Integration TestsFunctional PoC demonstrating the CSS overlay attack and subsequent redirection.

Vulnerability Timeline

Fix commits authored by Simon Urli
2025-10-15
CVE-2026-26000 and GHSA-74rh-c5rh-88vg Published
2026-02-12
Patched versions 17.4.6, 16.10.13, 17.9.0 Released
2026-02-12

References & Sources

  • [1]GHSA-74rh-c5rh-88vg Advisory
  • [2]XWiki Jira Ticket (Hypothetical)

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

•36 minutes ago•GHSA-FX4F-MHW4-QM7J
7.5

GHSA-FX4F-MHW4-QM7J: Integer Overflow and Denial of Service in vibeio-http Chunked Parser

An integer overflow vulnerability exists in the HTTP/1.x chunked encoding parser of the vibeio-http library. The flaw is caused by unchecked integer addition when calculating the total buffer size required for processing parsed chunk lengths. By sending a maliciously crafted HTTP request containing an extremely large chunk size, an unauthenticated remote attacker can trigger a runtime panic, leading to complete denial of service.

Amit Schendel
Amit Schendel
1 views•6 min read
•about 13 hours ago•GHSA-4PH6-MJV7-3FQ6
6.5

GHSA-4PH6-MJV7-3FQ6: Improper Handling of Untrusted DNS-over-HTTPS Response Data in netfoil

netfoil, an allowlist-based DNS proxy, failed to sanitize ALPN fields parsed from untrusted DNS-over-HTTPS (DoH) HTTPS Resource Records. This allowed attackers to inject ANSI escape sequences into log files or trigger Denial of Service (DoS) via uncontrolled memory allocations.

Alon Barad
Alon Barad
6 views•6 min read
•about 14 hours ago•GHSA-3GJW-F78C-VVPW
7.5

GHSA-3GJW-F78C-VVPW: Denial of Service via Unhandled Out-of-Bounds Indexing Panic in tokio-postgres

An issue was discovered in the tokio-postgres library for Rust prior to version 0.7.18. A trust assumption mismatch between the PostgreSQL protocol messages sent by a server and how they are parsed and indexed by the client-side library allows a rogue or compromised database server to trigger a Denial of Service (DoS) crash via an unhandled out-of-bounds slice indexing panic.

Alon Barad
Alon Barad
6 views•6 min read
•1 day ago•CVE-2026-14669
8.8

CVE-2026-14669: PostgreSQL to_char() Timezone Abbreviation Heap-Based Buffer Overflow

CVE-2026-14669 is a critical heap-based buffer overflow vulnerability in PostgreSQL's date/time formatting function to_char(timestamptz). The flaw arises from unsafe copying of user-controlled timezone abbreviations into a fixed-size internal buffer. An authenticated database user can trigger this issue by setting a long POSIX timezone abbreviation containing custom formatting, allowing them to overwrite adjacent heap structures and hijack execution control to achieve remote code execution (RCE) with the privileges of the 'postgres' operating system user.

Alon Barad
Alon Barad
17 views•6 min read
•3 days ago•CVE-2026-63462
7.5

CVE-2026-63462: Unauthenticated Stack Overflow Denial of Service in Unleash Server

An unauthenticated remote denial of service vulnerability exists in the Unleash feature management platform. By submitting a crafted JSON payload containing deeply nested structures to an OpenAPI-validated endpoint, an attacker can trigger uncontrolled recursion within the error formatting module. This leads to a call-stack exhaustion (RangeError: Maximum call stack size exceeded) inside the Node.js runtime, causing the service to crash immediately without recovery.

Alon Barad
Alon Barad
12 views•6 min read
•3 days ago•CVE-2026-63004
5.5

CVE-2026-63004: Server-Side Request Forgery in Unleash Addon and Integration Subsystem

CVE-2026-63004 is a server-side request forgery (SSRF) vulnerability in the Unleash feature management platform. Authenticated administrators with CREATE_ADDON or UPDATE_ADDON privileges can exploit this vulnerability to initiate requests to loopback addresses, private networks, and cloud metadata endpoints, potentially leading to information disclosure and credential extraction.

Amit Schendel
Amit Schendel
10 views•8 min read