Questo articolo è stato pubblicato sul blog de "Il Sole 24 Ore" in forma leggermente diversa: Software, perché tra errori e attacchi siamo come elefanti nella cristalleria

Nell'immaginario collettivo la trasformazione digitale porterà a un futuro migliore. Invece, le voci critiche parlano di disastri sociali. In realtà, la sfera di cristallo non l'abbiamo e solo fra 50 o 100 anni potremo giudicare questa scelta dell'umanità come oggi giudichiamo la scelte più importanti del secolo scorso. Ma riguardo alla trasformazione digitale ci sono alcuni fatti incontrovertibili di cui possiamo parlare già oggi.

La natura non esiste più

La tecnica ha da tempo assorbito la realtà: non c'è più spazio per la natura e le sue leggi. Qualsiasi nostra azione vede una tecnica come intermediario fra gli esseri umani e il loro ambiente naturale. Nutrirsi è la cosa più naturale che esista, eppure non siamo più in grado di farlo senza il supporto delle nostre tecniche. Abbiamo ancora sotto controllo il movimento piatto-bocca, ma prima di quel gesto la pietanza potrebbe essere passata per: un forno, un frigorifero, un camion, un nastro trasportatore, un'impacchettatrice, una vasca per il lavaggio, un trattore, un impianto d’irrigazione, una produzione di sementi. Tutte intermediazioni fra l'uomo e la natura. Se prima l'essere umano era in simbiosi con la natura e ne seguiva le sue leggi, ora più che mai è in simbiosi con l'ambiente tecnico coi suoi modelli approssimativi, la complessità e la rapidità.

Il passo di qualità nello sviluppo dell'ambiente tecnico come rifugio per l'essere umano è avvenuto nella seconda metà del secolo scorso con l'invenzione dei microprocessori e delle reti di calcolatori. La combinazione di queste due tecnologie permette di controllare tutte le altre in modo uniforme attraverso il software, aggiungendo così un nuovo livello d’intermediazione. Per dirlo con le parole dell’investitore Marc Andreessen "il software si sta mangiando il mondo". Forse possiamo illuderci che quando martelliamo un chiodo non ci sia un software, ma se iniziamo a interrogarci su come quel chiodo e quel martello siano finiti nelle nostre mani, allora troveremo moltissimo software senza il quale non avremmo né il chiodo né il martello [1].

[1]Pensate ad esempio alla cosa più ovvia: pagare. Se usate una carta di credito va da sé che un software effettuerà la transazione e deciderà se potete oppure no fare quell'acquisto; invece, se usate i contanti, allora li avrete prelevati da una banca che usa un software per l'erogazione delle banconote, e deciderà lui se potete o no prelevarli. A voi pensare a quanto altro software c’è dietro a questa banale azione.

La trasformazione digitale è già avvenuta ed è irreversibile

Alla base della trasformazione digitale vi è il software, tanto, tantissimo software, e questo è onnipresente già da molti anni. Dunque, di fatto, la trasformazione digitale è già avvenuta, ma evidentemente non è abbastanza: esistono ancora alcuni bastioni dove l'umanità, la natura, e il caso resistono.

Detto ciò, non si può negare che la digitalizzazione ha fatto aumentare la produttività e l’efficienza di tutti i sistemi tecnici, rendendo antieconomica qualsiasi alternativa. Inoltre, questo processo ha reso possibili cose che 20 anni fa potevano essere descritte solo nei libri di fantascienza, aprendo la possibilità a nuovi giri d’affari. Ci si potrebbe interrogare a lungo se effettivamente avevamo bisogno di tutte quelle cose, ma sarebbe una discussione inutile perché oramai ne siamo dipendenti e nessuno è più disposto a rinunciarvici. Il software si è reso indispensabile e insostituibile, rendendo di fatto la trasformazione digitale obbligatoria e irreversibile.

