Software, perché tra errori e attacchi siamo come elefanti nella cristalleria

scritto da il 07 Giugno 2021

Post di Federico Vaga, Ingegnere informatico e corsista EMBA Ticinensis

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 le scelte più importanti del secolo scorso. Ma riguardo alla trasformazione digitale ci sono alcuni fatti incontrovertibili di cui possiamo parlare già oggi.

La trasformazione digitale è già avvenuta ed è irreversibile
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 noi e l’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 dalla semina al piatto ci sono dozzine d’intermediazioni tecniche: produttive, di trasporto, di conservazione, di cottura, e via dicendo. In realtà tutta la nostra vita, direttamente o indirettamente, è regolamentata da diverse tecniche: pedagogiche, informatiche, militari, diagnostiche, comunicative, contabili, di gioco, e moltissime altre.

Il salto 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 nostre tecniche 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. Per esempio, riflettete sul pagamento elettronico o sul prelevamento di contante.

Il software è l’ingrediente fondamentale della trasformazione digitale, ma come detto poc’anzi esso è già onnipresente da diversi anni, dunque questa trasformazione è in buona parte già avvenuta e poco rimane da digitalizzare. Semmai si può parlare di ammodernamento dei sistemi digitali più vecchi al fine di migliorarne le prestazioni nella gestione dei processi. Infatti, già oggi possiamo vederne i risultati straordinari che si possono ottenere mediante software, ed è per questo che vorremmo ancora più digitalizzazione. Di fatto, il software si è già reso indispensabile e insostituibile, rendendo la trasformazione digitale inevitabile e irreversibile.

Un delicato equilibrio fiduciario
A questo punto vale la pena 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. Quando guardiamo una bicicletta arrugginita nutriamo dubbi sulla sua affidabilità e possiamo scegliere se usarla o meno. Di un software vediamo solo la sua interfaccia grafica, ma questa rappresenta solo la punta di un iceberg, il resto è invisibile e per questo non possiamo giudicarlo, spesso nemmeno utilizzandolo. Dunque, utilizziamo tantissimo software inconsapevoli della sua effettiva qualità, semplicemente ci fidiamo.

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. Tuttavia 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 generale sulla protezione dei dati, l’Unione Europea inizia ad affacciarsi su questo aspetto (1) e sancisce il diritto a non essere oggetto di decisioni automatizzate, o ad averne una spiegazione. 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; a maggior ragione in questi casi bisogna decidere se fidarsi o meno.

Elefant im Porzellanladen

La trasformazione digitale del crimine e della guerra
La trasformazione digitale non riguarda solo il buono e il brutto della vita, ma anche il cattivo. Anche la criminalità si digitalizza e migliora la propria produttività, 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 250mila 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).

Oggi sarebbe fantascienza, ma la situazione è tale per cui una pandemia di un virus informatico in grado di attaccare qualsiasi software causerebbe molte morti. 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. Questo non è un esempio casuale. Gli attacchi alla rete elettrica, e più in generale all’infrastruttura civile, da parte di criminali o eserciti stranieri, sono una realtà in forte crescita che dovrebbe destare forti preoccupazioni, e la loro debolezza è figlia diretta della trasformazione digitale di queste infrastrutture (2, 3, 4) .

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 più probabilità di contenere difetti che possono provocare danni o aprire le porte a 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 promuoverne il miglioramento. Limitandosi ai soli Stati Uniti d’America, il CISQ stima che i costi dovuti alla scarsa qualità del software per il solo anno 2020 sono pari a 2.080 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, che per lo stesso anno viene stimato in 1.310 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 economiche). 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 1.700 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 compensarlo. Il fallimento di questo software ha portato ai disastri che conosciamo.

Passando a un esempio più leggero. 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. 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.

La maggior parte degli errori sono semplicemente figli della disattenzione di chi progetta o programma, della mancanza di controllo sulla qualità, o dalla mancanza di visione d’insieme di un progetto. 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 preoccupazioni che gli impediranno di essere attento nell’attività intellettuale che gli viene richiesta e quindi sarà più probabile che commetta errori. 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.

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ò diversi 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 sua schematicità e ai suoi limiti. 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ò distruggere, e ci sono file di malintenzionati che per gioco o per lucro sono determinati 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 fare un dispetto, o un danno a un concorrente.

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 nascosto che rende fragile il mondo digitale.

 

Note

1. All’articolo 22, e nel motivo 71

2. Why Global Power Grids Are Still Vulnerable to Cyber Attacks

3. Cyberattacks Make Smart Grids Look Pretty Dumb

4. Colonial Pipeline Paid Hackers Nearly $5 Million In Ransom