Los archivos SVG son susceptibles de billones de risas . Nuestro sitio web permite a los usuarios cargar / enviar archivos de rebajas y ejecutamos el archivo .md a través de marked.js antes de representarlo. Ahora las imágenes en el markdown se renderizan como,
<img src="https://evilsite.com/badsvg.svg"/>
enlapáginaweb.Losnavegadoresevitaránqueseejecute<script>
enbadsvg.svg
.
Ahoraevilsite.com
puedeservirabadsvg.svg
quecontienemilesdemillonesderisasdecargaútil.Asíescomolomanejanlosdiferentesnavegadores,
Edge/IE:nosehavistoafectado,yaquetieneunlímiteenlaexpansióndelaentidad(puedeverloenlosregistrosdelaconsola)
Firefox:tambiénparecetenerunlímiteenlaexpansióndelaentidad
Chrome:sinlímites,intentaexpandirtodaslasentidadesy,finalmente,sequedasinmemoriaynohaymásopciónquecerrar/eliminarlapestaña
EsteerrorrelacionadoenChromeestabamarcadocomo"no se corrige" - enlace
Este es el DOS del lado del cliente y el sitio básicamente se vuelve inutilizable para cualquier usuario en Chrome. ¿Cómo sugieres que evitemos este tipo de ataque? No permitir que los usuarios hagan referencia a recursos de dominios externos parece una medida extrema.