16 abr 2018

Taint Análisis y la detección de bugs en código fuente

Los resultados que se pueden obtener con las técnicas "Taint Analysis: Fast Static Analysis technique for detecting dangerous patterns in source code" son siempre jugosos, como ya vimos en el proyecto OSB-Rastreator, donde buscaba funciones inseguras en el código fuente de los paquetes que podías instalarte en un sistema GNU/Linux, algo muy importante si quieres tener un servidor GNU/Linux fortificado. Una buena forma de buscar ejemplos para practicar la construcción de exploits para GNU/Linux.

¿Qué es el análisis estático de código fuente?

El análisis estático de código fuente, de forma simplificada, consiste en el uso de herramientas de análisis del código que permiten encontrar determinados patrones en función del caso de uso en el que se este aplicando sin llegar a ejecutar dicho código. Y, ¿para qué sirve este tipo de análisis? Los usos del análisis estático son muy numerosos, y seguramente muchos de nosotros lo utilizamos en nuestro día a día sin ni siquiera saberlo.
  • Comprobar si un lenguaje de programación cumple con su especificación formal
  • Comprobar si hay errores de sintaxis en el código fuente de un programa antes de ejecutarlo/compilarlo
  • Realizar comprobaciones de sintaxis al vuelo (errores que te muestra un IDE)
  • Medir la calidad del código fuente en un ciclo de desarrollo
  • Auditar código fuente en busca de patrones inseguros o posibles vulnerabilidades
Una vez visto esto, lo que nosotros vamos a hacer en este artículo, es construir nuestro propio analizador de manera muy sencilla para el último de los puntos que se presentan en el apartado anterior, detectar patrones inseguros en código fuente. Probablemente, muchos de los que hayáis leído esta última frase os preguntaréis, ¿por qué querríamos programar nuestro propio analizador? ¿No existen herramientas?
Por supuesto, existen herramientas que probablemente cumplirán con nuestros casos de uso de una manera mucho más completa que un analizador que programemos nosotros en una tarde, pero hay algunos casos específicos para los que puede ser útil construir uno propio, aquí os enumero algunos:
  • Analizar mucho código (miles de ficheros). Necesitamos que sea rápido.
  • Queremos buscar patrones muy concretos.
  • No queremos invertir tiempo en la curva de aprendizaje que suponen las herramientas existentes.
  • Queremos realizar procesamientos adicionales cuando se encuentra un patrón sospechoso.
Contenido completo en fuente original El Lado del Mal

Suscríbete a nuestro Boletín

0 Comments:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!