- Fix XSS vulnerability in vbscript: and data:text links handling (#1488850)

pull/51/head
Aleksander Machniak 12 years ago
parent 0fa54df638
commit 74cd0a9b62

@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail CHANGELOG Roundcube Webmail
=========================== ===========================
- Fix XSS vulnerability in vbscript: and data:text links handling (#1488850)
- Fix broken message/part bodies when FETCH response contains more untagged lines (#1488836) - Fix broken message/part bodies when FETCH response contains more untagged lines (#1488836)
- Fix empty email on identities list after identity update (#1488834) - Fix empty email on identities list after identity update (#1488834)
- Add new identities_level: (4) one identity with possibility to edit only signature - Add new identities_level: (4) one identity with possibility to edit only signature

@ -214,7 +214,7 @@ class washtml
$key = strtolower($key); $key = strtolower($key);
$value = $node->getAttribute($key); $value = $node->getAttribute($key);
if (isset($this->_html_attribs[$key]) || if (isset($this->_html_attribs[$key]) ||
($key == 'href' && !preg_match('!^javascript!i', $value) ($key == 'href' && !preg_match('!^(javascript|vbscript|data:text)!i', $value)
&& preg_match('!^([a-z][a-z0-9.+-]+:|//|#).+!i', $value)) && preg_match('!^([a-z][a-z0-9.+-]+:|//|#).+!i', $value))
) { ) {
$t .= ' ' . $key . '="' . htmlspecialchars($value, ENT_QUOTES) . '"'; $t .= ' ' . $key . '="' . htmlspecialchars($value, ENT_QUOTES) . '"';

@ -96,6 +96,20 @@ class MailFunc extends PHPUnit_Framework_TestCase
$this->assertNotRegExp('/font-style:italic/', $washed, "Allow valid styles"); $this->assertNotRegExp('/font-style:italic/', $washed, "Allow valid styles");
} }
/**
* Test the elimination of some XSS vulnerabilities
*/
function test_html_xss3()
{
// #1488850
$html = '<p><a href="data:text/html,&lt;script&gt;alert(document.cookie)&lt;/script&gt;">Firefox</a>'
.'<a href="vbscript:alert(document.cookie)">Internet Explorer</a></p>';
$washed = rcmail_wash_html($html, array('safe' => true), array());
$this->assertNotRegExp('/data:text/', $washed, "Remove data:text/html links");
$this->assertNotRegExp('/vbscript:/', $washed, "Remove vbscript: links");
}
/** /**
* Test washtml class on non-unicode characters (#1487813) * Test washtml class on non-unicode characters (#1487813)
*/ */

Loading…
Cancel
Save