javascript - remediation - xss prevent
¿Qué son las "matrices JSON de nivel superior" y por qué son un riesgo para la seguridad? (2)
En el siguiente video, en el marcador de tiempo 21:40, el presentador de Microsoft PDC dice que es importante que todos los JSON se envuelvan para que no sea una matriz de nivel superior:
https://channel9.msdn.com/Events/PDC/PDC09/FT12
¿Cuál es el riesgo de una matriz de nivel superior sin envolver?
¿Cómo debo verificar y ver si soy vulnerable? Compro muchos componentes de terceros y tengo proveedores externos que desarrollan mi código.
Creo que es porque el constructor de Array () se puede redefinir. Sin embargo, ese problema no es realmente exclusivo de las matrices.
Creo que el ataque (o una forma posible) es algo como esto:
function Array(n) {
var self = this;
setTimeout(function() {
sendToEvilHackers(self);
}, 10);
return this;
}
El navegador (o algunos navegadores) usan ese constructor para la notación de matriz [n, n, n]
. Por lo tanto, un ataque CSRF puede explotar su sesión abierta con su banco, acceder a una URL JSON conocida con una etiqueta <script>
para recuperarla y luego ser dueño de la cuenta.
Esto se debe a que hace unos años Jeremiah Grossman encontró una vulnerabilidad muy interesante que afecta a Gmail . Algunas personas han abordado esta vulnerabilidad mediante el uso de un crumble no extraíble (la descripción técnica de Mr Bobince en esta página es fantástica).
La razón por la cual Microsoft está hablando de esto es porque aún no han parcheado su navegador. ( Editar: Las versiones recientes de Edge e IE 10/11 han abordado este problema.) Mozilla considera que esto es una vulnerabilidad en la especificación json y, por lo tanto, lo parchearon en Firefox 3 . Para el registro, estoy totalmente de acuerdo con Mozilla, y su desafortunado pero cada desarrollador de aplicaciones web tendrá que defenderse de esta vulnerabilidad tan oscura.