Punti Chiave
- Il DLL hijacking (noto anche come attacco di preloading delle DLL) è una vulnerabilità di sicurezza in cui un file Dynamic Link Library (DLL) legittimo e attendibile in un’applicazione Windows viene sostituito con un file dannoso.
- Il DLL hijacking introduce molteplici rischi per la sicurezza (ad esempio furto di dati, sistemi compromessi, malware).
- Per prevenire il DLL hijacking, sviluppatori e utenti devono assicurarsi che le applicazioni carichino le DLL da directory attendibili, utilizzino percorsi completi, implementino controlli di integrità dei file e adottino software di sicurezza. Anche aggiornamenti regolari e gestione delle patch sono fondamentali.
Si è parlato molto di CVE-2025-56383 (pubblicata il 26 settembre 2025), una vulnerabilità di hijacking in Notepad++ v8.8.3 in cui un file DLL può essere sostituito per eseguire codice dannoso.
La CVE è stata contestata da più parti, ma non è questo l’aspetto su cui intendiamo soffermarci. Vogliamo invece approfondire il DLL hijacking e discutere della minaccia concreta che rappresenta per un’organizzazione. Vediamo cos’è il DLL hijacking e quali misure è possibile adottare per mantenere le DLL al sicuro.
Cos’è il DLL hijacking e come avviene
Il DLL hijacking (noto anche come attacco di preloading delle DLL) è una vulnerabilità di sicurezza in cui un file Dynamic Link Library (DLL) legittimo e attendibile in un’applicazione Windows viene sostituito con un file dannoso.
Questo metodo sfrutta il modo in cui le applicazioni caricano i file DLL, che contengono codice e dati utilizzati da più programmi. Caricando una DLL dannosa, un threat actor può eseguire il proprio codice con gli stessi privilegi dell’applicazione legittima, provocando escalation dei privilegi, persistenza ed evasione delle difese.
Quando un programma si avvia, spesso deve caricare diverse DLL per eseguire funzioni specifiche, in genere da directory di sistema attendibili. Tuttavia, se un’applicazione non presta attenzione al percorso in cui cerca queste DLL, potrebbe caricare una DLL dannosa da una posizione non sicura o prevedibile (ad esempio, la directory di lavoro corrente o una condivisione di rete). Questo può accadere se l’applicazione non specifica il percorso completo della DLL o se la cerca in una directory accessibile o modificabile da un aggressore.

Sebbene questo tipo di attacco non sia nuovo, rimane efficace grazie alla sua semplicità. E anche se questo problema specifico riguarda le applicazioni Windows, è importante sottolineare che vulnerabilità simili possono interessare altri sistemi operativi (come Linux e macOS, che utilizzano il caricamento dinamico per le librerie condivise).
Il DLL hijacking introduce molteplici rischi per la sicurezza, tra cui:
- Furto di dati: la DLL dannosa può intercettare e rubare dati sensibili, come password o informazioni personali.
- Sistemi compromessi: l’aggressore può ottenere il controllo del sistema, con il rischio di ulteriori attacchi o dell’installazione di malware aggiuntivo.
- Malware: la DLL dannosa può fungere da canale per la diffusione di malware, infettando altre parti del sistema o della rete.
Una DLL può essere sottoposta a hijacking in diversi modi; ecco alcune delle tecniche più comuni:
- Ordine di ricerca delle DLL non sicuro: gli aggressori inseriscono DLL dannose in directory cercate prima della posizione della DLL legittima.
- Manipolazione dei percorsi relativi: le DLL dannose vengono caricate quando le applicazioni utilizzano percorsi relativi.
- Reindirizzamento delle DLL: tecniche come la manipolazione dei percorsi reindirizzano il processo di caricamento delle DLL.
- Autorizzazioni deboli: gli aggressori sostituiscono DLL legittime con DLL dannose in directory con autorizzazioni deboli.
- Phantom DLL hijacking: gli aggressori sfruttano le applicazioni che caricano DLL inesistenti inserendo DLL dannose con lo stesso nome nelle directory oggetto di ricerca.
Queste potenziali vulnerabilità evidenziano l’importanza di pratiche di sviluppo sicuro e della gestione delle autorizzazioni delle directory per prevenire questa forma di attacco.
Come prevenire il DLL hijacking e mantenere le DLL al sicuro
Sebbene il DLL hijacking rimanga una minaccia, esistono best practice da seguire e implementare per ridurre il rischio e creare un ambiente IT più sicuro e protetto.

