Desarrollo de exploits: ¿Los diferentes dispositivos con el mismo sistema operativo / arquitectura tendrán la misma memoria de proceso (por ejemplo, direcciones) para un binario determinado?

3

A veces, cuando desarrollo un exploit que funciona perfectamente en una máquina dada, fallará en otra diferente, a pesar de que tienen el mismo sistema operativo / arquitectura y configuraciones (como el lenguaje, que en mi experiencia puede tener algunos efectos en el memoria de proceso, al menos en Windows).

Soy consciente del hecho de que existen técnicas para lograr más confiabilidad en algunos casos. Sin embargo, me pregunto si un exploit desarrollado y probado en un dispositivo determinado (digamos un Google Pixel), con o sin el uso de estas técnicas, se supone que funciona en otro (como un Samsung Galaxy S8).

Si no, ¿por qué? ¿No debería el mismo binario tener la misma memoria de proceso? Puedo pensar en diferentes casos en los que esto no debería ser cierto, por ejemplo, si el programa carga datos que son específicos del dispositivo. Pero cuando no es el caso, ¿el mismo binario, alimentado con la misma entrada, se comportará de manera diferente cuando se ejecute en diferentes dispositivos?

Esta pregunta asume que ASLR está deshabilitado.

EDITAR: estoy preguntando sobre cómo explotar las vulnerabilidades de corrupción de memoria, como el uso después de las liberaciones y las lecturas OOB.

    
pregunta Not Now 31.03.2018 - 01:19
fuente

1 respuesta

2

El diseño del montón es una cosa voluble. Ejemplos de la vida real del mundo de las ventanas:

  • Las versiones del programa que no están en inglés cargan DLL de internacionalización adicionales en una dirección fija en medio de la pila.

  • diferentes patrones de asignación entre el programa de inicio en la línea de comandos (como lo hace Fuzzer / debugger) y el usuario abre el documento con "archivo" - "abierto".

  • El producto de seguridad carga% $ § # -ton de DLL en todos los procesos que inician todos los subprocesos & asignar cosas en el montón. Supongo que evitan las vulnerabilidades al no dejarles ninguna memoria libre.

  • Windows XP trajo toda la nueva estrategia de asignación de montón con un paquete de servicio. ¿Fue SP2?

  • Los navegadores tienen heurísticas complicadas para cuando precompilan & jit, cuánto jit, cuándo liberan código jits, etc. Esas heurísticas también analizan la memoria total del sistema disponible. Lo mismo ocurre con la recolección de basura.

Nunca asumas demasiado sobre el diseño de tu montón.

    
respondido por el manduca 31.03.2018 - 12:47
fuente

Lea otras preguntas en las etiquetas