È noto come le vulnerabilità affliggano applicazioni, servizi e sistemi operativi. È noto come questi siano sottoposti a revisione continua e correzioni (patch) per diminuire o risolvere l’impatto di queste vulnerabilità. È altresì noto come, in casi di estrema necessità, solo degli attenti ed efficaci sistemi di sicurezza automatici possano divenire baluardo, mitigazione e soluzione per vulnerabilità all’interno del perimetro.
Ma cosa accade quando la vulnerabilità affligge persino gli strumenti di difesa? Ebbene, questo non è certamente un caso irrealistico (i sistemi di difesa sono pur sempre software), e nemmeno, ahimè, un caso d’accademia: è infatti cronaca recente l’individuazione di una grave vulnerabilità (CVSS 7.5) che affligge Snort, il famoso software open source per l’implementazione di un sistema IDS/IPS salito sugli altari del mondo professionale per il passaggio sotto l’ala (interessata) di Cisco (con l’acquisizione di SourceFire, l’azienda che lo aveva ideato).
Ovviamente onori ed oneri, in quanto l’interesse di Cisco è sempre stato quello di integrare Snort in suoi prodotti commerciali; ed è così che questa vulnerabilità, la CVE-2022-20685, non solo interessa le versioni del software, ma anche alcuni prodotti Cisco che lo utilizzano, e segnatamente: Cyber Vision Software, tutte le piattaforme FirePOWER Services Software, tutte le piattaforme Firepower Threat Defense (FTD) Software e Meraki MX Series Software, come segnalato da Cisco stessa nell’avviso https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-snort-dos-9D3hJLuj
Ma veniamo alla vulnerabilità. Si tratta di un difetto nel preprocessore per il protocollo Modbus che agisce nella fase di preparazione dei pacchetti catturati per eseguirne l’identificazione (detection) e l’eventuale azione in contrasto. Modbus è un protocollo industriale molto vecchio, nato nel 1979 su comunicazioni attraverso linee seriali e solo successivamente portato nel nostro mondo delle comunicazioni in reti TCP/IP. Ma Modbus è il protocollo delle reti SCADA, onnipresenti in ambito industriale e pertanto insostituibile. Ne consegue la necessità del suo monitoraggio di sicurezza, cosa che appunto con il suo preprocessor Snort si prefigge di portare a compimento.
Cosa c’è che non va dunque in Snort: nel trattare il traffico Modbus, il preprocessore di Snort ha un difetto di programmazione nel controllo della dimensione di alcuni parametri della comunicazione, in particolare un difetto di programmazione come descritto dal CWE-190 (Integer Overflow or Wraparound), che significa l’utilizzo di variabili intere troppo piccole da determinare errori di calcolo.
Questo errore di calcolo però può essere causa, nel comportamento del software, di un DoS (Denial of Service), ovvero può impedire il funzionamento del software innescando un ciclo infinito di una sua parte. Ciò impedirebbe a Snort di eseguire altre funzioni di analisi e notifica sul restante traffico, rendendolo di fatto non efficace, oserei dire inutile.
Per rendere questo possibile è “sufficiente” che un attaccante invii un pacchetto di protocollo Modbus appositamente creato per innescare gli effetti del difetto. Quindi il difetto è “tecnicamente” facilmente sfruttabile, che lo rende più insidioso.
Eseguire dunque indagini di sicurezza anche sugli strumenti dedicati alla sicurezza non è solo un esercizio di stile.