¿Alguien me dice cómo bloquear algunas llamadas al sistema específicas dentro de un programa, por favor? Estoy construyendo un sistema que toma una parte del código fuente C, lo compila con gcc y lo ejecuta. Por razones de seguridad, necesito evitar que el programa compilado llame algunas llamadas al sistema. ¿Hay alguna forma de hacerlo, desde el nivel del código fuente (por ejemplo, eliminando los archivos de encabezado de gcc, detectando llamadas externas maliciosas, ...) al nivel del ejecutable?GCC cómo bloquear llamadas al sistema dentro de un programa?
Edited # 1: Agregue detalles sobre llamadas maliciosas.
Edited # 2: Mi sistema es uno de GNU/Linux.
Editado # 3:
me han tratado algunos métodos dentro de unos días y aquí están las conclusiones a las que tenemos hasta ahora:
- escanear el código fuente no resuelve el principal problema ya que uno siempre puede obstruir su archivo fuente C bastante bien.
- "Reemplazar el símbolo C" funciona bien para las bibliotecas, pero para las llamadas al sistema no he logrado lo que quería. Esta idea no está muerta, sin embargo, hacer esto definitivamente me causaría mucho tiempo de pirateo (gcc y/o ld).
- Permiso deescalation funciona como un encanto. Podría usar fakeroot o un usuario "invitado" para hacerlo. Este método también es el más fácil de implementar.
que no he probado aún pero definitivamente lo haría en un futuro debido a lo común entre el proyecto y mi trabajo
Parece un gran desafío. Después de todo, casi todos los programas concebibles de C realizarán, legítimamente, llamadas al sistema tales como: asignar memoria, leer y escribir archivos, usar stdin y stdout, y así sucesivamente. –
¿Qué tipo de programa crees que nunca hace una llamada al sistema? Por favor publica un ejemplo. –
@High Performance Mark: Bueno, solo quiero bloquear algunas llamadas al sistema porque son limitadas, llamadas como fork(), open(), ... @Neil Butterworth: Quise decir que no todas las llamadas al sistema son maliciosas llamadas al sistema, por ejemplo execv() podría usarse para ejecutar un script BASH que borra mis datos en el disco. –