Ciberseguridad

Cómo funciona un ciberataque y qué hacer para evitarlo

03/11/18

Este año a Facebook le robaron información de unos 50 millones de usuarios aprovechando una vulnerabilidad en el código de la aplicación. En el año 2017 también fue muy sonado el ransomware WannaCry, que permite atacar a todos aquellos equipos Windows que no tienen actualizado el Sistema Operativo, encriptando los datos del equipo y solicitando un rescate económico para recuperarlos.

 

Si nos vamos un poco más lejos otro de los ciberataques más sonados fue el de HeartBleed, un agujero de seguridad en una biblioteca openSource llamada OpenSSL que permitió conseguir claves privadas SSL de un servidor.

La ciberseguridad está al orden del día, ¿cómo son posibles estos ciberataques?. La respuesta es más sencilla de lo que parece: los hackers se aprovechan de vulnerabilidades en los sistemas informáticos o del engaño a las personas, de modo que consiguen que hagan algo por ellos y así conseguir el acceso al robo de datos.

¿Qué es una vulnerabilidad?

Según la Real Academia de la Lengua Española es la cualidad de vulnerable, esto es: “Que puede ser herido o recibir lesión, física o moralmente”.
En un sistema informático hay dos ejemplos típicos de vulnerabilidades:

  • Dejar un puerto abierto: las aplicaciones que consumimos en internet ofrecen sus servicios de forma pública a través de un servidor web, que por defecto escucha peticiones por el puerto 80. Si no controlamos correctamente las peticiones desde un navegador a este puerto podemos acabar sufriendo de ataques DoS (Denegación de servicio).
  • No validar los caracteres de un formulario de recogida de datos: imagina un formulario de login de usuario a una web donde nos piden usuario y contraseña. Si no validamos y limitamos los caracteres que se pueden introducir en esas cajas de texto podemos acabar sufriendo ataques XSS (Cross site Scripting).

¿Cómo me puedo defender ante ciberataques?

La primera premisa para la protección es la desconfianza: si te llega un email con una dirección que no conoces, no hagas clic en ningún enlace de los que haya dentro de ese email, probablemente es un email de phishing. Además, no olvides reportarlo para que tu empresa pueda tomar las medidas necesarias.
 
A la hora de desarrollar una aplicación, hay 4 factores clave que debes tener en cuenta:

  1. Requisitos seguros
  2. Imagina una aplicación para una sucursal bancaria, que permite el acceso a distintos usuarios y que cada uno de ellos tiene un rol distinto dentro de la sucursal. Uno de nuestros requisitos será un perfilado de usuarios, que permita separar el acceso a información confidencial sólo a ciertos roles. Imagina que esa misma aplicación debe almacenar datos de un cliente. Esto implica cumplir con la normativa europea GDPR y nuestro requisito seguro será el de encriptar y el de seudonimización de la información personal de ese cliente.

  3. Diseño de una aplicación seguro
  4. Siguiendo con nuestra aplicación, este factor incluiría que su diseño fuera de forma robusta y que no sea atacable. Si nuestra aplicación debe tener la funcionalidad de login de usuarios, deberemos diseñarla de forma que no permita hacer más de 3 intentos; deberemos diseñarla también para que en ese caso no se muestre un mensaje de error del tipo “Contraseña no válida” puesto que estaríamos dando pistas a un usuario malicioso de que nuestro usuario existe y podría conseguir acceder al sistema a base de fuerza bruta. Un mensaje de error válido sería “Credenciales inválidas”, para que el atacante no tenga pistas si lo que ha fallado ha sido el usuario o la contraseña.

  5. Uso de librerías seguras
  6. Según Forrester y Gartner, entre el 80% y el 90% de todos los desarrolladores de software comercial usan componentes de código abierto dentro de sus aplicaciones. Sonatype estima que hasta el 90% de una aplicación consta de componentes de terceros. Usemos las más seguras en nuestros desarrollos. Imagina que queremos ahorrar tiempo y coste en el desarrollo y usamos una librería para la funcionalidad de generar reportes en formato Excel o Pdf. Con esa librería conseguimos hacer el desarrollo en apenas 2 semanas, pero no hemos comprobado las vulnerabilidades públicas que tiene esa librería. Si hubiéramos elegido una versión superior de esa librería habríamos evitado tener vulnerabilidades públicas.

  7. Desarrollo seguro
  8. Desarrollemos de forma segura, por ejemplo validando caracteres en un formulario con datos de entrada a la aplicación, de forma que no puedan inyectarnos código en la aplicación con ataques XSS.
    En el caso de que no hagamos validaciones de caracteres no permitidos, si el atacante prueba con el usuario “joan” y la password “R4driguez” no pasaría nada, pero si prueba con el usuario “joan” y la password “’ or 1=1 –” sería posible que, accediendo a la base de datos de usuarios en el back-end, se lanzase una excepción que se propagase hacia atrás, llegando a la interfaz de usuario. El mensaje de error daría mucha información al usuario malicioso sobre la base de datos que tenemos.

Por último, os dejamos unos sitios donde podéis ver vulnerabilidades en librerías:

Organismos no gubernamentales:

  • OWASP: todos los años hace un Top 10 de las vulnerabilidades más encontradas

Organismos gubernamentales:

  • NIST : podéis acceder a su base de datos desde la web CVE

Autor: Joan Rodriguez

 

Santander Global Tech

 

Otros posts