Libseccomp: P: interceptar llamadas al sistema del mismo proceso

Creado en 20 may. 2021  ·  3Comentarios  ·  Fuente: seccomp/libseccomp

Estoy trabajando en una caja de arena en Linux, lo que quiero lograr es interceptar llamadas al sistema y devolver un valor emulado o cambiar registros / punteros y ejecutar la llamada al sistema con el valor modificado.

Me gustaría lograr esto desde el mismo proceso, mi código ya está inyectado en el proceso de destino durante el inicio.

¿Es posible hacerlo con seccomp?
Si tiene algún ejemplo sería útil o cualquier otra recomendación, tal vez haya una mejor manera de lograr lo mismo

question

Comentario más útil

Siempre puede verificar la prueba a continuación, es bastante simple pero debería darle una idea básica sobre cómo usarla:

Voy a cerrar este problema porque creo que la pregunta se ha resuelto, pero si no está de acuerdo, no dude en volver a abrir / comentar.

Todos 3 comentarios

Probablemente valga la pena mencionar que intentar interceptar las llamadas al sistema como una forma de sandboxing desde el mismo espacio de direcciones que el proceso que está siendo sandboxing será propenso a fallar. Una aplicación malintencionada podría encontrar una manera de detectar que está siendo protegida y tomar medidas contra el código de la zona de pruebas que se ejecuta en su espacio de direcciones.

Una mejor opción sería optar por un filtro de llamada al sistema estático más tradicional, como lo hacen una gran cantidad de herramientas de espacio aislado o crear un proceso supervisor para monitorear e interceptar las llamadas al sistema utilizando las capacidades de notificación agregadas a seccomp / libseccomp.

Soy bastante nuevo en seccomp, un día antes ni siquiera sabía de su existencia, si entendía correctamente la reciente adición de notificaciones nos da la capacidad de manejar llamadas al sistema desde el modo de usuario.
¿Tiene un código que pueda usar como referencia para esta tarea (seccomp notif. Para interceptar llamadas al sistema)?

Siempre puede verificar la prueba a continuación, es bastante simple pero debería darle una idea básica sobre cómo usarla:

Voy a cerrar este problema porque creo que la pregunta se ha resuelto, pero si no está de acuerdo, no dude en volver a abrir / comentar.

¿Fue útil esta página
0 / 5 - 0 calificaciones