Dunque, il software si è già mangiato il mondo, non si può eliminare, e non è ancora sazio. Ad oggi sarebbe fantascienza, ma la situazione è tale per cui se esistesse una pandemia di un virus informatico in grado di attaccare qualsiasi software, allora farebbe molti più morti del covid-19. E sia chiaro, non moriremmo di noia senza le foto dei gattini, ma piuttosto di fame o freddo. Ad esempio, la produzione e la distribuzione elettrica sono gestite da software e sia l’intera filiera alimentare, che il riscaldamento domestico dipendono da questo servizio essenziale.

Un delicato equilibrio fiduciario

Oggigiorno la situazione non è così drastica, ma prima che lo diventi bisogna interrogarsi sulla qualità del software a cui affidiamo le nostre vite. Un primo spunto di riflessione ce lo fornisce Ken Thompson che nel 1984 scrive l'articolo "Reflections on trusting trust" (riflessioni sul fidarsi sulla fiducia) dove mette in luce che non ci si può fidare di un software su cui non si ha il controllo totale. Ma al giorno d'oggi i sistemi software sono così complessi che questo controllo totale è irrealizzabile. Gli sviluppatori fanno atti di fiducia quando integrano componenti software di terze parti, o usano software di supporto allo sviluppo. Mentre come utenti facciamo un atto di fiducia ogni volta che direttamente, o indirettamente, usiamo un’applicazione. Miliardi di righe di codice verranno eseguite per fornirci un servizio, e speriamo che non venga eseguito codice difettoso, o peggio malevolo. Ma purtroppo non può che essere così altrimenti i costi dello sviluppo software esploderebbero.

Anche noi utenti facciamo atti di fiducia continui verso il software. Quando guardiamo una bicicletta arrugginita nutriamo dubbi sulla sua affidabilità e possiamo scegliere se usarla o meno. Quando ci viene proposto un software non possiamo guardarlo, lo usiamo direttamente e non c’è modo di valutarne la qualità, nemmeno a spanne: ci fidiamo. Se dei dieci libri che avevamo ordinato ne riceviamo solo nove, saremo molto più propensi a incolpare il magazziniere sbadato, o il fattorino ladro piuttosto che il software della piattaforma di commercio elettronico. La fiducia è tale per cui spesso l’onere della prova di un errore software spetta alla vittima del danno, che difficilmente avrà i mezzi e le competenze per dimostrarlo. Per esempio, la mia macchina non ha frenato, e così ho tamponato chi mi precedeva: sono io a non aver premuto il pedale, o è il software del freno che non ha stretto le pinze? Siate sinceri, state pensando che io non abbia frenato.

Non c’è da disperarsi, nella stragrande maggioranza dei casi il software fa quello che deve fare correttamente, e la fiducia che gli diamo non è diversa da quella data all’autista di un autobus. Ma quando il software sbaglia, e le patatine non cadono dalla macchinetta, o la diagnosi medica è completamente sbagliata, possiamo evitare che si ripeta? Per rispondere bisogna essere in grado di “spiegare” il perché di una scelta sbagliata, e questo punto è così importante che inizia a essere considerato anche dal legislatore. In particolare, nell’ambito della regolamentazione RGPD, l’Unione Europea inizia ad affacciarsi su questo aspetto, e all’articolo 22, e nel motivo 71, sancisce il diritto a non essere oggetto di decisioni automatizzate, o ad avere una spiegazione di queste decisioni. Purtroppo non sempre si riescono a “spiegare” i risultati o le scelte di un software, in particolare quando sono coinvolti alcuni algoritmi d’intelligenza artificiale. La maggior parte delle volte ci fidiamo, e il capro espiatorio sarà l’essere umano.

La trasformazione digitale del crimine e della guerra

