¿Por qué es tan vulnerable el software y qué se puede hacer?

The weaknesses hackers exploit aren’t broken windowpanes or rusty hinges.Image: REUTERS/Kacper Pempel
Este contenido ha sido traducido automáticamente con IA.

El reciente ataque de ransomware WannaCry se propagó como la pólvora y aprovechó fallos del sistema operativo Windows para tomar el control de cientos de miles de ordenadores en todo el mundo Pero ¿qué significa exactamente eso?

Puede ser útil pensar en los hackers como ladrones y en el software malicioso como sus herramientas para robar. Tras investigar durante más de una década la ciberdelincuencia y el uso de la tecnología entre poblaciones criminales, sé que ambos tipos de delincuentes buscan formas de entrar en lugares seguros: ordenadores y redes, así como hogares y empresas. Tienen varias opciones para lograrlo.

Algunos ladrones pueden optar por simplemente romper una ventana o una puerta con una palanca, mientras que otros pueden ser más sigilosos e intentar forzar una cerradura o colarse por una puerta que se haya quedado abierta. Los hackers actúan de forma parecida, aunque tienen más posibles puntos de entrada que un ladrón, que normalmente depende de ventanas o puertas.

Las debilidades que aprovechan los hackers no son cristales rotos ni bisagras oxidadas. Son fallos en los programas de software que se ejecutan en un ordenador. Los programas los escriben personas y, por naturaleza, son imperfectos. Nadie escribe software completamente libre de errores que puedan abrir la puerta a posibles atacantes.

Image: Foro Económico Mundial

¿Qué son realmente estos fallos?

En términos sencillos, una vulnerabilidad puede ser un error en la forma en que se gestiona a los usuarios en el sistema, un error en el código o un fallo en la manera en que responde a determinadas solicitudes. Una vulnerabilidad común permite un ataque llamado inyección SQL. Funciona en sitios web que consultan bases de datos, por ejemplo, para buscar palabras clave. Un atacante crea una consulta que contiene código en un lenguaje de programación de bases de datos llamado SQL.

Si un sitio no está debidamente protegido, su función de búsqueda ejecutará los comandos SQL, lo que puede permitir al atacante acceder a la base de datos y, potencialmente, controlar el sitio web.

Del mismo modo, muchas personas usan programas compatibles con el lenguaje de programación Java, como Adobe Flash Player y diversas aplicaciones de Android. Hay numerosas vulnerabilidades en la plataforma Java, que pueden aprovecharse de distintas maneras, aunque lo más habitual es inducir a las personas a descargar «complementos» o «códecs» para el software. En realidad, estos complementos contienen código malicioso que aprovecha la vulnerabilidad y pone en peligro el equipo.

Los fallos están por todas partes

Hay vulnerabilidades en todo tipo de software. Varias versiones del sistema operativo Microsoft Windows eran vulnerables al ataque WannaCry. Por ejemplo, el popular navegador web de código abierto Firefox ha tenido más de 100 vulnerabilidades identificadas en su código cada año desde 2009. Se han identificado quince vulnerabilidades diferentes en las distintas versiones del navegador Microsoft Internet Explorer desde principios de 2017.

El desarrollo de software no es un proceso perfecto. A menudo, los programadores trabajan con plazos fijados por equipos directivos que intentan establecer objetivos razonables, aunque cumplir esos plazos puede ser un desafío. Por ello, los desarrolladores hacen todo lo posible por diseñar productos seguros durante el proceso, pero quizá no logren identificar todos los fallos antes de la fecha de lanzamiento prevista. Los retrasos pueden resultar costosos; muchas empresas lanzan una versión inicial de un producto y luego, cuando encuentran problemas (o reciben informes de usuarios o investigadores), los corrigen publicando actualizaciones de seguridad, a veces llamadas parches porque tapan los agujeros.

Pero las empresas de software no pueden dar soporte a sus productos para siempre: para seguir en el negocio, tienen que continuar mejorando los programas y vendiendo copias de las versiones actualizadas. Así que, transcurrido cierto tiempo, dejan de publicar parches para los programas más antiguos.

Sin embargo, no todos los clientes compran el software más reciente, por lo que muchos usuarios siguen utilizando programas antiguos que podrían tener fallos sin corregir. Esto da a los atacantes la oportunidad de encontrar debilidades en el software antiguo, aunque las versiones más recientes no tengan los mismos fallos.

Aprovechar las debilidades

Cuando un atacante identifica una vulnerabilidad, puede escribir un nuevo programa informático que aproveche esa oportunidad para entrar en un equipo y tomar su control. En este sentido, un exploit es parecido a las herramientas que utilizan los ladrones, como palancas, ganzúas u otros medios para entrar en un lugar físico.

Encuentran un punto débil en las defensas del sistema, quizá una conexión de red que no se ha protegido debidamente. Si los atacantes consiguen establecer contacto con un ordenador objetivo, pueden averiguar qué tipo de sistema es. Eso les permite identificar métodos concretos —como acceder a determinados archivos o ejecutar ciertos programas— que les dan cada vez más control sobre el equipo y sus datos. En los últimos años, los atacantes comenzaron a dirigirse contra los navegadores web, que pueden conectarse a internet y a menudo ejecutar pequeños programas; estos presentan muchas vulnerabilidades que pueden aprovecharse. Esos puntos de entrada iniciales pueden dar a un atacante el control de un ordenador objetivo, que a su vez puede servir como punto de intrusión en una red sensible de mayor tamaño.

A veces, las vulnerabilidades las descubren los propios desarrolladores del software, o bien usuarios o investigadores que avisan a la empresa de que hace falta una solución. Pero otras veces, los hackers o las agencias de espionaje gubernamentales descubren cómo entrar en los sistemas y no se lo dicen a la empresa. Estas debilidades se llaman «días cero» porque el desarrollador no ha tenido tiempo de corregirlas. Como resultado, el software o el hardware queda comprometido hasta que se puede crear una solución o un parche y distribuirlo a los usuarios.

La mejor manera de que los usuarios se protejan es instalar periódicamente las actualizaciones de software, tan pronto como estén disponibles.

Licencia y republicación
Los artículos del Foro Económico Mundial pueden volver a publicarse de acuerdo con la Licencia Pública Internacional Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0, y de acuerdo con nuestras condiciones de uso. Las opiniones expresadas en este artículo son las del autor y no del Foro Económico Mundial.