Ho una situazione in cui i file dannosi vengono copiati nella directory di installazione di alcuni software e il software caricherà quei file quando effettuerà una chiamata a LoadLibrary o DllImport (in .NET land).
Se il tuo software funziona con i privilegi di amministratore, un P / Invoke su una DLL dannosa può essenzialmente eseguire qualsiasi codice in modo elevato, utilizzando la tua applicazione come veicolo per farlo per suo conto.
Molte di queste tecniche possono essere trovate in questa domanda: Metodi per iniettare DLL dannose per l'esecuzione del file ed eseguirlo
Quello che sto chiedendo è come, come sviluppatore di software, puoi prevenire questo tipo di attacco? Se voglio importare user32.dll
nella mia applicazione ed effettuare una chiamata, come faccio a sapere che sta caricando quello giusto?
Nel Documentazione LoadLibrary suggerisce che questo problema esiste ma non spiega esattamente cosa si dovrebbe fare per evitarlo a tutti i costi.
Do not use the SearchPath function to retrieve a path to a DLL for a subsequent LoadLibrary call. The SearchPath function uses a different search order than LoadLibrary and it does not use safe process search mode unless this is explicitly enabled by calling SetSearchPathMode with BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE. Therefore, SearchPath is likely to first search the user’s current working directory for the specified DLL. If an attacker has copied a malicious version of a DLL into the current working directory, the path retrieved by SearchPath will point to the malicious DLL, which LoadLibrary will then load.
Una soluzione semplice come controllare se il file si trova in un percorso di ricerca che non ti aspetti (come ad esempio il tuo eseguibile) non funziona molto bene perché il nome dell'assembly può essere cambiato e un reindirizzamento sul posto.
UPDATE : questo articolo su Dynamic-Link La sicurezza della libreria spiega bene le cose, tuttavia, tutte queste tecniche possono essere aggirate facilmente con lo stesso processo di copia dei file dannosi. Ho visto Reindirizzamento DLL utilizzato per reindirizzare a malware file pure. Temo che anche gli approcci programmatici possano fallire perché le tue applicazioni possono essere comunque modificate per caricare ancora i file dannosi.
Tutte le applicazioni Windows sono destinate a contenere questo difetto di sicurezza?