La trasformazione digitale non riguarda solo il bello e il brutto della vita, ma anche il cattivo. Anche la criminalità si digitalizza e migliora la propria produttività. Se prima si aggredivano poche persone alla volta, ora se ne possono aggredire a milioni in pochi click, e spesso sfruttando quella fiducia che abbiamo verso i sistemi software. L'FBI ha misurato che gli attacchi verso i privati sono in costante crescita e che nel 2018 sono costati più di 2.7 miliardi di dollari. Invece, Accenture ci dice che il 43% degli attacchi informatici sono diretti verso aziende, ma che solo il 14% è pronto a difendersi. Infine, per IBM un'azienda impiega circa 197 giorni per rendersi conto di essere stata vittima di un attacco, e 69 giorni per porvi rimedio. Da qui la stima di Embroker dei costi che il cybercrimine impone sulle aziende a livello mondiale, che per il 2021 sarà di 6000 miliardi di dollari, mentre per il 2025 sarà di 10500 miliardi.

Negli ultimi tempi avrete di sicuro sentito parlare dei problemi software di Microsoft Exchange che hanno permesso l’attacco a più di 250000 server di cui diverse decine di migliaia appartenenti a organizzazioni governative. Questi attacchi sono stati per lo più di tipo ransomware: ovvero l'attaccante sfrutta un difetto software per entrare in un sistema e sequestrare dei dati che verranno rilasciati, forse, al pagamento di un riscatto (ransom).

Ma non serve andare oltre oceano per avere un’idea di cosa sta accadendo. Rimanendo nella nostra bella Italia, e limitandoci a pochi casi recenti, possiamo leggere dei seguenti attacchi: “Sistema informativo del Comune di Brescia paralizzato da ransomware. Gli hacker chiedono riscatto di 1,3 milioni di euro”, “Attacco informatico ai server dell’Agenzia Territoriale per la Casa di Torino, oltre mezzo milione di euro il riscatto chiesto dagli hacker”.

Nel paragrafo precedente immaginavo un attacco informatico alla rete elettrica. Ebbene, non è un esempio a caso perché gli attacchi alla rete elettrica, e più in generale all’infrastruttura civile, sono una realtà in forte crescita negli ultimi due anni sia da parte di criminali, sia da parte di eserciti stranieri. Questi sistemi sono stati resi vulnerabili proprio dalla trasformazione digitale che li ha voluti esposti alla rete internet [12] [13].

[12]Perché la rete elettrica è ancora così vulnerabile agli attacci cibernetici?
[13]Gli attacchi cibernetici fanno sembrare la rete elettrica intelligente alquanto stupida

Gli incidenti software

Il tema della sicurezza informatica ha una lunga storia che si lega alla qualità del software perché un software di bassa qualità ha molte più probabilità di contenere difetti che possono provocare danni, o aprire le porte ai malintenzionati.

Il consorzio per la qualità dell'informazione e del software (CISQ - Consortium for Information & Software Quality) si prefigge come obiettivo proprio quello di misurare la qualità del software e di promuovere delle attività per migliorarla. Inoltre, il CISQ cerca di stimare i costi dovuti alla scarsa qualità del software, e i dati non sono incoraggianti. Per i soli Stati Uniti d'America si stima che nel 2020 il costo totale sia stato di 2080 miliardi di dollari, ovvero il 10% del PIL statunitense. A questo andrebbe aggiunto il cosiddetto debito tecnico, ovvero gli investimenti futuri necessari a correggere i problemi dei sistemi in uso; questo debito viene stimato per il 2020 in 1310 miliardi di dollari.

I sistemi software sono diventati talmente complessi e onnipresenti che secondo il CISQ siamo nell'era degli errori software miliardari (in termini di perdite finanziarie e/o di cassa). Nel dettaglio, l'azienda di analisi software Tricentis stima che nel 2017 606 difetti software hanno causato danni a 3.6 miliardi di persone e mancati guadagni per 1700 miliardi di dollari, per una media di 2.8 miliardi di dollari per singolo difetto.

Nei suoi rapporti il CISQ fornisce anche una lista degli errori software che hanno fatto più notizia negli Stati Uniti d’America; forse il più eclatante è il caso dei disastri aerei del modello Boeing 737 Max. Il valore delle vite umane perse è incalcolabile, ma sappiamo che questo errore è costato alla Boeing 18.7 miliardi di dollari (al marzo 2020). Il problema di fondo era meccanico, ma Boeing decise di usare un software “intelligente” per correggerlo. Il fallimento di questo software ha portato ai disastri che conosciamo. In seguito sono stati scoperti molti altri difetti software, che sono poi stati corretti e resi disponibili tramite un aggiornamento software.

