bibliotecas alternativas a gcc stack-protector / fortity source feature en linux

0

hay una biblioteca / enfoque externo / lo que sea para agregar

  1. protección canaria (equivalente al protector de pila)
  2. comprobación de límite de búfer adicional (equivalente de fuente de fortaleza)
¿

en un software de C sin usar la funcionalidad incorporada de glibc / gcc?

    
pregunta boos 26.05.2014 - 17:54
fuente

1 respuesta

2

Las protecciones de Carnary se basan en que el compilador agregue un código antes y después de cada cuerpo de la función, y posiblemente el recurso de las variables locales de la función, por lo que esto no es posible para el elemento 1.

En cuanto al elemento 2, lo único que viene a la mente es ejecutar el ejecutable en Valgrind para su análisis. No querrás hacer eso en producción, ya que es lento. Además, algunas incorporaciones de GCC se comportan mal bajo Valgrind (por ejemplo, la incorporada strlen puede leer hasta 3 bytes (en i386) más allá del final de un búfer asignado), por lo que emitirá falsos positivos.

Diría que su único es recompilar la aplicación con el SSP habilitado (también, GCC envía libssp que contiene funciones para hacer el elemento 2). Muchas otras bibliotecas de C ya contienen código de soporte de SSP (en realidad no es mucho), por lo que no usar el libc de GNU no es un problema.

Algunos compiladores de C también contienen comprobaciones de límites, comprobaciones de desbordamiento de búfer, comprobaciones de desbordamiento de pila, etc. en varios estados de usabilidad.

También deberías ver tu implementación malloc . Algunas implementaciones, sobre todo omalloc de OpenBSD, ofrecen reservar "páginas de guarda" antes y después de las asignaciones de tamaño de página, y mover asignaciones más pequeñas al principio o al final de una página, para capturar accesos más allá del búfer.

    
respondido por el mirabilos 30.05.2014 - 18:22
fuente

Lea otras preguntas en las etiquetas