Por qué agregar errores al software puede hacerlo más seguro

Cuando se trata de rastreo por radar, una de las contramedidas más efectivas es liberar una nube de tiras de aluminio o plástico metalizado. Estos reflejan fuertemente el radar y crean miles de objetivos, que inundan y confunden los retornos del radar. Eso confunde cualquier cosa que intente rastrearte, como un misil guiado por radar.





La mayoría de los aviones y buques de guerra militares, y muchos misiles balísticos, tienen sistemas de señuelo que incluyen paja. Y ahora los investigadores de ciberseguridad están aplicando la misma idea al software.

La idea es simple en principio. El software a menudo contiene errores, la mayoría de los cuales pasan desapercibidos para sus creadores y para los usuarios legítimos. Pero los actores malintencionados buscan activamente estos errores para poder explotarlos en ataques dirigidos. Su objetivo es apoderarse de la computadora o manipularla de otra manera.

Pero no todos los errores son iguales. Algunos no pueden explotarse con fines maliciosos y no hacen nada peor que hacer que un programa se bloquee. Esto puede ser grave, pero hay una gran clase de software, como los microservicios en segundo plano, que está diseñado para manejar los bloqueos con gracia al reiniciar el software mientras el usuario no es consciente. Estos errores son mucho menos graves que los que permiten el control malicioso.



Pero diferenciarlos no siempre es sencillo. Después de que los codificadores malintencionados encuentran errores, tienen que distinguir los que son realmente peligrosos de los que son relativamente benignos, y ese proceso suele ser difícil y requiere mucho tiempo.

Esa es la base de un nuevo enfoque desarrollado por Zhenghao Hu y sus colegas de la Universidad de Nueva York. ¿Por qué no llenar el código ordinario con errores benignos como una forma de engañar a los posibles atacantes?

La idea es obligar a los atacantes a agotar sus recursos encontrando y probando errores que no les serán de utilidad. Hu y compañía llaman a estos señuelos chinches, en analogía con las tiras de aluminio que se utilizan para engañar a los operadores de radar.



La idea es solo el último movimiento en un juego cada vez más complejo del gato y el ratón que enfrenta a los expertos en seguridad contra los atacantes. En los últimos años, varios grupos han desarrollado programas que buscan en el código vulnerabilidades que un atacante podría aprovechar. Los expertos en seguridad usan este enfoque para encontrar y eliminar estas vulnerabilidades antes de que el código se haga público, mientras que los atacantes malintencionados usan el mismo enfoque para encontrar errores que puedan explotar.

Pero para los investigadores de seguridad, desarrollar estos programas es difícil y requiere que existan vulnerabilidades en el software en primer lugar. Entonces, los investigadores han desarrollado otra herramienta que agrega automáticamente estos errores al software para que luego puedan ser descubiertos por el programa de búsqueda de vulnerabilidades.

Resulta que agregar errores no es nada sencillo. Los cambios aleatorios en el código tienden a hacerlo inútil, en lugar de introducir anomalías interesantes. En cambio, el proceso implica ejecutar el código con diferentes entradas y monitorear lo que sucede con estas entradas a medida que avanza el código.



Este proceso busca puntos en el programa donde la entrada ya no se usa para tomar decisiones futuras. En ese caso, esta entrada inactiva puede manipularse maliciosamente para corromper o desbordar la memoria.

El programa de detección de vulnerabilidades señala dónde están estas zonas muertas para que puedan explotarse más adelante.

Resulta que estos errores potenciales son comunes en el código escrito en lenguajes como C y C++, que no tienen sistemas que supervisen el uso de la memoria.



Hu y compañía simplemente usan este enfoque para agregar errores de corrupción de memoria en todo el código. En circunstancias ordinarias, estos errores son benignos. Pero si un actor malicioso los encuentra, solo pueden explotarse para bloquear el programa, no para nada más siniestro. Por eso actúan como paja.

Los atacantes que intentan encontrar y explotar errores en el software, con alta probabilidad, encontrarán un error no explotable colocado intencionalmente y desperdiciarán valiosos recursos al intentar construir un exploit que funcione, dicen Hu y compañía.

El equipo continúa demostrando que los procesos actuales para detectar errores potenciales son engañados por este enfoque. Demostramos que la funcionalidad del software no se daña y demostramos que nuestros errores parecen explotables para las herramientas de clasificación actuales, dicen

Ese es un enfoque interesante que tiene el potencial de desviar significativamente a los atacantes maliciosos. Creemos que los errores de la paja pueden servir como un elemento disuasorio eficaz tanto contra los atacantes humanos como contra los sistemas de razonamiento cibernético automatizados, dicen Hu y compañía.

Pero también plantea algunas preguntas interesantes. Por ejemplo, no hay pruebas reales de que la clasificación de errores para encontrar los que son explotables sea necesariamente difícil y requiera mucho tiempo. Es teóricamente posible que alguien, en algún lugar, haya encontrado una forma rápida de hacerlo.

Si resulta que hay una manera de distinguir fácilmente los errores de la basura de los explotables, entonces este enfoque se vuelve menos valioso. De hecho, Hu y compañía no intentan ocultar ni disfrazar sus errores. Esto significa que actualmente contienen muchos artefactos que los atacantes podrían usar para identificarlos e ignorarlos, dicen.

También hay muy poca variación en estos errores inyectados. [Esto] podría permitir que un atacante identifique patrones en los errores que producimos y excluya aquellos que coincidan con el patrón, dicen.

Pero hay un potencial significativo por delante. La idea de agregar errores en lugar de eliminarlos es un enfoque deliciosamente malévolo para el delito cibernético, y que debería generar algunas vías interesantes de investigación futura.

Ref: arxiv.org/abs/1808.00659 : Chaff Bugs: Cómo disuadir a los atacantes haciendo que el software sea un Buggier

esconder