SECURITY: Do not allow data-ooui attributes in wikitext
authorKunal Mehta <legoktm@gmail.com>
Thu, 9 Jul 2015 22:56:17 +0000 (15:56 -0700)
committerKunal Mehta <legoktm@gmail.com>
Fri, 10 Jul 2015 20:28:05 +0000 (13:28 -0700)
We now automatically infuse any element with a data-ooui attribute, so
allowing them in wikitext allows rendering any arbitrary OOUI widget,
some of which (ButtonWidget) are unsafe and can lead to XSS.

By blacklisting data-ooui, widgets cannot be created in wikitext.
T101666 will enable a safe-subset of them.

Bug: T105413
Change-Id: I3f63594a41e9cac3219791e181a2f93818178263

includes/Sanitizer.php

index 2340cd9..ddaf1b2 100644 (file)
@@ -753,7 +753,7 @@ class Sanitizer {
                        }
 
                        # Allow any attribute beginning with "data-"
-                       if ( !preg_match( '/^data-/i', $attribute ) && !isset( $whitelist[$attribute] ) ) {
+                       if ( !preg_match( '/^data-(?!ooui)/i', $attribute ) && !isset( $whitelist[$attribute] ) ) {
                                continue;
                        }