¿Es seguro compilar código no confiable?

5

Tengo curiosidad por compilar con gcc / g ++ / clang con el supuesto de que Los encabezados y los archivos de implementación son proporcionados por el usuario, pero no la configuración de compilación. (es decir, sin cd lib && make )

¿Qué pasa si el usuario podría proporcionar archivos de objetos para vincular también (bibliotecas estáticas)? ¿Qué hay de las banderas de compilador / vinculador proporcionadas por el usuario lanzadas en la mezcla?

¿Podría un usuario malintencionado deshabilitar un sistema (agotar los recursos) o incluso podría ejecutar código arbitrario de esta manera si todo lo que podrían hacer es enviar los archivos *.cc , *.hh y *.a , posiblemente los indicadores del compilador, y ¿el sistema compila y enlaza todo (pero no lo ejecuta)?

    
pregunta PSkocik 01.07.2015 - 14:05
fuente

2 respuestas

6

No solo es posible, ha sido documentado varias veces en el pasado.

enlace

Por ejemplo, enlace muestra un ataque de corrupción de memoria que podría llevar a varios tipos de compromiso, si fueran suficientemente explotados.

Un compilador es tan susceptible como cualquier otro programa a errores y entradas mal formadas.

    
respondido por el J Kimball 01.07.2015 - 19:39
fuente
4

Al menos la compilación de C ++ se ha completado, por lo que es posible / fácil producir un funcionamiento infinito del sistema de impacto de bucle y producir una salida infinita (ram de escape y / o lugar de disco).

Más información sobre cómo se completa la compilación de C ++: enlace

    
respondido por el grandchamp robin 01.07.2015 - 16:54
fuente

Lea otras preguntas en las etiquetas