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.

Flowchart showing DLL loading sequence. A purple box labeled “Application starts and requests DLL” connects to three folders: “Current Working Directory,” “Network Share,” and “System32.” The Current Working Directory points to a red box labeled “Malicious DLL” with a warning icon, while Network Share and System32 point to orange boxes labeled “Legitimate DLL” with checkmark icons.

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.

Circular diagram divided into six colored segments around a center labeled “DLL Hijacking Techniques.” Segments include “Phantom DLL Hijacking,” “Insecure DLL Search Order,” “Relative Path Manipulation,” “DLL Redirection,” “Weak Permissions,” each with a small icon representing the concept.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.

Five concentric circles in gradient colors from orange to purple, representing security layers. The innermost circle reads “Secure DLL Loading,” followed by “Integrity Checks,” “User Permissions,” “App Control and Security Software,” and the outermost circle labeled “Patch Management.”

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.