Che cos’è una libreria di collegamenti dinamici?

Una libreria di collegamento dinamico è un sistema utilizzato da Microsoft per consentire a più applicazioni di accedere contemporaneamente alla stessa sezione di codice in Windows®. Questa è una delle chiavi per lavorare in modo efficace con il multitasking. Nel 2010, i ricercatori della sicurezza hanno scoperto che la scappatoia nel modo in cui funzionava il sistema di librerie a collegamento dinamico poteva essere sfruttata dagli hacker. Ciò ha portato a un dilemma su come risolverlo senza influire sull’usabilità delle applicazioni.

Per comprendere il funzionamento di una libreria a collegamento dinamico, è importante comprendere la differenza tra Windows® e le applicazioni software. Windows® è un sistema operativo che esiste in gran parte per coordinare il modo in cui le singole applicazioni, note anche come programmi, accedono alle capacità di elaborazione del computer. Windows® stesso è in definitiva un insieme di codici per computer che funge efficacemente da libro di regole o guida per il modo in cui le applicazioni interagiscono tra loro e con l’hardware.

La libreria a collegamento dinamico è il sistema mediante il quale le applicazioni possono accedere ed eseguire singole sezioni del codice Windows®. Un esempio potrebbe essere la sezione di Windows® responsabile della stampa dei documenti. La maggior parte delle applicazioni prima o poi ha bisogno di accedere a questa funzione, ma se ogni applicazione caricasse il relativo codice nella memoria del computer non appena l’applicazione iniziasse a essere eseguita, sarebbe un uso inefficiente delle risorse e potrebbe causare conflitti.

Per risolvere questo problema, il codice Windows® per una particolare funzione, in questo caso la stampa, viene memorizzato come un piccolo programma noto come libreria di collegamento dinamico o file DLL. Se un utente esegue un’applicazione come un elaboratore di testi, questo file non viene aperto automaticamente. Invece, l’elaboratore di testi apre e attiva il file solo come e quando è necessario, in questo caso quando l’utente vuole stampare un documento.

Storicamente, molti sviluppatori di applicazioni scrivevano semplicemente codice che diceva come veniva chiamato il nome della libreria di collegamento dinamico pertinente, piuttosto che specificare esattamente dove doveva trovarsi sul computer. Per ovviare a questo problema, Windows® ha un sistema prestabilito per individuare i file DLL mancanti cercando in un elenco di posizioni in un ordine definito. Anche se questo potrebbe essere teoricamente sfruttato se un file dannoso mascherato da file DLL fosse messo nel posto giusto e quindi trovato e aperto prima del file legittimo, questo non era considerato un grave rischio per la sicurezza in quanto gli hacker avrebbero avuto bisogno dell’accesso fisico a una macchina per ottenere il file dannoso in atto.

Nel 2010 è stato scoperto che gli hacker potrebbero teoricamente ottenere tali file tramite una connessione remota, ovvero tramite Internet. Ciò significava che decine di applicazioni Windows® erano vulnerabili agli attacchi che utilizzavano questo metodo. La comunità della sicurezza era divisa se fosse meglio che le singole applicazioni venissero riscritte per specificare la posizione del file DLL legittimo, che si affidava all’azione di ogni sviluppatore, o che Microsoft cambiasse il modo in cui Windows® gestisce tali file, il che potrebbe potenzialmente causare l’interruzione del corretto funzionamento delle applicazioni.