Version 7.1 by Nicolas Gregoire on 2012/01/13 23:57

Dixit Wikipedia : "WebKit is a layout engine designed to allow web browsers to render web pages. WebKit powers Google Chrome and Apple Safari that by December 2011 held 33.35% of the browser market share between them (according to StatCounter). It is also used as the basis for the experimental browser included with the Amazon Kindle ebook reader, as well as the default browser in the iOS, Android and webOS mobile operating systems."


Webkit is used as the rendering engine of numerous browsers :

  • Google Chrome : not vulnerable, because of its sandbox
  • Apple Safari : patch available (v5.1)
  • Apple iTunes : patch available (v10.5)
  • Apple iOS : patch available (v5)
  • Maxthon MX3 : v3.0.22.2000 is vulnerable, recent versions weren't tested
  • HP webOS : patch available (v3.0.2)
  • Nokia S60 : untested
  • Blackberry Torch / Playbook : not vulnerable according to the BBSIRT 
  • Epiphany : v2.30.2 available in Ubuntu 10.04 is vulnerable

It is also used in others softwares rendering HTML :

  • Liferea (RSS reader) :  v1.6.2 available in Ubuntu 10.04 is vulnerable
  • Amazon Kindle : untested
  • Valve Steam : untested
  • and much more ...

File creation vulnerability

Webkit uses libxslt as its XSLT engine. Old versions were not restricting write access by the engine to the file system, leading to a remotely exploitable vulnerability (CVE-2011-1774). This was patched in Changeset 79159 by adding appropriate calls to xsltSetSecurityPrefs().

PoC included on the libxslt page demonstrate the vulnerability.


Two modules are included in Metasploit :

  • a auxiliary working on any non-sandboxed non-patched Webkit device
  • an exploit plugin targeting Safari users with Admin privileges (because of the MOF trick)

An exploit for HP webOS is attached. This exploit drops a backdoor executed with root privileges at boot time :

  • XML contains the payload : destination file name + file content. A reverse-shell based on netcat is added to the script
  • XSL reads the XML file and create the requested file on disk