I ricercatori di Checkpoint Security Research Gal Elbaz e Dvir Atias hanno pubblicato un articolo in cui dimostrano la possibilità di effettuare un attacco utilizzando WSL ( Windows Subsystem for Linux ), un componente opzionale di Windows 10 e Windows Server 2016 che consente l’uso di comandi Linux su un ambiente Windows , senza il bisogno di ricorrere alla virtualizzazione. L’attacco è stato chiamato bashware dagli stessi ricercatori.
Windows Subsystem for Linux è stato rilasciato in beta ad agosto dello scorso anno, con l’Anniversary Update di Windows 10, e ne è uscito ufficialmente poco meno di due mesi fa ; si compone di una serie di strumenti che consentono l’interazione tra eseguibili Linux e l’ambiente Windows su cui risiedono : un’istanza Linux viene eseguita in user mode , all’interno della stessa vengono eseguiti gli applicativi Linux, sotto forma di appositi processi Pico le cui istruzioni vengono tradotte da chiamate di sistema Linux ad API Windows da due driver Pico : lxss.sys
e lxcore.sys
.
I processi Pico sono processi leggeri che non contengono le strutture dati tipiche dei processi NT, come il process environment block : nonostante ciò, sono in grado di interagire con il sistema operativo – sia in modalità utente che in modalità kernel – allo stesso livello di un processo NT classico, attraverso gli appositi driver.
L’attacco documentato si suddivide in quattro fasi: nella prima viene abilitato WSL utilizzando un comando dell’utility DISM:
Dism /online /Enable-Feature /FeatureName:Microsoft-Windows-Subsystem-Linux /All
In seguito all’installazione del componente, la quale prevede il riavvio del computer, va abilitata la modalità developer ; per fare ciò è necessario avere il controllo di un utente con il ruolo di amministratore di sistema locale , e scrivere due chiavi di registro:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock\AllowAllTrustedApps
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock\AllowDevelopmentWithoutDevLicense
In seguito, va installato un sistema operativo Linux, tra quelli disponibili all’interno del Windows Store (Ubuntu, SUSE, Fedora), ma la peculiarità nell’attacco si trova all’interno dell’ultima fase: installando WineHQ all’interno dell’istanza Linux, risulta possibile eseguire un’applicazione Windows all’interno di WSL, rendendola invisibile all’ecosistema Windows soprastante . Ciò avviene in quanto le chiamate NT dell’applicazione vengono convertite da Wine in chiamate POSIX, per poi essere riconvertite in chiamate NT dai driver Pico: in quest’ultima fase, il driver lxcore.sys diventa l’effettivo chiamante del processo maligno.
Un’ulteriore vulnerabilità riscontrata dai ricercatori riguarda il download e l’installazione del sotto-sistema operativo Linux: l’istanza Linux viene salvata sotto forma di archivio tar.gz
in una cartella nascosta contenuta in %APPDATA%
; una volta terminato il download, l’archivio viene estratto all’interno della stessa cartella. Tuttavia, l’unico controllo di sicurezza atto a verificare l’autenticità dell’archivio è un file di testo, contenente l’hash dello stesso, in formato SHA256. Un attaccante potrebbe quindi calcolare l’intervallo di tempo giusto per manomettere il valore dell’hash e sostituire di conseguenza il file system Linux con uno contraffatto , in grado di eseguire software malevolo bypassando le funzionalità di sicurezza di Windows come l’UAC.
Un portavoce Microsoft ha rilasciato dichiarazioni ufficiali via email a Motherboard , ritenendo la vulnerabilità poco significativa in termini di rischio per l’utente , a causa della quantità di passi necessari e della necessità di una privilege escalation per abilitare la modalità developer .