Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-48846

CVE-2026-48846: Roundcube Webmail Info Disclosure Flaw

CVE-2026-48846 is an information disclosure vulnerability in Roundcube Webmail caused by a CSS var() bypass in remote image blocking. This article covers technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-48846 Overview

CVE-2026-48846 affects Roundcube Webmail versions 1.6.x before 1.6.16 and 1.7.x before 1.7.1. The vulnerability allows attackers to bypass the remote image blocking feature using a crafted CSS var() value embedded in an e-mail message. Successful exploitation can lead to information disclosure or access-control bypass [CWE-669: Incorrect Resource Transfer Between Spheres].

Roundcube is a widely deployed open-source IMAP webmail client used by hosting providers, universities, and enterprises. The flaw weakens privacy protections that prevent senders from tracking recipients through remote content loading.

Critical Impact

Attackers can exfiltrate recipient metadata (IP address, user-agent, message-open status) by abusing CSS parsing to load attacker-controlled remote resources without user consent.

Affected Products

  • Roundcube Webmail 1.6.x prior to 1.6.16
  • Roundcube Webmail 1.7.x prior to 1.7.1
  • Deployments using the default HTML message rendering configuration

Discovery Timeline

  • 2026-05-24 - Roundcube releases security updates 1.6.16 and 1.7.1
  • 2026-05-25 - CVE-2026-48846 published to NVD
  • 2026-05-26 - Last updated in NVD database

Technical Details for CVE-2026-48846

Vulnerability Analysis

The vulnerability resides in the CSS sanitization routine within program/lib/Roundcube/rcube_utils.php. Roundcube parses inline CSS in HTML e-mails to strip references to remote resources such as background images. The original regular expression only matched a url(...) token at the start of a CSS property value, anchored with ^url\s*\(. Attackers can sidestep the filter by wrapping the url() call inside a CSS var() reference or other property construct so that url( does not appear at the beginning of the value.

When the renderer later resolves the CSS variable, the browser fetches the remote URL, defeating the remote image blocking control. This exposes the recipient's IP address, mail client fingerprint, and the fact that the message was opened.

Root Cause

The root cause is an incomplete input validation regex. The anchored pattern ^url\s*\( failed to detect url() tokens appearing anywhere other than the start of the value. A single CSS property can also contain multiple url() tokens, none of which were sanitized after the first match.

Attack Vector

Exploitation requires no authentication and no user interaction beyond opening or previewing an HTML e-mail. The attacker sends a crafted message containing CSS that hides a url() call behind a var() reference. When Roundcube renders the message, the bypass loads remote content from attacker-controlled infrastructure.

php
             } else {
                 $value = '';
                 foreach (self::explode_css_property_block($rule[1]) as $val) {
-                    if ($url_callback && preg_match('/^url\s*\(/i', $val)) {
-                        if (preg_match('/^url\s*\(\s*[\'"]?([^\'"\)]*)[\'"]?\s*\)/iu', $val, $match)) {
-                            if ($url = $url_callback($match[1])) {
-                                $value .= ' url(' . $url . ')';
+                    if ($url_callback && preg_match('/\burl\s*\(/i', $val)) {
+                        if (preg_match_all('/(\b)url\s*\(\s*[\'"]?([^\'"\)]*)[\'"]?\s*\)/iu', $val, $matches)) {
+                            foreach ($matches[2] as $idx => $url) {
+                                if ($url = $url_callback($url)) {
+                                    $val = str_replace($matches[0][$idx], $matches[1][$idx] . "url({$url})", $val);
+                                } else {
+                                    $val = '';
+                                }
+                            }
+                            if (strlen($val)) {
+                                $value .= ' ' . $val;
                             }
                         }
                     } elseif (preg_match('/;.+/', $val)) {

Source: Roundcube Commit 59cca80. The patch replaces the anchored regex with \b word-boundary matching and uses preg_match_all to sanitize every url() token in the property value.

Detection Methods for CVE-2026-48846

Indicators of Compromise

  • Inbound HTML e-mails containing CSS var() declarations that wrap url() references
  • Outbound HTTP/HTTPS requests from webmail servers or clients to unrecognized domains immediately after a user opens a message
  • Roundcube access logs showing message previews followed by unusual referrer activity

Detection Strategies

  • Inspect e-mail bodies at the gateway for CSS patterns combining var(-- with url( substrings in <style> blocks or inline style= attributes
  • Compare rendered message metadata against expected remote-image-block policy to identify silent fetches
  • Correlate Roundcube version banners with the patched releases 1.6.16 and 1.7.1 to identify exposed instances

Monitoring Recommendations

  • Enable verbose logging on the mail proxy or content security policy (CSP) reporting endpoints for blocked or anomalous resource loads
  • Monitor DNS queries from webmail infrastructure for newly registered or low-reputation domains referenced by HTML messages
  • Track Roundcube release versions across hosted tenants and flag any instance running below 1.6.16 or 1.7.1

How to Mitigate CVE-2026-48846

Immediate Actions Required

  • Upgrade Roundcube Webmail to version 1.6.16 or 1.7.1 as published in the Roundcube Security Updates Announcement
  • Audit all hosted or self-managed Roundcube instances for affected versions
  • Re-validate that the remote image blocking setting is enforced after upgrade

Patch Information

The upstream fix is delivered in Roundcube Release 1.6.16 and Roundcube Release 1.7.1. The relevant code changes are tracked in commit 59cca80 and commit 8523504, which rewrite the CSS url() sanitizer to handle multiple and non-anchored occurrences.

Workarounds

  • Disable HTML rendering of e-mail messages and force plaintext view until the patch is applied
  • Deploy a Content Security Policy (CSP) on the webmail virtual host that restricts img-src and style-src to first-party origins
  • Use an upstream e-mail gateway to strip <style> blocks and inline style= attributes containing var( references
bash
# Verify the installed Roundcube version on a Linux host
grep RCMAIL_VERSION /var/www/roundcube/program/include/iniset.php

# Upgrade using the official tarball
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.16/roundcubemail-1.6.16-complete.tar.gz
tar -xzf roundcubemail-1.6.16-complete.tar.gz
cd roundcubemail-1.6.16
bin/installto.sh /var/www/roundcube

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.