Cómo detectar vulnerabilidades en archivos binarios con BinScope

Share this…

La explotación de vulnerabilidades en el software que actualmente utilizamos se ha convertido en una de las principales preocupaciones dentro de las organizaciones, por lo que el desarrollo seguro de aplicaciones adquiere mayor relevancia.

Actividades como análisis estáticos o dinámicos, pruebas de fuzzing y buenas prácticas aplicadas en cada una de las distintas fases de desarrollo, contribuyen a reducir las debilidades asociadas al desarrollo de software.

BinScope Binary Analyzer

En los ambientes de desarrollo una práctica considerada es la ejecución de análisis dinámicos orientados a verificar la funcionalidad del software en tiempo de ejecución. De forma específica para ambientes Windows, esto se define en la fase de verificación del proceso de desarrollo Security Development Lifecycle (SDL).

Para ello se recomienda el uso de herramientas que monitorean el comportamiento de las aplicaciones como respuesta a problemas de seguridad críticos, por ejemplo, la corrupción de memoria o los que se relacionan con los privilegios de usuario. Un programa orientado a este fin y propuesto dentro de SDL es el analizador de binarios BinScope.

Se trata de una herramienta de verificación disponible de forma gratuita, como parte del Microsoft SDL Toolset. Analiza archivos binarios para comprobar que han sido construidos en cumplimiento con los requisitos y recomendaciones plasmados en SDL. Las fases de este proceso junto con las herramientas recomendadas tienen como objetivo la creación de aplicaciones más seguras y la reducción de los costos asociados a dichos desarrollos.

Archivos binarios y bibliotecas de vínculos dinámicos

BinScope puede ser utilizado para archivos binarios, es decir, aquellos que pueden almacenar cualquier tipo de información y que por lo tanto no puede ser interpretada por un procesador de texto. Para nuestro ejemplo, hablaremos acerca de la teoría relacionada con las bibliotecas de vínculos dinámicos y la forma en la que esta herramienta permite llevar a cabo la revisión para la identificación de vulnerabilidades.

En los sistemas operativos Windows, las bibliotecas de vínculos dinámicos (DLL por sus siglas en inglés), son archivos con código y datos que pueden ser utilizados por más de un programa de forma simultánea, lo que permite la modularidad y reutilización de código, uso eficaz de memoria y de espacio en disco. Cuando se ejecuta un programa, parte de la funcionalidad es proporcionada por estas bibliotecas.

Si un programa hace uso de un archivo DLL, dos métodos de vinculación permiten llamar a las funciones exportadas del archivo DLL: vinculación dinámica en tiempo de carga y vinculación dinámica en tiempo de ejecución.

En el caso de la vinculación dinámica en tiempo de ejecución, una aplicación llama a una función para cargar el archivo DLL, luego de que ha sido cargada correctamente obtiene la dirección de exportación de las funciones que desea ejecutar. Mientras que en la vinculación dinámica en tiempo de carga, es necesario importar un archivo de biblioteca.

Cómo detectar vulnerabilidades en archivos binarios con BinScope

Cuando una aplicación se compila y vincula con los archivos DLL requeridos para su funcionamiento, el sistema operativo busca las bibliotecas de vínculos dinámicos en la carpeta donde se encuentra la aplicación, la carpeta actual y finalmente en la carpeta de sistema de Windows.

A partir del desarrollo de Microsoft .NET las dificultades relacionadas con las DLL se eliminaron a través del uso de ensamblados. Un ensamblado es una unidad lógica de funcionalidad que se ejecuta bajo el control de .NET Common Language Runtime (CLR). El framework cuenta con un ensamblado como un archivo con extensión .DLL o .EXE.

Un archivo de ensamblado contiene un manifiesto de ensamblado, metadatos, código de lenguaje intermedio (MSIL) de Microsoft y otros recursos. El manifiesto del ensamblado contiene los metadatos que proporcionan toda la información necesaria: nombre, versión, información sobre nombre seguro, lista de ensamblados de archivos, referencias y dependencias.

Fuente:https://www.welivesecurity.com/