Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Las salidas de escape que desactivan la protección

5 tareas · 40 min · Principiante

Cada framework trae una puerta para pintar HTML crudo, y cada puerta tiene un nombre que se puede buscar. Encontrarlas es fácil; lo que exige criterio es decidir cuáles son un hallazgo. El equipo de plataforma de Turnoverde corrió la búsqueda en sus tres repositorios y te entrega los resultados, el código alrededor de cada uno y quién escribe cada dato. Se clasifica como lo haría quien tiene que cerrar la lista.

0 de 5 · 0%

Objetivo de la sala

Cada framework trae una puerta para pintar HTML crudo, y cada puerta tiene un nombre que se puede buscar. Encontrarlas es fácil; lo que exige criterio es decidir cuáles son un hallazgo. El equipo de plataforma de Turnoverde corrió la búsqueda en sus tres repositorios y te entrega los resultados, el código alrededor de cada uno y quién escribe cada dato. Se clasifica como lo haría quien tiene que cerrar la lista.

React ofrece dangerouslySetInnerHTML, que recibe un objeto con la clave __html y escribe ese texto como marcado. Vue tiene la directiva v-html; Svelte, la etiqueta {@html ...}; Angular, los métodos bypassSecurityTrust... de su servicio de saneado, que marcan un valor como revisado para que el saneador no lo toque. Todos existen por razones legítimas: un aviso legal escrito por el equipo, un ícono en SVG, contenido de un gestor interno ya sanitizado.

Hay una quinta vía que ninguna búsqueda de directivas encuentra: tomar un elemento del DOM por referencia (ref en React y Vue, ElementRef en Angular) y asignarle innerHTML a mano. Ahí el framework ni siquiera se entera; el código habla directamente con el navegador. MITRE clasifica el resultado de cualquiera de estas vías, cuando el dato es de alguien externo, como CWE-79.

Responde para continuar

¿Qué decide si un uso de `v-html` es un hallazgo?

Ver pista de ayuda

La directiva es la misma en los usos buenos y en los malos.

Abre el laboratorio. En busqueda-sumideros.txt está la salida de la búsqueda; en origen-de-datos.txt, quién escribe cada dato; en extractos.txt, el código alrededor de los resultados más dudosos. El encargo.txt define quién cuenta como usuario externo.

Empieza por la aplicación que usan los pacientes.

Responde para continuar

¿Qué archivo de la app de pacientes pinta como marcado un texto que puede escribir cualquier paciente? Escribe su nombre con la extensión.

Ver pista de ayuda

Busca el dato que el origen describe como escrito por cualquier paciente y guardado tal cual.

Recorre los ocho resultados y marca como hallazgo los que cumplen dos condiciones a la vez: el dato lo escribe un usuario externo y no pasa por un sanitizador antes de pintarse (ni en el servidor ni en el cliente). Una constante del código no es un hallazgo; tampoco un contenido interno que se sanitiza al guardar.

Responde para continuar

¿Cuántos resultados de la búsqueda pintan como marcado un dato de usuario externo sin pasar por un sanitizador?

Ver pista de ayuda

Cuenta también los de Vue y Angular, no solo los de React.

Los dos resultados de facturacion/ usan el mismo método. Uno recibe un mapa fijo de íconos que vive en el propio archivo; el otro, el cuerpo de una plantilla de correo que escribe cada consultorio. El comentario de este último explica por qué se saltó el saneador: la vista previa debía conservar los estilos en línea.

Responde para continuar

¿Qué diferencia a los dos usos de `bypassSecurityTrustHtml` en el módulo de facturación?

Ver pista de ayuda

El método solo es seguro si alguien de verdad revisó el valor.

Uno de los resultados no usa ninguna directiva ni método del framework: escribe directamente en un elemento del DOM. Su comentario da la razón (un componente de terceros que no admite componentes), y el dato que escribe lo pone el administrador de cada consultorio. Esta vía es la más fácil de pasar por alto en una revisión que solo busca las palabras del framework.

Responde para continuar

¿Qué componente escribe un dato externo en el documento por referencia, sin pasar por la plantilla del framework? Escribe su nombre con la extensión.

Ver pista de ayuda

Busca la asignación directa a innerHTML en los extractos.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad