Ataques de code-reuse en la web via #CCS17

Aunque parezca mentira, las vulnerabilidades de cross-site scripting (XSS) son un problema bastante recurrente en la web a pesar de que fue publicamente documentado en el 2000. Estos ataques permiten que una persona completamente ajena a una determinada página web logre inyectar y ejecutar código no autorizado por los propios desarrolladores de la misma. Durante estos años han surgido varias defensas que ayudan a reducir de una forma u otra los problemas de seguridad que podian causar. Principalmente encontramos los siguientes: (i) sanitizadores de HTML, (ii) filtros XSS en navegadores, (iii) web application firewalls y (iv) content security policy (CSP).

Investigadores de Google y SAP han presentado en CCS (ACM Conference on Computer and Communications Security) un novedoso método a traves del cual son capaces de saltarse todas esas protecciones y lograr una ejecución controlada. La idea se basa en abusar de los llamados script gadgets (código JavaScript legitimo dentro de la propia aplicación). Generalmente, estos gadgets son selectores DOM que interactuan con diferentes elementos de la página. Por tanto, partiendo de un punto de injección inicial, un atacante puede introducir código HTML con apariencia benigna que es ignorado por los métodos de protección previamente indicandos, pero que lograrían desencadenar la ejecución de código no controlado gracias a los gadgets. Pongamos un ejemplo:

<div id="button" data-text="I am a button"></div>
<script>
var button = document.getElementById("button");
button.innerHTML = button.getAttribute("data-text");
</script>

En este caso, se puede ver cómo el attributo ‘data-text’ acaba siendo incluido sin ningún tipo de control. Por tanto, simplemente introduciendo una imagen svg con un onload, se podría llegar a ejecutar código.

<div id="button"
data-text="&lt;svg onload=exploit()&gt;">
</div>

Los investigadores analizaron este tipo de problemas en los 16 frameworks más populares de JavaScript, y mostraron cómo varios de ellos tenían gadgets que permitían saltarse alguna de las protecciones propuestas. También comprobaron su existencia en algunas de las páginas más visitadas (5000) y cómo un alto porcentaje de ellas era vulnerable en alguna medida a este tipo de ataques.

Stephen Falken
Acerca de
Maker of W.O.P.R. (AKA Joshua)
Expertise: Artificial Intelligence, Wargames, Supercomputers