Plugin JetPack a šablona TwentyFifteen zranitelná proti DOM XSS útoku

Před pár dny proběhla bezpečnostní aktualizace WordPress 4.2.2. Zároveň byla aktualizována i šablona TwentyFifteen a jeden z nejpoužívanějších pluginů JetPack. Za vše může balíček ikonek genericons a soubor example.html, který byl součástí instalace. Za určitých okolností, totiž mohl vést k takzvanému DOM XSS útoku. Pozor tento druh útoku může být spuštěn i přes neaktivní šablonu. I pokud TwentyFiveteen nepoužíváte měli byste jí aktualizovat anebo ještě lépe smazat. Znovu si jí můžete nainstalovat kdykoliv během pár vteřin přímo z repositáře na wordpress.org.

DOM XSS je forma útoku, kdy se prostřednictvím URL předá proměnná obsahující škodlivý kód. Problém je tedy v tom, že nebezpečný kód se nenachází přímo na instalaci WordPress. Ovšem prostřednictvím zranitelnosti lze vytáhnout například obsah cookie návštěvníka, anebo mu vložit iframe se zavirovanou stránkou. To samozřejmě vyžaduje modifikaci URL. Někdo tedy k vám musí uživatele s takto upravenou URL poslat.

Za normálních okolností se o DOM XSS postará prohlížeč. Ten automaticky mění nebezpečné znaky na bezpečné. Například nahrazuje < > za %3C %3E. Právě do nich se vkládá javascript, který je pro úspěšný útok potřebný. Dále mají aktualizované prohlížeče vlastní metody obrany před podezřelým javascriptem.

Jak je tedy možné, že vás prohlížeč neochrání? Může za to právě znaková sada s ikonkami genericons. Právě ta zřejmě obsahuje něco, co „oklame“ prohlížeče a umožní úspěšné provedení útoku. Nemusí se přitom jednat o všechny prohlížeče. Náchylnost na různé formy DOM XSS se objevily u všech prohlížečů. Důležité je jak rychle je dokáží jejich vývojáři opravit.

Na druhou stranu nemůžou za to jen vývojáři prohlížečů. Javascript kód si musí ohlídat i tvůrci šablon a pluginů. Protože právě přes jejich kód se úspěšný DOM XSS útok spouští.

Pokud se DOM XSS chcete dozvědět více doporučuji tyto články:

https://www.owasp.org/index.php/DOM_Based_XSS

http://www.webappsec.org/projects/articles/071105.html