Perché il fuzzing non è sufficiente per verificare i problemi di sicurezza delle API
Akamai ha acquisito Noname Security a giugno 2024. Questo blog di archivio è stato pubblicato originariamente il 12 luglio 2023.
Se il vostro lavoro consiste nello sviluppare o proteggere le API, avrete probabilmente constatato di persona che testare le vulnerabilità delle API garantisce una serie di vantaggi sia per l'azienda che per i suoi clienti, tra cui:
Mantenere le API funzionanti in modo affidabile e sicuro, come previsto in diverse situazioni
Identificare vari problemi delle API, come, ad esempio, formati di dati errati, dati mancanti o non accurati ed errori di autenticazione o autorizzazione
Minimizzare i problemi di downtime, ridurre il rischio di errori e migliorare la qualità complessità del sistema del software
Esecuzione dei test sulle API in modo tempestivo e frequente
È importante sottolineare che testare adeguatamente le API durante la fase di sviluppo — in modo precoce, frequente e completo — può aiutare la vostra organizzazione a prevenire attacchi API in grado di mettere a serio rischio i dati, i clienti e la stessa continuità operativa.
Molte organizzazioni utilizzano un approccio basato sul fuzzing per valutare la sicurezza delle API.
In questo blog, andremo a descrivere il fuzzing, le limitazioni che presenta e l'importanza di disporre di una strategia e di una soluzione progettate in modo da individuare e risolvere le comuni vulnerabilità delle API che oggi i criminali riescono a sfruttare frequentemente.
Inoltre, andremo ad accennare ad alcune risorse utili per eseguire i test sulle API in modo tempestivo e frequente.
Che cos'è il fuzzing?
Il fuzzing è una tecnica utilizzata nei test dei software per identificare potenziali vulnerabilità o bug presenti in un programma mediante l'inserimento di dati imprevisti o casuali all'interno di esso.
Lo scopo del fuzzing è far arrestare il programma o farlo funzionare in modo imprevisto per individuare potenziali segnali di una falla nel sistema di sicurezza o di un errore di programmazione. L'uso del fuzzing può aiutare ad identificare problemi che potrebbero sembrare non visibili tramite i metodi di test tradizioni, come gli unit test o i test manuali.
È possibile eseguire il fuzzing manualmente o automaticamente utilizzando strumenti specializzati con la possibilità di personalizzare i test in base a specifiche applicazioni o API. I risultati del fuzzing possono fornire preziose informazioni sulla solidità e sull'affidabilità di un programma software da poter usare per migliorare la sua sicurezza e le sue performance complessive.
Le limitazioni del fuzzing
Anche se il fuzzing può risultare utile per identificare le falle nel sistema di sicurezza, presenta proprie limitazioni, tra cui il fatto di poter eseguire i test solo per cercare vulnerabilità note, ma non sconosciute. Ad esempio, il fuzzing potrebbe non riuscire ad identificare le vulnerabilità presenti in sistemi complessi o che richiedono una sequenza specifica di eventi per attivarsi.
Il fuzzing, inoltre, può essere limitato dalla qualità dei dati inseriti nel processo dei test. È importante sapere che il fuzzing può risultare dispendioso in termini di tempo e può richiedere l'utilizzo di numerose risorse.
Anche se il fuzzing ha una sua utilità, presenta delle limitazioni, pertanto le organizzazioni dovrebbero usarlo solo insieme ad altri strumenti e tecniche di test sulla sicurezza, se proprio necessario.
L'importanza di eseguire test completi sulle API
Conducendo test accurati sulle API, gli sviluppatori possono assicurarsi che le loro applicazioni software vengano eseguite in modo ottimale e riescano ad offrire user experience eccellenti e sicure.
Se i test non vengono eseguiti in modo appropriato, anche un minimo errore presente nelle API potrebbe avere devastanti effetti a cascata sulle funzionalità dell'intera applicazione. Implementando una strategia per l'esecuzione di test completi sulle API, gli sviluppatori possono assicurarsi che tutto funzioni nel modo previsto prima di rilasciare un'API ad un utente finale. In tal modo, gli sviluppatori possono risparmiare tempo e risorse, migliorando, al contempo, la qualità complessità dell'applicazione.
Che cos'è la verifica della logica aziendale e perché è migliore del fuzzing?
La logica aziendale include la logica o le regole sottostanti alla base del comportamento di un sistema o di un'applicazione. La logica aziendale definisce il comportamento previsto di un'applicazione sulla base di una serie di regole, algoritmi e workflow.
La logica aziendale garantisce che l'applicazione funzioni nel modo previsto e produca i risultati attesi. L'esecuzione di test sulla logica aziendale sono obbligatori se si desidera effettivamente portare alla luce potenziali vulnerabilità. Il semplice inserimento di dati casuali in un'applicazione per rilevare le vulnerabilità tramite il fuzzing non le elimina.
Anche se il fuzzing può risultare utile per identificare le falle nel sistema di sicurezza, non è comunque efficace nel rilevare i problemi correlati alla logica aziendale dell'applicazione perché il fuzzing non considera il comportamento previsto dell'applicazione, ma si focalizza, invece, sull'identificazione delle vulnerabilità presenti nel processo di convalida dell'input.
Le best practice per l'esecuzione dei test sulla sicurezza delle API
L'esecuzione di test sulle API in fase di sviluppo può aiutare a ridurre i rischi e ad evitare i costi necessari per risolvere gli errori di codifica e configurazione. Ecco alcune funzionalità fondamentali da tenere in considerazione e da integrare nei processi aziendali:
Esecuzione di un'ampia serie di test automatizzati che simulano il traffico dannoso
Individuazione delle vulnerabilità prima che le API entrino in fase di produzione per ridurre il rischio di un attacco
Verifica delle specifiche delle API sulla base delle regole e delle policy di governance stabilite
Esecuzione di test sulla sicurezza delle API on-demand o come parte di una pipeline CI/CD
Conclusione
Il testing completo della sicurezza delle API è una fase critica del processo di sviluppo, che garantisce che l'API funzioni in modo sicuro e secondo le specifiche previste. È estremamente importante condurre questa fase di test per garantire l'affidabilità, la stabilità e il corretto funzionamento delle API per tutto il loro ciclo di vita.
La mancata esecuzione di test accurati delle API può determinare l'emergere di errori e difetti, che potrebbero compromettere la sicurezza e l'affidabilità delle API.
Ulteriori informazioni
Per saperne di più su come proteggere le API, dal testing in fase di sviluppo alla protezione in runtime, consulta il nostro white paper API Security Fundamentals.