Il software una volta velocizzava le attività manuali, poi passò a velocizzare i processi e adesso i processi e l’organizzazione li incarna. Le applicazioni sono il modo in cui l’azienda esiste al suo interno e si rapporta al mondo esterno
Una volta realizzata l’identità tra azienda e le funzionalità del suo software (il cosiddetto approccio “digital”) è sulle applicazioni che occorre lavorare per costruire posizioni di vantaggio competitivo. Occorre costantemente migliorare le funzionalità, farlo in velocità, e migliorare anche la sicurezza. La velocità è fondamentale: se sto lanciando il nuovo prodotto, ho comprato gli spazi pubblicitari e ho registrato gli spot, non posso permettermi che i commerciali non abbiano in tempo la app che serve a concludere la vendita. Negli anni, il miglioramento del ciclo di sviluppo è stato affidato alle metodologie. Structured programming, rapid prototyping, RAD, extreme programming, Agile sono alcune delle parole chiave. Il contesto architetturale era stabile: su un mainframe, in ambiente client server o web, l’applicazione era sempre “in casa”: al massimo, con Internet, poteva essere esterna la postazione utente. L’arrivo del Cloud Native Computing cambia tutto. Il cloud non è più solo un modo più semplice, rapido ed economico per ottenere quello che prima richiedeva tempi lunghi di progettazione e approvvigionamento, ma abilita una nuova architettura applicativa.
In luogo di applicazioni monolitiche, i microservizi, ognuno completamente indipendente, con tutto il necessario per il proprio funzionamento all’interno di un container, garantiscono flessibilità. Ogni container può “girare” su qualunque fornitore di servizi CaaS (Container as a Service). I container vengono “orchestrati” da piattaforme che gestiscono i carichi di lavoro, il numero di istanze di un micro servizio e il cloud su cui tali istanze girano. Una prima implicazione in termini di sicurezza è la “scomparsa del perimetro”: non esiste più una entità al cui interno girino le applicazioni, queste possono essere su qualunque fornitore CaaS. Si parla quindi di Software Defined Perimeter: un perimetro “virtuale”, con rilevanti implicazioni di sicurezza. I microservizi “containerizzati”, completamente autonomi, consentono enormi guadagni di velocità di sviluppo. A rallentare il processo, resta il Security Testing.
Oggi, si usano tecnologie di Dynamic Application Security Testing (DAST) e Static Application Security Testing (SAST). Le prime sono semplici da usare, relativamente precise, ma la copertura del codice non supera il 30-40 per cento, e per potere testare una applicazione in funzione, questa deve essere completa. In altre parole, il mantra Shift-left (spostare il test il più possibile vicino all’inizio della scrittura del codice) non è applicabile. Con SAST, si lavora anche su porzioni incomplete del codice e quindi si rispetta il criterio Shift-left. I tools, più complessi di DAST, coprono tutto il codice, ma sono molto meno precisi, anche se uno strumento recente promette il 75 per cento della detection sul benchmark OWASP (lo standard “di fatto” per la sicurezza applicativa) contro il 25-30 per cento di tutti gli altri. Una nuova tecnologia sembra promettere la pace dei sensi. IAST, ovvero Interactive AST, è una tecnologia che prevede l’utilizzo di un plugin per web server che consente di monitorare l’applicazione al livello dello unit testing (il test iniziale che il programmatore fa non appena una porzione di codice è completa). Il sistema è banale da usare, consuma pochissime risorse, è il massimo possibile dello Shift-Left e sui test OWASP garantisce il cento per cento di accuratezza, con zero falsi positivi. Che si sia quadrato il cerchio?
Paolo da Ros membro del Comitato Scientifico CLUSIT