[Pkg-roundcube-maintainers] roundcube: CVE-2020-35730: XSS vulnerability via malious HTML or plaintext messages
Guilhem Moulin
guilhem at debian.org
Mon Dec 28 02:48:10 GMT 2020
Dear LTS team,
In a recent post roundcube webmail upstream has announced the following
security fix for #978491:
Cross-site scripting (XSS) via HTML or Plain text messages with
malicious content (CVE-2020-35730)
— responsible disclosure from Alex Birnberg
Debdiff tested and attached. I can upload if you'd like but would
appreciate if you could take care of the DLA :-)
Thanks!
Cheers,
--
Guilhem.
-------------- next part --------------
diffstat for roundcube-1.2.3+dfsg.1 roundcube-1.2.3+dfsg.1
changelog | 8 ++++
patches/CVE-2020-35730.patch | 77 +++++++++++++++++++++++++++++++++++++++++++
patches/series | 1
3 files changed, 86 insertions(+)
diff -Nru roundcube-1.2.3+dfsg.1/debian/changelog roundcube-1.2.3+dfsg.1/debian/changelog
--- roundcube-1.2.3+dfsg.1/debian/changelog 2020-08-11 18:38:40.000000000 +0200
+++ roundcube-1.2.3+dfsg.1/debian/changelog 2020-12-28 03:25:57.000000000 +0100
@@ -1,3 +1,11 @@
+roundcube (1.2.3+dfsg.1-4+deb9u8) stretch-security; urgency=high
+
+ * Backport security fix for CVE-2020-35730: Cross-site scripting (XSS)
+ Cross-site scripting (XSS) vulnerability via HTML or Plain text messages
+ with malicious content svg/namespace. (Closes: #978491)
+
+ -- Guilhem Moulin <guilhem at debian.org> Mon, 28 Dec 2020 03:25:57 +0100
+
roundcube (1.2.3+dfsg.1-4+deb9u7) stretch-security; urgency=high
* Backport security fix for CVE-2020-16145: Cross-site scripting (XSS)
diff -Nru roundcube-1.2.3+dfsg.1/debian/patches/CVE-2020-35730.patch roundcube-1.2.3+dfsg.1/debian/patches/CVE-2020-35730.patch
--- roundcube-1.2.3+dfsg.1/debian/patches/CVE-2020-35730.patch 1970-01-01 01:00:00.000000000 +0100
+++ roundcube-1.2.3+dfsg.1/debian/patches/CVE-2020-35730.patch 2020-12-28 03:25:57.000000000 +0100
@@ -0,0 +1,77 @@
+commit 47e4d44f62ea16f923761d57f1773a66d51afad4
+Author: Aleksander Machniak <alec at alec.pl>
+Date: Sun Dec 27 18:27:42 2020 +0100
+
+ Fix cross-site scripting (XSS) via HTML or Plain text messages with malicious content [CVE-2020-35730]
+
+ Credits to Alex Birnberg <birnbergalex at gmail.com>
+
+diff --git a/program/lib/Roundcube/rcube_string_replacer.php b/program/lib/Roundcube/rcube_string_replacer.php
+index 284d58547..d4ec20f23 100644
+--- a/program/lib/Roundcube/rcube_string_replacer.php
++++ b/program/lib/Roundcube/rcube_string_replacer.php
+@@ -24,7 +24,7 @@
+ */
+ class rcube_string_replacer
+ {
+- public static $pattern = '/##str_replacement_(\d+)##/';
++ public $pattern;
+ public $mailto_pattern;
+ public $link_pattern;
+ public $linkref_index;
+@@ -39,6 +39,10 @@ class rcube_string_replacer
+
+ function __construct($options = array())
+ {
++ // Create hard-to-guess replacement string
++ $uniq_ident = sprintf('%010d%010d', mt_rand(), mt_rand());
++ $this->pattern = '/##' . $uniq_ident . '##(\d+)##/';
++
+ // Simplified domain expression for UTF8 characters handling
+ // Support unicode/punycode in top-level domain part
+ $utf_domain = '[^?&@"\'\\/()<>\s\r\t\n]+\\.?([^\\x00-\\x2f\\x3b-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-zA-Z0-9]{2,})';
+@@ -49,7 +53,7 @@ class rcube_string_replacer
+ $link_prefix = "([\w]+:\/\/|{$this->noword}[Ww][Ww][Ww]\.|^[Ww][Ww][Ww]\.)";
+
+ $this->options = $options;
+- $this->linkref_index = '/\[([^\]#]+)\](:?\s*##str_replacement_(\d+)##)/';
++ $this->linkref_index = '/\[([^\]#]+)\](:?\s*' . substr($this->pattern, 1, -1) . ')/';
+ $this->linkref_pattern = '/\[([^\]#]+)\]/';
+ $this->link_pattern = "/$link_prefix($utf_domain([$url1]*[$url2]+)*)/";
+ $this->mailto_pattern = "/("
+@@ -78,7 +82,7 @@ class rcube_string_replacer
+ */
+ public function get_replacement($i)
+ {
+- return '##str_replacement_' . $i . '##';
++ return str_replace('(\d+)', $i, substr($this->pattern, 1, -1));
+ }
+
+ /**
+@@ -121,7 +125,7 @@ class rcube_string_replacer
+ public function linkref_addindex($matches)
+ {
+ $key = $matches[1];
+- $this->linkrefs[$key] = $this->urls[$matches[3]];
++ $this->linkrefs[$key] = isset($this->urls[$matches[3]]) ? $this->urls[$matches[3]] : null;
+
+ return $this->get_replacement($this->add('['.$key.']')) . $matches[2];
+ }
+@@ -166,7 +170,7 @@ class rcube_string_replacer
+ */
+ public function replace_callback($matches)
+ {
+- return $this->values[$matches[1]];
++ return isset($this->values[$matches[1]]) ? $this->values[$matches[1]] : null;
+ }
+
+ /**
+@@ -193,7 +197,7 @@ class rcube_string_replacer
+ */
+ public function resolve($str)
+ {
+- return preg_replace_callback(self::$pattern, array($this, 'replace_callback'), $str);
++ return preg_replace_callback($this->pattern, array($this, 'replace_callback'), $str);
+ }
+
+ /**
diff -Nru roundcube-1.2.3+dfsg.1/debian/patches/series roundcube-1.2.3+dfsg.1/debian/patches/series
--- roundcube-1.2.3+dfsg.1/debian/patches/series 2020-08-11 18:38:40.000000000 +0200
+++ roundcube-1.2.3+dfsg.1/debian/patches/series 2020-12-28 03:25:57.000000000 +0100
@@ -22,3 +22,4 @@
CVE-2020-13965.patch
CVE-2020-15562.patch
CVE-2020-16145.patch
+CVE-2020-35730.patch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-roundcube-maintainers/attachments/20201228/441a4e8f/attachment.sig>
More information about the Pkg-roundcube-maintainers
mailing list