Chiamata di sistema di avvolgimento (in modo affidabile e sicuro)

4

C'è un metodo affidabile per "avvolgere" le chiamate di sistema sotto Linux? (Come LD_PRELOAD per il wrapping delle chiamate alle funzioni della libreria condivisa.)

Esiste un metodo affidabile e sicuro per "avvolgere" le chiamate di sistema (e, forse, ricevere segnali), che il processo non può interrompere (assumendo un'implementazione Linux appropriata)?

    
posta Grzegorz Wierzowiecki 29.10.2011 - 12:56
fonte

2 risposte

3

Sì. Si utilizza l'interposizione di chiamata di sistema. Un metodo portatile consiste nell'utilizzare ptrace, sebbene questo possa introdurre un overhead delle prestazioni non banale in quanto impone un cambio di contesto su ogni chiamata di sistema. Su Solaris, puoi usare / proc; / proc ti consente di specificare il sottoinsieme di chiamate di sistema che ti interessano nel wrapping, che ti consente di ottenere prestazioni migliori a costo di compatibilità.

Dai un'occhiata a Plash, Systrace e Subterfugue, per vedere alcuni sistemi funzionanti che usano questo tipo di metodi. Guarda anche la sandbox di Chrome, che usa una varietà di meccanismi (incluso seccomp su Linux).

    
risposta data 30.10.2011 - 02:25
fonte
1

Vorrei utilizzare una delle tante tecnologie di virtualizzazione disponibili. Se si desidera limitare solo le risorse disponibili per un particolare processo, un meccanismo di jail come cgroup dovrebbe essere sufficiente. Per ulteriori informazioni su cosa succede quando il processo esegue una chiamata di sistema, controlla Modalità utente Linux .

    
risposta data 30.10.2011 - 18:10
fonte

Leggi altre domande sui tag