Se C utilizza librerie condivise, è possibile scrivere un programma che modificherà la funzione fopen
per eseguire un codice dannoso? In che modo il sistema operativo può proteggere l'utente da questo?
Se C utilizza librerie condivise, è possibile scrivere un programma che modificherà la funzione fopen
per eseguire un codice dannoso? In che modo il sistema operativo può proteggere l'utente da questo?
Sì, è possibile. Questa tecnica è chiamata hook alla funzione. In effetti, puoi completamente controllare un eseguibile agganciando, diciamo, __libc_start_main
e reindirizzando l'esecuzione al codice nella libreria. Non è assolutamente possibile che un sistema operativo possa proteggere un eseguibile da una libreria dannosa. Il codice nella libreria verrà eseguito nello stesso spazio di indirizzamento dell'eseguibile e avrà le stesse identiche capacità. L'unico modo per proteggere un eseguibile da una libreria dannosa è non collegarlo alle librerie dannose.
Inoltre, per essere chiari: quando modifichi una libreria condivisa in memoria, viene modificata solo la sua copia nello spazio di indirizzamento tuo processo. La copia sul disco e le copie in uso da altri processi non verranno modificate. È lo stesso che modificare una variabile globale in un processo (come errno
); solo l'unico processo che utilizza quello spazio indirizzo "vedrà" la modifica.
Leggi altre domande sui tag c operating-systems malware