From 14d802ae6bf6ae4e7d8721deeb3fd7ffab66a97a Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Mon, 23 Nov 2009 22:15:43 -0700 Subject: [PATCH] Bug #8715: Fix XSS vulnerability. --- framework/Text_Filter/lib/Horde/Text/Filter/Xss.php | 9 +++++++++ framework/Text_Filter/package.xml | 3 ++- framework/Text_Filter/test/Horde/Text/Filter/fixtures/xss96.html | 1 + framework/Text_Filter/test/Horde/Text/Filter/xss.phpt | 2 ++ 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 framework/Text_Filter/test/Horde/Text/Filter/fixtures/xss96.html diff --git a/framework/Text_Filter/lib/Horde/Text/Filter/Xss.php b/framework/Text_Filter/lib/Horde/Text/Filter/Xss.php index ad26f4ee1..1498c75bd 100644 --- a/framework/Text_Filter/lib/Horde/Text/Filter/Xss.php +++ b/framework/Text_Filter/lib/Horde/Text/Filter/Xss.php @@ -196,6 +196,15 @@ class Horde_Text_Filter_Xss extends Horde_Text_Filter $patterns[$pattern] = '<$1' . $this->_params['replace'] . '_tag'; } + /* Strip out data URLs living in an A HREF element (Bug #8715). */ + $malicious = '/<((?:a|�*65;?|�*41;?|�*97;?|�*61;?)\b[^>]+?)' . + '(?:h|�*72;?|�*48;?|�*104;?|�*68;?)\s*' . + '(?:r|�*82;?|�*52;?|�*114;?|�*72;?)\s*' . + '(?:e|�*69;?|�*45;?|�*101;?|�*65;?)\s*' . + '(?:f|�*70;?|�*46;?|�*102;?|�*66;?)\s*=' . + '("|\')?\s*data:(?(2)[^"\')>]*|[^\s)>]*)(?(2)\\2)/is'; + $patterns[$malicious] = '<$1'; + /* Comment out style/link tags. */ if ($this->_params['strip_styles']) { if ($this->_params['strip_style_attributes']) { diff --git a/framework/Text_Filter/package.xml b/framework/Text_Filter/package.xml index 8a9a69bcb..47594442b 100644 --- a/framework/Text_Filter/package.xml +++ b/framework/Text_Filter/package.xml @@ -37,7 +37,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> beta LGPL - * Add support for Google Closure Compiler in javascript minfiy filter. + * Add XSS filtering for data URLs in A HREF parameters (Bug #8715). + * Add support for Google Closure Compiler in javascript minfiy filter. * Fix dimming signatures when mixed with quoted text (Bug #4299). * Added javscript minify filter. * Add support for using the tidy extension when filtering HTML data. diff --git a/framework/Text_Filter/test/Horde/Text/Filter/fixtures/xss96.html b/framework/Text_Filter/test/Horde/Text/Filter/fixtures/xss96.html new file mode 100644 index 000000000..74e5d2e78 --- /dev/null +++ b/framework/Text_Filter/test/Horde/Text/Filter/fixtures/xss96.html @@ -0,0 +1 @@ +Click me diff --git a/framework/Text_Filter/test/Horde/Text/Filter/xss.phpt b/framework/Text_Filter/test/Horde/Text/Filter/xss.phpt index f6fdd5066..84c8fade3 100644 --- a/framework/Text_Filter/test/Horde/Text/Filter/xss.phpt +++ b/framework/Text_Filter/test/Horde/Text/Filter/xss.phpt @@ -221,6 +221,8 @@ xss84.html xss85.html PT SRC="http://ha.ckers.org/a.js"> +xss96.html +Click me xss97.html xss98.html -- 2.11.0