Immagina di avere un file codice oggetto da una fonte non attendibile. Si desidera eseguire questo codice per conoscere il risultato del suo calcolo e si desidera che il codice funzioni rapidamente, quindi l'impostazione di un'intera macchina virtuale è l'ultima risorsa. Inoltre, non desideri che nulla accada al tuo sistema dopo l'esecuzione del codice.
Tenendo presente questo, per quanto ho capito, quel codice non sarebbe in grado di fare alcun danno se si limita il numero di interrupt per esso o si disabilitano gli interrupt di sorta. Un modo per assicurarsi che non ci siano interruzioni nel codice è di scansionarlo in base alle istruzioni e rifiutarsi di eseguire se c'è almeno un'istruzione int
in essa. Ciò risolverà il problema, ma questo approccio non consentirà alcuna chiamata di sistema e il codice senza chiamate di sistema è scarsamente utile. Se il lato in esecuzione decide di consentire quel codice che richiama solo alcune interruzioni nella whitelist, il lato in esecuzione deve essere sicuro che il codice in esecuzione non si modifichi in fase di esecuzione. Se cambia, allora ogni istruzione da eseguire deve essere riesaminata, il che influirebbe sulle prestazioni.
Sarebbe bello avere una sorta di gateway tra gli interrupt host e guest, che potrebbe tradurre gli interrupt ospite in eventuali interruzioni host diverse o rifiutarsi di farlo. Ci sono soluzioni o ricerche disponibili per questo argomento?