Rapid7 è stata incaricata di condurre un’analisi del sito web di un fornitore operante nel settore sanitario. Questo portale web consentiva ai fornitori di presentare candidature per posizioni lavorative, gestire gli orari, stabilire collegamenti con datori di lavoro in cerca di supporto negli ospedali, richiedere contratti e gestire la documentazione necessaria. Il sito aveva l’obiettivo di accertare la presenza di eventuali vulnerabilità nell’applicazione web, date le personalizzazioni significative apportate al sistema.
Inizialmente, è stata condotta un’analisi dei campi di input al fine di individuare potenziali vulnerabilità. La mancata corretta sanificazione di questi campi potrebbe esporre l’applicazione a rischi di attacchi informatici, come l’iniezione di codice malevolo. Un campo di input può essere qualsiasi spazio in cui sia possibile inserire dati, come ad esempio nome o indirizzo email. Nel corso dell’analisi, è stato individuato un campo che non gestiva correttamente l’input dell’utente: questo, una volta inviato, poteva essere visualizzato da account con privilegi amministrativi.
Sfruttando questa vulnerabilità, è stato attuato un attacco di Cross Site Scripting (XSS), che comporta l’inserimento di codice JavaScript all’interno di un campo vulnerabile. Tale codice viene poi restituito agli utenti, e quando visualizzato, viene eseguito nel browser della vittima. È stato creato un payload XSS che, una volta visualizzato dagli utenti, inviava un token di aggiornamento a un server sotto il nostro controllo. Questo ha consentito di ottenere token amministrativi da account che avevano visualizzato il campo vulnerabile, risultando in un presa di controllo degli account stessi. Inoltre, è stato riscontrato che il token di aggiornamento era configurato erroneamente, consentendo un accesso continuo all’applicazione anche dopo aver ottenuto il token, anche nel caso in cui la password fosse stata cambiata.
L’attenzione è stata poi focalizzata sui problemi legati all’autorizzazione nell’applicazione. Utilizzando un account non privilegiato, è stata individuata una dashboard che consentiva ai fornitori di accedere a documenti in scadenza. Tuttavia, è stato rilevato che la richiesta era vulnerabile a problemi di autorizzazione come Broken Object-Level Authorization e Insecure Direct Object Reference (IDOR). Sfruttando queste debolezze, abbiamo manipolato la richiesta e abbiamo avuto accesso a tutti i documenti caricati dagli utenti, compresi documenti sanitari, informazioni personali, documenti medici e altro.
Proseguendo nell’analisi, è stato scoperto che gli utenti non privilegiati potevano accedere a chiamate riservate agli utenti amministrativi. Queste chiamate esponevano dati sensibili come nomi utente e password per fornitori e personale associato agli ospedali contrattati tramite l’applicazione. Sfruttando una combinazione di problemi di autorizzazione e una vulnerabilità IDOR, abbiamo estratto nomi utente e password da oltre 15.000 account in pochi minuti.
Successivamente, abbiamo proseguito con ulteriori analisi e scoperto che i candidati a posizioni ospedaliere in varie sedi avevano numeri di previdenza sociale memorizzati in modo non sicuro. Sfruttando un punto di ingresso API vulnerabile a IDOR, è stato eseguito un attacco di forza bruta per recuperare nomi e numeri di previdenza sociale da centinaia di account.
Questa analisi ha messo in luce problematiche comuni riscontrabili in numerose applicazioni web. È emerso quanto sia veloce un attaccante nel raccogliere dati sensibili da un’applicazione non adeguatamente protetta. L’importanza della corretta sanificazione dell’input utente e dell’implementazione accurata delle autorizzazioni è stata evidenziata come cruciale per la sicurezza degli utenti e dell’azienda. Nel settore sanitario, in particolare, l’isolamento degli utenti e la gestione delle autorizzazioni rivestono un’importanza fondamentale per proteggere le informazioni personali e sanitarie dei clienti.
Il cliente è rimasto stupefatto dai risultati dell’analisi sulla sicurezza dell’applicazione. Questo test ha rivelato gravi vulnerabilità che erano sfuggite ai test condotti in passato da altri fornitori di sicurezza, sottolineando l’importanza di test regolari, specialmente in contesti di applicazioni personalizzate in continua evoluzione.