Di seguito solo alcuni esempi “leggeri”. Nel giugno del 2018 la compagnia aerea americana “PSA airlines” ha dovuto cancellare 3000 voli perché il software per la gestione dei turni del personale aveva commesso degli errori. Nell’agosto del 2018 la banca americana “Wells Fargo bank” avviò le procedure di pignoramento per 400 proprietari di casa per via di un errore di calcolo software. Nel luglio 2020 il sistema di check-in usato dalla compagnia aerea TUI identificava come bambine tutte le donne che si dichiaravano “Sig.na”, portando quindi a un calcolo errato della massa dell’aereo: una comitiva di signorine avrebbe potuto rivelarsi fatale. Queste sono solo alcune storie di errori software “leggeri”, ma chi mai avrebbe potuto immaginare che dichiararsi “Sig.na” in un modulo di prenotazione avrebbe potuto costarvi la vita?

Qui va sottolineato che i vantaggi dei sistemi software sono anche le loro stesse debolezze. Questi sistemi non vanno visti come miglioratori, ma piuttosto come amplificatori perché sono oggetti neutri che amplificano sia in bene che in male. Un impiegato molto sbadato può commettere errori su tutte le pratiche che gestisce. Un programmatore molto sbadato produce software che commette errori su tutte le pratiche che gestisce. A voi l’esercizio di stimare i vantaggi e i problemi portati dai due attori.

La maggior parte degli errori sono semplicemente figli della disattenzione di chi progetta o programma, e della mancanza di controllo sulla qualità. Il lavoro di un ingegnere del software, o di un programmatore, è un lavoro prettamente intellettuale. Un lavoratore, stressato, malpagato, o infelice, è un lavoratore che avrà per la testa altre preoccupazioni che gli impediranno di essere attento nell’attività intellettuale che gli viene richiesta. Quindi, la probabilità che commetta errori sarà molto più alta. Certi errori potrebbero essere scoperti tramite processi di controllo qualità del software, ma troppo spesso questa attività viene trascurata per accelerare la messa in produzione, o per un’eccessiva fiducia nelle proprie capacità aziendali. Dunque, questi sono i due temi principali su cui investire per ridurre la propria esposizione verso errori potenzialmente catastrofici.

La cristalleria digitale

In questo articolo abbiamo visto che il nostro mondo è dominato dalla tecnica, e che il software ne è il principale coordinatore. La trasformazione digitale iniziò diverse decenni fa, e quello di cui parliamo oggi è forse la conclusione di questo relativamente breve processo trasformativo (se confrontato con la storia dell’umanità). Le nostre vite sono diventate così piene di tecniche e di software che iniziamo a riconoscerlo come il nostro “ambiente naturale”, rinnegando il passato, e adattandoci alla schematicità e ai limiti dell’ambiente tecnico. Ed è qui che ci sentiamo al riparo; ed è qui che riponiamo la nostra fiducia. Al contempo, nello stesso modo in cui si crea, questo mondo lo si può danneggiare, e ci sono file di malintenzionati che per gioco o per lucro sono intenzionati a farlo.

Questo mondo che ci siamo creati non è dissimile da un negozio di cristalli. Un negozio dove i commessi a volte posizionano male gli oggetti, o non si curano della loro sicurezza; e dove i clienti spesso entrano incuranti della delicatezza della merce, o con la voglia di “distruggere qualcosa di bello” (cit.).

Non sempre ci si rende conto che al software è stato dato un grande potere, e che a questo si accompagnano altrettanto grandi responsabilità. Con questo scritto spero di avervi fatto pensare un po’ di più a quel lato oscuro che rende molto fragile il nostro mondo digitale, ai rischi concreti che dobbiamo tenere bene a mente quando parliamo di software, e che dobbiamo sempre esigere standard qualitativi alti.