¿Tu web es segura? Tips para mejorar la seguridad

Hoy en día casi todas las empresas tienen una página web para ofrecer sus productos o servicios, promocionarse, o simplemente para tener una forma para que la gente les contacte.

Aunque doy por hecho que todos los lectores de esta entrada que administran una página web usan el protocolo HTTPS (y si no, ya estáis tardando), existen otros muchos factores a tener en cuenta para mejorar la seguridad del sitio web y que en muchas ocasiones ni siquiera se tienen en cuenta, y aunque por si mismos no suponen vulnerabilidades graves sí que pueden usarse en conjunto de otros ataques más sofisticados para conseguir mejores resultados.

El WAF no es tu único amigoResultado de imagen de waf meme

No voy a negar que tener un WAF (Web Application Firewall) es importante para evitar una gran cantidad de ataques a través de una serie de reglas precargadas. Sin embargo, hay que tener siempre presente que no toda la seguridad de la página web debe basarse tan sólo en el WAF, ya que si éste se encuentra configurado por defecto o es la única defensa usada en el sitio web, únicamente podrá detectar algunos de los ataques más conocidos pero no será capaz de detectar ataques más sofisticados. Además, existen formas de evadir un WAF… pero eso ya lo veremos en futuras entradas.

Con las cookies no se juega

Securizar las cookies es un paso importante ya que éstas se usan principalmente para autenticación y para mantener la sesión activa y por tanto si un atacante es capaz de robarlas podría usarlas para impersonalizar a un Resultado de imagen de cookies memeusuario legítimo y acceder a una parte autenticada de la página. Es por ello que cobran mucha importancia el uso de algunos atributos como HttpOnly, Secure, Domain, Path y Expires para asegurar las cookies.

Al usar el atributo Secure, la cookie tan solo podrá ser enviada a través de un protocolo seguro como HTTPS, por lo que se evitaría que un atacante pudiera capturarla escuchando la comunicación (sniffing). Cabe destacar que un atacante no podría obtener la cookie de este modo, pero sin embargo podría usar distintos ataques para obtenerla, por ejemplo, mediante un ataque Cross-Site Scripting (XSS). Para evitar estos casos también debe usarse la cabecera HttpOnly, gracias a la cual se evita que la cookie pueda obtenerse a través de JavaScript (o en general cualquier script ejecutado en el lado del cliente) en el caso de un ataque XSS.

El resto de atributos mencionados son también importantes ya que sirven para indicar el dominio y la ruta en el que la cookie es válida, y para crear persistencia en la sesión en el caso de Expires, es decir, indicar por cuanto tiempo será válida una cookie. En este último caso es importante asegurarse que las cookies persistentes no contengan en ningún caso información sensible ni una validez demasiado alta.

Cabeceras en acción

HSTS

Si tienes HTTPS en tu página web no debe faltar en ella la cabecera HTTP Strict Transport Security (HSTS), ya que fuerza al navegador a que todas las comunicaciones vayan sólo a través de HTTPS, por lo que esta cabecera ayuda a prevenir ataques de downgrade en TLS. En el caso de que no se hiciera este forzado, cuando el cliente haga la primera conexión al servidor, el atacante podría manipular todo el tráfico de modo que éste no vaya cifrado (básicamente un MiTM).
Esta técnica es muy simple de usar, ya que tan solo sería necesario que el servidor envíe esta cabecera para indicarle al cliente que en futuras ocasiones debe hacerlo solo a través de HTTPS, junto a una fecha de expiración (max-age) que indicará durante cuanto tiempo tendrá que acceder a través de HTTPS.

HPKP

En cuanto a HTTP Public Key Pinning (HPKP), es una cabecera que el servidor envía con las claves públicas válidas para el sitio web durante un determinado periodo de tiempo. En caso de detectar un cambio de la clave pública del sitio al que se está accediendo, el navegador cortará la comunicación para evitar ataques de MiTM.
Sin embargo, aunque esta cabecera ayuda a mejorar la seguridad del sitio web, existen varios problemas asociados a su uso, como por ejemplo:

En caso de perder las claves el sitio quedaría inaccesible y además no es trivial a la hora de configuralo. Sin duda, estas son algunas de las razones por las que en Octubre del 2017 Google lo declaró obsoleto en su navegador.

A pesar de esto último, mi recomendación es que, si es posible, siempre se usen tanto HPKP como HSTS ya que dificultan en gran medida los ataques MiTM, aunque por supuesto existan formas de burlar estas protecciones en los navegadores como se ha visto en las recientes charlas de la Blackhat y la rootedCON, aunque nunca está de más ponérselo más difícil a los malos.

Rizando el rizo para evitar otros ataques

Para finalizar esta serie de tips, mencionar que existen algunas cabeceras de HTTP que sirven para evitar (o al menos complicar) algunos ataques, por lo que nunca está de más usarlas.

Una de estas cabeceras es X-FRAME-OPTIONS, que en caso de incluirla sirve para impedir que la página se abra en un iframe, por lo que pueden evitarse ataques de Clickjacking.
Por su parte, la cabecera X-XSS-Protection se usa para activar el filtro anti ataques XSS que algunos navegadores tienen. Tampoco deben olvidarse las cabeceras X-Csrf-Token, para evitar ataques Cross-Site request forgery, y X-Content-Type-Option, que previene a los navegadores capturas el contenido MIME.

 

Escríbenos!

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *