Scanner di vulnerabilità: ecco come funzionano
21/07/22 CoreTech Blog
Gli scanner di vulnerabilità DAST non sono così diversi dagli scanner di virus. In entrambi i casi, l'obiettivo dei software è trovare anomalie nel bersaglio.
Uno scanner antivirus esegue la scansione delle risorse locali e dello storage di un computer per trovare software potenzialmente dannoso.
Uno scanner di vulnerabilità esegue la scansione di un bersaglio per trovare software potenzialmente vulnerabile.
Entrambi usano tecniche simili per farlo.
La scansione signature-based, cioè basata sulla firma
Nel caso della scansione basata sulla firma, lo scanner cerca modelli riconoscibili, che sono preparati dal produttore dello scanner o presi da un database pubblico. Per esempio:
- Uno scanner antivirus cerca una determinata catena di byte presenti in un file eseguibile dannoso. Se la trova, considera che il file dannoso sia stato trovato.
- Uno scanner di rete cerca una determinata risposta dal server per riconoscere la versione esatta del software che utilizza. Può essere semplice, come nel caso in cui il software risponda effettivamente con informazioni sulla versione utilizzata, oppure più complesso, riconoscendo, per esempio, determinati comportamenti tipici.
- Uno scanner SCA cerca determinati elementi di codice nel codice sorgente, nel codice intermedio o nel codice binario. Questo avviene per riconoscere un componente noto utilizzato/importato dal software, nonché la sua versione esatta.
La scansione basata sulla firma presenta diversi vantaggi:
- Di solito è abbastanza veloce. Infatti, non è necessario eseguire alcuna operazione, se non il confronto di catene di byte dalla libreria dello scanner con catene di byte ricevute dalla destinazione.
- È meno invadente e non ha quasi effetti collaterali.
- È molto facile per il produttore dello scanner, perché non è necessario scrivere codice personalizzato. Esistono anche database di firme di pubblico dominio, che possono essere utilizzati per creare il proprio database.
Sfortunatamente, ci sono anche alcuni importanti svantaggi in questo tipo di scansione:
- Non è sempre molto precisa. La firma non garantisce che il risultato trovato sia dannoso.
- Non c'è assolutamente alcuna prova che il risultato riportato sia dannoso. Poiché lo scanner confronta solo le firme, non verifica se le sue ipotesi sono vere.
- La maggior parte degli scanner è limitata a firme note e non è in grado di riconoscere mutazioni (ad esempio, una firma con un byte diverso), irregolarità (ad esempio, un server configurato in modo diverso) o nuove minacce.
La scansione behavior-based (scansione euristica)
L'altro modo per cercare contenuti dannosi è analizzare effettivamente il comportamento del target. Ciò significa che lo scanner deve comprendere il modo in cui funziona il target, non solo confrontare una firma. Per esempio:
- Quando uno scanner antivirus euristico trova un file potenzialmente eseguibile, può effettuare il reverse engineering su di esso per verificare esattamente cosa fa il codice. Questa operazione serve per capire se le sue azioni sono dannose. Potrebbe anche provare a eseguire il codice in un ambiente sicuro per vedere i risultati.
- Quando uno scanner di vulnerabilità web trova un elemento che consente l'input dell'utente, tenta di "ingannare il bersaglio" inviando dati imprevisti. Quindi analizza la risposta del target per vedere se ha avuto successo.
La scansione euristica presenta alcuni importanti vantaggi:
- In teoria, è in grado di trovare qualsiasi tipo di minaccia, anche personalizzata o zero-day. Ovviamente, dipende da quanto è avanzato il software.
- È più preciso perché controlla effettivamente se le sue ipotesi sono corrette. A volte, può anche fornire una prova.
Sfortunatamente, anche la scansione euristica presenta alcuni svantaggi:
- Può essere più dispendiosa in termini di risorse rispetto alla scansione basata sulla firma. Uno scanner euristico ha bisogno di più tempo per trovare i risultati e potrebbe rallentare il bersaglio più di uno scanner basato sulla firma.
- Costruire un buon scanner euristico è molto difficile e richiede il massimo talento. A differenza degli scanner basati sulle firme, ogni nuovo tipo di attacco deve essere programmato e simulato. Una libreria di scanner euristica non è solo un elenco di stringhe da confrontare, ma richiede un software personalizzato reale per ogni tipo di controllo.
Il meglio dei due mondi: signature based e behavior based
Molti scanner professionali tentano di utilizzare entrambi i tipi di scansione, ma il tipo principale dipende molto dal tipo di scansioni eseguite:
- Gli scanner antivirus sono quasi sempre principalmente basati sulle firme. Alcuni scanner antivirus avanzati hanno anche la scansione basata sul comportamento, ma spesso è facoltativa (perché tali scansioni richiedono più tempo e risorse).
- Gli scanner di rete sono quasi sempre basati sulla firma. Questo perché gli scanner di rete si concentrano sulla ricerca di versioni software obsolete e configurazioni errate, che possono essere facilmente riconosciute utilizzando le firme.
- Gli scanner di vulnerabilità web sono sempre principalmente euristici, ma possono utilizzare firme ove appropriato.
Noi di Acunetix sposiamo il meglio di entrambi i mondi nel miglior modo possibile:
- Lo scanner Acunetix è principalmente uno scanner basato sul comportamento. I nostri controlli avanzati sono progettati uno alla volta, singolarmente, ed eseguono attacchi (finti) sicuri. Nella maggior parte dei casi, possiamo provare che l'attacco ha avuto successo mostrandoti, per esempio, un file a cui lo scanner non dovrebbe mai avere accesso (come il tuo file di configurazione del server). Questa è un'abilità unica, che la maggior parte degli scanner non ha.
- Siccome il nostro scanner controlla anche cose come versioni software obsolete e fornisce funzionalità SCA, dove è applicabile e non è necessario codice personalizzato, utilizziamo controlli basati sulla firma. Ciò rende la scansione più veloce e meno intensa sul target: Acunetix è spesso riconosciuto come lo scanner più efficiente sul mercato.
- Acunetix aggira i limiti della scansione basata sulle firme. Invece di utilizzare firme basate su hash, riconosce molte vulnerabilità anche se il codice o la risposta sono stati leggermente modificati.
- Il nostro scanner combina i vantaggi della scansione basata sulla firma con quelli della scansione attiva, nello stesso controllo di vulnerabilità. Per esempio, se individuiamo una versione del software tramite la scansione basata sulle firme, il nostro controllo di vulnerabilità effettivo per quel software potrebbe considerare la versione trovata e ottimizzare il test di conseguenza. Così il controllo della vulnerabilità è più veloce e più affidabile.
Nonostante molte vulnerabilità rilevate da Acunetix siano identificate con codici CVE/CWE, usiamo quei database solo per l’identificazione di vulnerabilità note. Le vulnerabilità nel software personalizzato non avranno quei codici, perché il punto di forza di Acunetix è trovare problemi che non sono riconosciuti in nessun database.