Consideraciones sobre la Ingeniería Inversa

Las vulnerabilidades existen en el software por un diverso número de razones. Algunas personas podrían decir, todas estas provienen de la incompetencia del programador. Aunque hay quienes nunca han visto un error en la compilación. En la actualidad las razones son mucho más variadas y pueden incluir:

  • Falta de verificación para las condiciones de error
  • Pobre comprensión sobre los comportamientos de las funciones
  • Protocolos diseñados pobremente
  • Inadecuadas pruebas para las condiciones de límites

Así como se puede examinar una pieza de software, se pueden buscar problemas como los antes mencionados. La facilidad con la cual se pueden encontrar estos problemas dependen de un número de factores:

  • ¿Se tiene acceso hacia el código fuente del software. Si es así, el trabajo para encontrar vulnerabilidades puede ser más fácil porque el código fuente es mucho más fácil de leer a comparación del compilado?
  • ¿Cuanto código fuente existe?. Software complejo está constituido de miles (quizás decenas de miles) de líneas de código, el cual requerirá mucho tiempo para analizar, comparado con piezas de software pequeñas.
  • ¿Cuales herramientas están disponibles para ayudar a automatizar algunos o todos los análisis del código fuente?
  • ¿Cual es el nivel de experiencia requerido en un lenguaje de programación determinado?
  • ¿Se está familiarizado con áreas problemáticas comunes para un lenguaje determinado?
  • ¿Qué sucede cuando el código fuente no está disponible y sólo se tiene el acceso hacia un binario compilado?
  • ¿Se tiene herramientas para ayudar a entender los archivos ejecutables?. Herramientas como desensambladores y descompiladores pueden drásticamente reducir la cantidad de tiempo para auditar un archivo binario.

Fuentes:

https://ethics.csc.ncsu.edu/intellectual/reverse/study.php
https://beginners.re/

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1