Caricamento sicuro delle DLL:
- Utilizzare percorsi completi: specificare sempre il percorso completo della DLL quando viene caricata. In questo modo l’applicazione carica la DLL da una posizione attendibile (e non da una directory non sicura).
- Impostare un percorso di ricerca sicuro: utilizzare la funzione SetDllDirectory in Windows per aggiungere directory attendibili al percorso di ricerca ed escludere quelle non sicure. Questo può aiutare a impedire all’applicazione di caricare DLL da posizioni inattese.
Controlli di integrità dei file:
- Firme digitali: assicurarsi che le DLL siano firmate con una firma digitale e verificare la firma prima di caricare la DLL. Questo può aiutare a confermare che la DLL non sia stata manomessa.
- Verifica dell’hash: utilizzare funzioni hash crittografiche per verificare l’integrità dei file DLL. Se l’hash della DLL non corrisponde al valore previsto, il file potrebbe essere stato modificato.
Autorizzazioni degli utenti:
- Principio del privilegio minimo: eseguire le applicazioni con il privilegio minimo necessario. Ciò limita il potenziale danno di un DLL hijacking, poiché il codice dannoso disporrà di meno autorizzazioni per eseguire azioni nocive.
- Controllo dell’account utente (UAC): abilitare UAC sui sistemi Windows per richiedere agli utenti l’autorizzazione prima di eseguire applicazioni con privilegi elevati. Questo può aiutare a prevenire modifiche non autorizzate ai file di sistema.
Controllo delle applicazioni e gestione dei privilegi:
- Applicazioni note e attendibili: il controllo delle applicazioni garantisce che possano essere avviate solo applicazioni note e attendibili, eliminando il rischio di introdurre applicazioni non autorizzate.
- Controllo dei privilegi: una gestione efficace dei privilegi è fondamentale per prevenire il DLL hijacking. Assicurando che le applicazioni dispongano dei diritti e dei privilegi corretti per l’avvio, si limita la possibilità per gli utenti non autorizzati di introdurre file dannosi. Questo controllo agisce come una barriera chiave, limitando l’accesso di cui un aggressore ha bisogno per sfruttare il meccanismo di ricerca delle DLL e migliorando così la sicurezza dell’ambiente.
Software di sicurezza:
- Antivirus e anti-malware: utilizzare software antivirus e anti-malware affidabili per rilevare e impedire il caricamento di DLL dannose. Questi strumenti possono eseguire scansioni alla ricerca di file e comportamenti dannosi noti.
- Sistemi di rilevamento delle intrusioni (IDS): implementare IDS per monitorare attività insolite, come modifiche inattese ai file DLL o tentativi di caricare DLL da posizioni non sicure.
Gestione delle patch:
- Mantenere aggiornato il software: aggiornare regolarmente applicazioni e sistemi operativi con le patch di sicurezza più recenti. Molte vulnerabilità di DLL hijacking vengono risolte tramite aggiornamenti, quindi restare al passo aiuta a proteggersi dalle minacce note.
- Patching automatizzato: utilizzare uno strumento di gestione automatizzata delle patch per garantire che tutti i sistemi siano mantenuti aggiornati senza intervento manuale. Questo riduce la finestra di opportunità per gli aggressori di sfruttare vulnerabilità note, incluse quelle che potrebbero essere utilizzate per il DLL hijacking. Questo approccio proattivo aiuta a mantenere l’integrità delle applicazioni e dei sistemi operativi, rendendo molto più difficile per gli aggressori inserire DLL dannose.
Implementando queste best practice, è possibile ridurre in modo significativo il rischio di DLL hijacking e migliorare la sicurezza complessiva di applicazioni e sistemi.
Combinare strumenti e tattiche adeguati per prevenire il DLL hijacking
Il DLL hijacking è una forma di attacco persistente da anni, a dimostrazione del fatto che è ancora efficace e continuerà quindi a rappresentare un problema per le organizzazioni.
Prepara la tua organizzazione al futuro utilizzando le best practice citate sopra insieme a soluzioni comprovate come Ivanti Neurons for App Control per contribuire a mantenere sicure le DLL. Funzionalità come Trusted Ownership rilevano e impediscono l’esecuzione di una DLL sottoposta a hijacking verificando che la proprietà degli elementi corrisponda all’elenco approvato di proprietari attendibili.
Inoltre, mantieni aggiornate le app per limitare l’esposizione alle vulnerabilità note. Elimina il rischio di errore umano automatizzando il patching con Ivanti Neurons for Patch Management, assicurando che i sistemi siano aggiornati e protetti automaticamente.
Domande frequenti
Cos’è il DLL hijacking e perché è pericoloso?
Il DLL hijacking è una vulnerabilità in cui gli aggressori sostituiscono una Dynamic Link Library (DLL) legittima con una DLL dannosa. Questo consente loro di eseguire codice nocivo con gli stessi privilegi dell’applicazione, generando rischi come furto di dati, infezione da malware e compromissione completa del sistema.
Come avviene il DLL hijacking?
Si verifica quando le applicazioni caricano DLL da posizioni non sicure. Le tecniche comuni includono:
- Ordine di ricerca delle DLL non sicuro (caricamento da directory prima di quelle attendibili).
- Manipolazione dei percorsi relativi.
- Reindirizzamento delle DLL tramite modifiche al PATH.
- Sfruttamento di autorizzazioni deboli sulle directory.
- Phantom DLL hijacking (inserimento di DLL dannose dove sono previste DLL inesistenti).
In che modo la gestione automatizzata delle patch può contribuire a ridurre i rischi di DLL hijacking?
Il patching automatizzato assicura che i sistemi ricevano tempestivamente gli aggiornamenti di sicurezza, chiudendo le vulnerabilità note prima che gli aggressori possano sfruttarle. Riduce l’errore umano e mantiene applicazioni e sistemi operativi costantemente protetti.
Quali strumenti possono aiutare a proteggersi dal DLL hijacking?
Soluzioni come Ivanti Neurons for App Control applicano la proprietà attendibile, bloccando le DLL non autorizzate, mentre Ivanti Neurons for Patch Management automatizza gli aggiornamenti per ridurre al minimo l’esposizione alle vulnerabilità.