API o libreria non sicura

Categoria OWASP: MASVS-CODE: Code Quality

Panoramica

L'utilizzo di API o librerie non sicure riduce significativamente il livello di sicurezza di un'applicazione. Una violazione della sicurezza in una qualsiasi di queste dipendenze consentirebbe a un malintenzionato di sfruttare una serie di vettori per condurre un ampio insieme di attacchi come man- in-the-middle (MitM) e l'esecuzione di codice remoto (RCE).

Il rischio di implementare dipendenze non sicure si presenta quando gli sviluppatori non integrano valutazioni della sicurezza e test di vulnerabilità nel ciclo di vita di sviluppo del software (SDLC) o, in alcuni casi, non implementano una policy di aggiornamento automatico per le dipendenze delle applicazioni.

Lo sfruttamento delle dipendenze di solito inizia analizzando il file binario dell'applicazione (.apk) per cercare librerie vulnerabili. A questo punto, viene eseguita l'Open Source Intelligence (OSINT) per scoprire vulnerabilità potenzialmente sfruttabili scoperte in precedenza. Gli autori degli attacchi possono quindi sfruttare le informazioni sulle vulnerabilità divulgate pubblicamente, come le vulnerabilità ed esposizioni comuni (CVE), per eseguire ulteriori attacchi.

Impatto

Lo sfruttamento riuscito di dipendenze non sicure può portare a un ampio insieme di attacchi come l'esecuzione di codice remoto (RCE), SQL injection (SQLi) o cross- site scripting (XSS). Pertanto, l'impatto complessivo è direttamente correlato al tipo di vulnerabilità introdotta dal software di terze parti e che gli autori degli attacchi possono sfruttare. Le possibili conseguenze di uno sfruttamento riuscito di dipendenze vulnerabili sono violazioni dei dati o indisponibilità del servizio, che possono comportare un impatto significativo sulla reputazione e sul fatturato economico.

Mitigazioni

Difesa in profondità

Tieni presente che le mitigazioni elencate di seguito devono essere implementate in combinazione per garantire una postura di sicurezza più solida e ridurre la superficie di attacco dell'applicazione. L'approccio esatto deve sempre essere valutato caso per caso.

Valutazioni delle vulnerabilità delle dipendenze

Implementa la verifica delle dipendenze all'inizio del ciclo di vita di sviluppo per rilevare le vulnerabilità nel codice di terze parti. Questa fase verifica se il codice non creato internamente è sicuro prima di essere implementato negli ambienti di produzione. La verifica potrebbe essere integrata con l'implementazione di strumenti di test di sicurezza delle applicazioni statici (SAST) e dinamici (DAST) all'interno del ciclo di vita dello sviluppo del software per migliorare la security posture dell'applicazione.

Aggiornare continuamente le dipendenze

Fai sempre attenzione ad aggiornare continuamente qualsiasi dipendenza incorporata nel codice. A questo scopo, è consigliabile implementare aggiornamenti automatici che vengono inviati alla produzione ogni volta che un componente di terze parti rilascia una nuova patch di sicurezza.

Esegui test di penetrazione delle applicazioni

Esegui test di penetrazione regolari. Questi tipi di test mirano a scoprire qualsiasi vulnerabilità nota che potrebbe influire sul codice proprietario e/o sulle dipendenze di terze parti. Inoltre, le valutazioni della sicurezza spesso scoprono vulnerabilità sconosciute (zero-day). I penetration test sono utili per gli sviluppatori, in quanto forniscono un'istantanea dell'attuale postura di sicurezza dell'applicazione e li aiutano a dare la priorità ai problemi di sicurezza sfruttabili che devono essere risolti.

Risorse