¿Cuáles son los riesgos de seguridad al usar redes de entrega de contenido (CDN) gratuitas?

12

Estaba haciendo algunas investigaciones sobre redes de entrega de contenido. Para aquellos que no lo saben, un CDN es una gran colección de servidores que almacenan en caché y sirven rápidamente contenido estático como imágenes, css, js, etc., para los usuarios finales. Los CDN pueden aumentar significativamente el rendimiento no solo almacenando en caché el contenido, sino también limitando la cantidad de saltos de red para recuperar el contenido.

Estoy considerando usar CDN gratuitos, pero me sorprendió encontrar cerca de cero artículos, blogs o foros sobre los posibles riesgos de seguridad al usarlos. ¿Cuáles son los riesgos de usar CDN gratis? ¿Cómo se mitigan esos riesgos?

    
pregunta Gilles 03.07.2012 - 22:07
fuente

2 respuestas

11

Debido a que generalmente está cargando CSS, JavaScript y gráficos de una CDN, cualquier persona con permisos de tipo raíz en los servidores CDN (es decir, la compañía que ejecuta la CDN) puede:

  • reemplace sus imágenes con otras, como pornografía u otras cosas que no desea que sus usuarios vean en su sitio web
  • reemplace su CSS para cargar dichas imágenes, desordene el diseño, etc. - para los usuarios de IE y Mozilla / Firefox, el CSS también podría causar la ejecución de código JavaScript arbitrario
  • reemplace su JavaScript para molestar a su usuario, redirija a otros sitios, posiblemente cargue un código de explotación para infectarlos con troyanos
  • (tiene problemas técnicos que hacen que los activos de su sitio se carguen mucho más lentamente de lo normal)

En definitiva, solo use un CDN en el que confíe lo suficiente como para no hacer esas cosas.

    
respondido por el ThiefMaster 04.07.2012 - 00:20
fuente
8

La respuesta de @ ThiefMaster hace un gran trabajo al enumerar los riesgos de usar un Contenido controlado externamente, que básicamente corresponde a la categoría de ejecutar o mostrar código y contenido arbitrario en el navegador de un usuario.

Me centraré principalmente en su última pregunta: How are those risk mitigated? que no se ha abordado: desde entonces han cambiado muchas cosas (en 4 años).

La defensa principal cuando se incluyen recursos externos de un CDN es usar Integridad del sub-recurso (SRI) . SRI extiende dos elementos HTML con un atributo de integridad que contiene un hash criptográfico de la representación del recurso que el autor espera cargar. Específicamente, estos son los elementos <script> y <link> , comúnmente utilizados para incluir Javascript y CSS de terceros respectivamente.

Ejemplos:

CSS:

  

< link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" integra="gota de las cosas que se encuentran en el lugar de juego. "anónimo" >

JS:

  

< script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js"integridad="SHA384-vZ2WRJMwsjRMW / 8U7i6PWi6AlO1L79snBrmgiDpgIWJ82z8eA5lenwvxbMV1PAh7" crossorigin="anónimo ">

Se pueden usar uno o varios hashes, generalmente generados con openssl con codificación base64. Un navegador usa el "más fuerte" que admite.

Ahora se admite de Chrome y de Firefox .

Cuando estos navegadores encuentran un elemento protegido por SRI, calculan el resumen y devuelven un error de red si no coincide con el resultado esperado. Para protegerse contra una actualización en un CDN, se pueden configurar failovers , ya sea a otros CDN o a su propio servidor.

Otra defensa que puedes observar arriba es el uso del atributo crossorigin="anonymous" . Esto evita que su navegador envíe cookies a la CDN, evitando así que Fugas de CORS con un efecto secundario de reducir el tamaño de la solicitud.

Finalmente, se puede encontrar un beneficio muy leve al establecer un Content-Security-Policy restrictivo que limita la superficie de ataque solo a la CDN, de manera que incluso si una CDN vulnerable fue infectada por un archivo JS diferente, no podrá hacerlo directamente. para acceder a los datos (aunque podría hacerlo a través de la CDN).

Aparte de los diversos enlaces anteriores, otra referencia útil es este artículo de Mozilla Hacks .

    
respondido por el Jedi 12.07.2016 - 06:50
fuente

Lea otras preguntas en las etiquetas