Tracking Information Flow in Dynamic Tree Structures

Appendix L — Exploits

We present exploits for leaking information via the DOM tree. These exploits have been tested against NoMoXSS — the latest practical implementation of JavaScript information flow control in a browser. Both exploits launder data in two phases: first they encode a portion of tainted data in the DOM tree, then they decode this data from the DOM tree and obtain the same data, but untainted. The core of both algorithms is the encoding and decoding of one bit. Knowing how to perform these two operations, constructing an algorithm that would launder data of arbitrary length is straightforward. tainted string using the deletion attack. It returns the string which is no longer tainted and could be sent to a third party, even if monitored by the NoMoXSS tool [34]. Function leakConditionalNavigation has similar functionality, but it utilizes the navigation attack. Both functions use a well-known magnification technique to lift a one-bit leaking vulnerability to an n-bit leaking vulnerability.
(*) In fact, any other valid (X)HTML element could be chosen.
(**) Just for the sake of variety.