Investigadores de la Universidad de Nueva York (EE. UU.) han desarrollado un nuevo enfoque para garantizar la ciberseguridad de un software. Imitando una estrategia militar antirradar, proponen introducir errores de código benignos para impedir ataques dirigidos
Cuando se trata de seguimiento por radar, una de las contramedidas más efectivas consiste en lanzar una nube de tiras de aluminio o plástico metalizado, que crean un reflejo fuerte hacia el radar y generan miles de objetivos que saturan y confunden sus respuestas. Eso desconcierta a cualquier cosa que intente seguirle, como por ejemplo a un misil guiado por radar.
La mayoría de los aviones militares y buques de guerra, y muchos misiles balísticos, cuentan con medidas antirradar. Ahora los investigadores de ciberseguridad aplican la misma idea al software.
Resulta sencillo, en principio. Un software a menudo contiene errores, y la mayoría de ellos pasan desapercibidos para sus creadores y usuarios legítimos. Pero agentes maliciosos buscan activamente estos errores para aprovecharlos en ataques dirigidos. Su objetivo es tomar el control del ordenador o manipularlo.
Pero no todos los fallos son iguales. Algunos no se pueden explotar para fines malévolos, pero son capaces de provocar el desplome de un programa. Esto puede resultar grave, pero existe una gran variedad de software, como microservicios de fondo, diseñados para manejar desplomes reiniciando el software. Estos errores son mucho menos graves que los que permiten el control malintencionado.
Sin embargo, distinguirlos no siempre es sencillo. Cuando los programadores maliciosos encuentran los fallos, tienen que diferenciar los realmente peligrosos de aquellos relativamente benignos, y ese proceso generalmente resulta difícil y lleva mucho tiempo.
Eso representa la base de un nuevo enfoque desarrollado por Zhenghao Hu y sus colegas en la Universidad de Nueva York (EE. UU.). ¿Por qué no llenamos un código ordinario con errores benignos como una manera de engañar a los posibles atacantes?
Esta idea sugiere forzar a los asaltantes a agotar sus recursos encontrando y probando los fallos que no les servirían. Hu y sus compañeros llaman a estos señuelos "fallos antirradar", por analogía a las tiras de aluminio utilizadas para engañar a los operadores de radar.
Este plan es el último paso en el cada vez más complejo juego del gato y el ratón que enfrenta a los expertos en seguridad con los atacantes. En los últimos años, varios grupos han desarrollado programas que buscan a través de códigos las vulnerabilidades que un asaltante podría explotar (Ver El hacker que gana 250.000 dólares al año por encontrar errores de software) . Los técnicos de seguridad utilizan este enfoque para encontrar y eliminar estas debilidades antes de que el código se haga público, mientras que los hackers malintencionados usan el mismo enfoque para localizar los errores que quisieran aprovechar.
No obstante, el desarrollo de estos programas para los investigadores de seguridad resulta difícil y requiere que, en primer lugar, haya vulnerabilidades en el software. Por eso, han desarrollado otra herramienta que automáticamente agrega estos fallos al software para que luego sean "descubiertos" por el programa de detección de vulnerabilidades.
Resulta que añadir errores no es nada fácil. Los cambios aleatorios en el código suelen convertirlo en inservible, en vez de introducir anomalías interesantes. En cambio, el proceso implica ejecutar el código con diferentes entradas de datos y supervisar lo que ocurre con ellos a medida que el código avanza.
Este proceso busca puntos en el programa donde la entrada de datos ya no se usa para tomar decisiones. En ese caso, esta entrada inactiva se podría manipular maliciosamente para corromper o desbordar la memoria.
El programa de detección de vulnerabilidades señala dónde están estas zonas muertas para poder explotarlas más adelante.
Parece que estos posibles errores son comunes en el código escrito en lenguajes como C y C ++, que no disponen de sistemas de supervisión del uso de la memoria.
Hu y su equipo simplemente utilizan este enfoque para añadir los fallos de corrupción de memoria a través del código. En circunstancias normales, estos errores son benignos. Pero si un agente malicioso los encuentra, solo los podría explotar para bloquear el programa, no para algo más siniestro. Es por eso que actúan como contramedida.
"Los atacantes que intentan descubrir y aprovechar los errores en un software encontrarán, con alta probabilidad, alguno de ellos no explotable, intencionalmente colocado, y desperdiciarán valiosos recursos en tratar de construir algo que funcione", comentan Hu y sus compañeros.
El equipo continúa manifestando que este enfoque engaña a los procesos actuales de detección de posibles errores. "Señalamos que no se perjudica la funcionalidad del software y demostramos que nuestros fallos parecen aprovechables para las herramientas de triaje vigentes", sostienen.
Se trata de un enfoque interesante que tiene el potencial de frenar bastante a los atacantes maliciosos. "Creemos que los fallos antirradar pueden servir como un elemento de disuasión eficaz contra los asaltantes tanto humanos como automáticos de sistemas de razonamiento automático (Cyber Reasoning Systems)", cuentan Hu y sus colegas.
Pero también plantea algunas cuestiones curiosas. Por ejemplo, no existe una prueba real de que la búsqueda de errores para encontrar los aprovechables sea necesariamente difícil y lleve mucho tiempo. En teoría resulta posible que alguien, en alguna parte, haya encontrado una forma rápida de hacerlo.
Si existe una manera de distinguir fácilmente los fallos antirradar de los explotables, entonces este enfoque se vuelve menos valioso. De hecho, Hu y sus compañeros no intentan ocultar o disfrazar sus errores. "Esto significa que actualmente contienen muchos objetos que los atacantes podrían usar para identificarlos e ignorarlos", afirman.
Además, estos errores inyectados varían muy poco. "[Esto] permitiría a un atacante a identificar patrones en los errores que producimos y excluir aquellos que coinciden", mantienen.
Pero existe un gran potencial por delante. La idea de añadir los errores en lugar de eliminarlos es un enfoque atractivo contra los delitos cibernéticos, y que generará algunas interesantes posibilidades para futuras investigaciones.
Ref: arxiv.org/abs/1808.00659: Chaff Bugs: Deterring Attackers by Making Software Buggier