2010-09-27 11 views
17

Estoy interesado en conocer las técnicas que se utilizan para descubrir las vulnerabilidades. Conozco la teoría sobre los desbordamientos de buffer, los exploits de cadenas de formato, ecc, también escribí algunos de ellos. Pero todavía no me doy cuenta de cómo encontrar una vulnerabilidad de manera eficiente.Encontrar vulnerabilidades en el software

No busco una varita mágica, solo estoy buscando las técnicas más comunes al respecto, creo que buscar toda la fuente es un trabajo épico para algún proyecto que admite que tienes acceso a la fuente. Intentar confundir la entrada manualmente tampoco es tan cómodo. Entonces me pregunto acerca de alguna herramienta que ayude.

E.g.

No me estoy dando cuenta de cómo el equipo de desarrollo puede encontrar vulnerabilidades para jailbreak iPhones tan rápido. No tienen código fuente, no pueden ejecutar programas y dado que hay una pequeña cantidad de programas predeterminados, no espero una gran cantidad de agujeros de seguridad. Entonces, ¿cómo encontrar este tipo de vulnerabilidad tan rápido?

Gracias de antemano.

Respuesta

3

En las capas inferiores, la memoria de examen manual puede ser muy reveladora. Ciertamente puede ver la memoria con una herramienta como Visual Studio, y me imagino que alguien incluso ha escrito una herramienta para reconstruir crudamente una aplicación basada en las instrucciones que ejecuta y las estructuras de datos que coloca en la memoria.

En la web, he encontrado muchos exploits relacionados con la secuencia simplemente invirtiendo el orden en que ocurre una operación (por ejemplo, una transacción en línea). Debido a que el servidor es estable, pero el cliente no tiene estado, puede explotar rápidamente un proceso mal diseñado emulando una secuencia diferente.

En cuanto a la velocidad de descubrimiento: creo que la cantidad a menudo supera al brillo ... poner un software, incluso uno bueno, en manos de un millón de personas aburridas/curiosas/motivadas, y las vulnerabilidades están destinadas a ser descubierto. Hay una tremenda prisa por sacar los productos de la puerta.

0

Además del desbordamiento del búfer y los exploits de la cadena de formato, es posible que desee leer un bit en el código de inyección. (Mucho de lo que encontrarás se relacionará con la web/DB, pero profundiza más) AFAIK esta fue una gran fuerza en el jailbreaking iThingies. El sustrato móvil de Saurik le permite (s) (-ed?) Cargar los .dylibs de terceros y llamar a cualquier código que contenga.

2

No hay una manera eficiente de hacerlo, ya que las empresas gastan una buena cantidad de dinero para producir y mantener un software seguro. Idealmente, su trabajo en la seguridad del software no comienza con la búsqueda de vulnerabilidades en el producto final; tantos Vulns ya han sido erradicados cuando el software está fuera.

Volver a su pregunta: dependerá de lo que tenga (binarios de trabajo, código fuente completo/parcial, etc.). Por otro lado, no está encontrando CUALQUIER vulnerabilidad, sino aquellas que cuentan (por ejemplo, aquellas que el cliente de la auditoría o el propietario del software). ¿Derecha?

Esto le ayudará a comprender las entradas y funciones de las que debe preocuparse. Una vez que los localizó, es posible que ya tenga una sensación de la calidad del software: si no es muy bueno, probablemente el fuzzing le encuentre algunos errores. De lo contrario, debe comenzar a entender estas funciones y cómo se usa la entrada dentro del código para comprender si el código puede ser subvertido de alguna manera.

Alguna experiencia te ayudará a calcular cuánto esfuerzo poner en cada tarea y cuándo seguir adelante. Por ejemplo, si ve que se utilizan algunas malas prácticas, profundice más.Si ve que crypto se implementa desde cero, profundice más. Etc

Cuestiones relacionadas