I vari prodotti di sicurezza della nota casa Kaspersky lavorano a stretto contatto col sistema operativo, impiegando un driver che tra le altre cose monitora anche le chiamate di sistema di Windows. Il controllo sul passaggio di parametri effettuato dal driver non sembra essere però corretto: ciò apre la porta a possibile attacchi che sfruttando dati non validi portano al crash del sistema.
Il security provider MatouSec, che ha segnalato il bug, lascia intendere che questa falla potrebbe essere ben più pericolosa di quanto sembri, alludendo a potenziali attacchi di tipo “code injection and execution“.
I prodotti di sicurezza molto spesso si “agganciano” alle funzioni di sistema con lo scopo di monitorare lo stato di funzionamento ed esecuzione di una macchina.
Mediante chiamate alla System Service Descriptor Table (SSDT) è possibile determinare quali programmi sono attivi sul computer e cosa stanno facendo: è possibile quindi prendere decisioni appropriate e interrompere per esempio l’esecuzione di un programma che abbia un comportamento “potenzialmente malevole”. Un’altra funzionalità importante è che questo consente di evitare che potenziale malware tenti di intaccare il comportamento dei software di sicurezza stessi.
Il driver klif.sys si aggancia a svariate syscalls tra cui NtCreateKey, NtCreateProcess, NtCreateProcessEx, NtCreateSection, NtCreateSymbolicLinkObject, NtCreateThread, NtLoadKey2, NtOpenKey e NtOpenProcess.
Se un programma effettua una chiamata ad una di queste funzioni con parametri non validi, il computer crasha e riparte.
Un interessante post su RootKit.com di EP_XoFF spiega questa vulnerabilità (presumibilmente piuttosto datata) usando la funzione NtOpenProcess.
Kaspersky ha reagito alle segnalazioni postando il proprio advisory di sicurezza e annunciando una patch che la compagnia distribuirà a breve tramite il sistema di automatic update.
Kaspersky ha classificato la minaccia come “low”, poichè richiede che un utente locale esegua il software malevole.
Stando all’advisory, la vulnerabilità non consentirebbe l’escalation di privilegi o l’esecuzione di codice esterno.
Le versioni interessate dal problema sembrano essere: Kaspersky Antivirus 6 e 7, Internet Security 6 e 7, Anti-Virus for Windows Workstations 6 e Anti-Virus 6 for Windows Servers, per sistemi operativi da Windows NT a Windows 2003. Sotto Windows Vista sembra che il famigerato crash di sistema non si verifichi.
Questo annunci conferma la crescente tendenza nella scoperta di bug che interessano software dedicati alla sicurezza. I bug scoperti negli antivirus di F-Secure, Grisoft e Avira (tra gli altri) sono legati a problemi di buffer overflows e format string vulnerabilities.
Questi fenomeni per la maggior parte sono da imputare il più delle volte ad una carenza per i dettagli durante la fase di programmazione.
Questo trend non lascia di certo ben sperare, è quindi auspicabile che ci sia un cambiamento di rotta, in virtù del fatto che software come personal firewall e antivirus sono la prima linea di difesa contro la diffusione su larga scala di malware e virus di ogni tipo.
LINKS:
Kaspersky Multiple insufficient argument validation of hooked SSDT function Vulnerability, advisory di MatouSec
Exploiting Kaspersky Antivirus 6.0-7.0, bug report di EP_X0FF
KLV07-07.Klif.sys calling NtOpenProcess vulnerability, security advisory di Kaspersky