¿Qué es, CSP (Content Security Policy)?

Política de Seguridad de Contenidos

En esta sección, explicaremos qué es la política de seguridad de contenido y describiremos cómo se puede utilizar CSP para mitigar algunos ataques comunes.

¿Qué es CSP (Content Security Policy)?

CSP es un mecanismo de seguridad del navegador que tiene como objetivo mitigar XSS y algunos otros ataques. Funciona restringiendo los recursos (como scripts e imágenes) que una página puede cargar y restringiendo si una página puede estar enmarcada por otras páginas.

Para habilitar CSP, una respuesta debe incluir un encabezado de respuesta HTTP llamado Content-Security-Policy con un valor que contenga la política. La política en sí consta de una o más directivas, separadas por punto y coma.

Escaneo DAST automatizado sin límites. Basado en la tecnología Burp en la que sus equipos de seguridad ya confían. ..

Conocer…

Mitigar ataques XSS usando CSP

La siguiente directiva solo permitirá que se carguen scripts desde el mismo origen que la página misma:

				
					script-src 'self'
				
			

La siguiente directiva solo permitirá que se carguen scripts desde un dominio específico:

				
					script-src https://scripts.normal-website.com
				
			

Se debe tener cuidado al permitir scripts de dominios externos. Si hay alguna forma de que un atacante controle el contenido que se ofrece desde el dominio externo, entonces podría realizar un ataque. Por ejemplo, no se debe confiar en las redes de entrega de contenido (CDN) que no utilizan URL por cliente, como ajax.googleapis.com, porque terceros pueden obtener contenido en sus dominios.

Además de incluir dominios específicos en la lista blanca, la política de seguridad de contenido también proporciona otras dos formas de especificar recursos confiables: nonces y hashes:

  • La directiva CSP puede especificar un nonce (un valor aleatorio) y se debe usar el mismo valor en la etiqueta que carga un script. Si los valores no coinciden, el script no se ejecutará. Para que sea eficaz como control, el nonce debe generarse de forma segura en cada carga de página y no debe ser adivinado por un atacante.
  • La directiva CSP puede especificar un hash del contenido del script confiable. Si el hash del script real no coincide con el valor especificado en la directiva, el script no se ejecutará. Si el contenido del script alguna vez cambia, entonces, por supuesto, necesitará actualizar el valor hash especificado en la directiva.

Es bastante común que un CSP bloquee recursos como script. Sin embargo, muchos CSP permiten solicitudes de imágenes. Esto significa que a menudo puede utilizar imgelementos para realizar solicitudes a servidores externos con el fin de revelar tokens CSRF , por ejemplo.

Algunos navegadores, como Chrome, tienen una mitigación de marcado colgante incorporada que bloqueará las solicitudes que contengan ciertos caracteres, como líneas nuevas sin codificar o corchetes angulares.

Algunas políticas son más restrictivas e impiden todo tipo de solicitudes externas. Sin embargo, aún es posible sortear estas restricciones provocando cierta interacción del usuario . Para evitar esta forma de política, debe inyectar un elemento HTML que, al hacer clic, almacenará y enviará todo lo incluido en el elemento inyectado a un servidor externo.

Mitigación de ataques a marcas colgantes mediante CSP

La siguiente directiva solo permitirá cargar imágenes desde el mismo origen que la página misma:

				
					img-src 'self'
				
			

La siguiente directiva solo permitirá cargar imágenes desde un dominio específico:

				
					img-src https://images.normal-website.com
				
			

Tenga en cuenta que estas políticas evitarán algunas vulnerabilidades de marcado, porque una manera fácil de capturar datos sin interacción del usuario es usar una img etiqueta. Sin embargo, no impedirá otros exploits, como aquellos que inyectan una etiqueta de anclaje con un href atributo colgante.

Evitar CSP con inyección de políticas

Es posible que encuentre un sitio web que refleje los aportes a la política real, probablemente en una report-uridirectiva. Si el sitio refleja un parámetro que puede controlar, puede insertar un punto y coma para agregar sus propias directivas CSP. Normalmente, esta report-uridirectiva es la última de la lista. Esto significa que deberá sobrescribir las directivas existentes para aprovechar esta vulnerabilidad y eludir la política.

Normalmente, no es posible sobrescribir una script-srcdirectiva existente. Sin embargo, Chrome introdujo recientemente la script-src-elem directiva que le permite controlar script elementos, pero no eventos. Fundamentalmente, esta nueva directiva le permite sobrescribir directivas existentesscript-src. Con este conocimiento, debería poder resolver la siguiente práctica de laboratorio.

Protección contra clickjacking mediante CSP

La siguiente directiva sólo permitirá que la página esté enmarcada por otras páginas del mismo origen:

				
					frame-ancestors 'self'
				
			

NORTH NETWORKS es Distribuidor Oficial, brinda licencias nuevas y renovaciones a nivel empresarial.

Pongase en contacto y le ayudaremos a analizar sus requerimientos para poder brindarle la herramienta que mejor se ajuste a sus proyectos.

La siguiente directiva impedirá por completo el enmarcado:

				
					frame-ancestors 'none'
				
			

Usar la política de seguridad de contenido para evitar el clickjacking es más flexible que usar el encabezado X-Frame-Options porque puede especificar múltiples dominios y usar comodines. Por ejemplo:

				
					frame-ancestors 'self' https://normal-website.com https://*.robust-website.com
				
			

CSP también valida cada marco en la jerarquía de marcos principal, mientras que X-Frame-Optionssolo valida el marco de nivel superior.

Se recomienda utilizar CSP para protegerse contra ataques de clickjacking. También puede combinar esto con el X-Frame-Optionsencabezado para brindar protección en navegadores más antiguos que no admiten CSP, como Internet Explorer.

Si te ha gustado, ¡compártelo con tus amigos!

Scroll al inicio

Portal de Clientes