Corrupción de la memoria en C / C ++

4

Estoy haciendo un estudio sobre la corrupción de la memoria. Necesito compilar una lista de todos los problemas de corrupción de memoria explotables que se han reconocido hasta la fecha y proporcionar un código vulnerable de muestra para ello.

Necesito ayuda de la comunidad. Intenté buscar pero no pude encontrar ninguna de esas listas.

Cosas que he compilado

  1. Desbordamiento de pila
  2. Desbordamiento de pila
  3. desactivado por un byte
  4. Explotación de errores de memoria variable sin inicializar
  5. errores firmados / sin firmar
  6. Usuario después de libre
  7. Doble gratis
  8. ?????

Por favor, corríjame si la lista es incorrecta. Necesito una lista de todos los errores explotables en el software escrito en C / C ++.

Gracias.

    
pregunta john4tech 23.05.2014 - 11:45
fuente

3 respuestas

3

Es posible que desee consultar el catálogo de CWE (enumeración de debilidad común) para este tipo de investigación: enlace

La entrada más cercana es probablemente CWE-633: CWE-633: Debilidades que afectan la memoria

Realmente me gusta el CWE cuando se trata de categorizar errores (también verifique las "Relaciones" para cada entrada). Cada entrada viene con una explicación y posibles CVEs.

El CAPEC también podría ser interesante: (capec.mitre.org/index.html)

Tenga en cuenta que la coerción de enteros (CWE-192) o el desbordamiento de enteros (CWE-190) puede llevar a un cálculo incorrecto, pero no necesariamente a un problema de memoria (consulte CWE-680).

    
respondido por el Neitsa 23.05.2014 - 12:46
fuente
0

El tema es bastante grande. Este artículo puede ayudar, cubre algunos aspectos interesantes. También debe comprobar Valgrind y su documentación.

Para explotación, recomendaría esta charla y this paper. Podrían ayudarte con tu búsqueda.

Además, existe una nueva tecnología llamada MPX de Intel para proteger la memoria de la explotación maliciosa. Debe revisar el documento de Intel & este enlace GCC si desea profundizar más en él.

    
respondido por el yaspr 23.05.2014 - 12:00
fuente
0

Condiciones de carrera, desreferencias de puntero NULL, vulnerabilidades de cadenas de formato, desbordamientos de enteros, pero hay un número casi infinito de posibles vulnerabilidades, todas son solo categorías. Por ejemplo, los analizadores binarios a menudo confían en las compensaciones de memoria dentro de los archivos para ir a: ¿en qué categoría pondrías eso? No es realmente un desbordamiento de búfer, pero es un error de corrupción de memoria.

Y si va a enumerar todas las ubicaciones en las que puede existir un búfer, podría estar allí por un tiempo (solo está enlistando las regiones de memoria), pero .bss el desbordamiento de búfer es otro.

También el nombre correcto para 4) es "usar antes de la inicialización".

    
respondido por el offbyseveral 29.05.2014 - 17:55
fuente

Lea otras preguntas en las etiquetas