Verschillende populaire Android-applicaties die beschikbaar zijn in de Google Play Store zijn gevoelig voor een kwetsbaarheid die verband houdt met padtraversal en die door een kwaadaardige app kan worden misbruikt om willekeurige bestanden in de thuismap van de kwetsbare app te overschrijven.
“De implicaties van dit kwetsbaarheidspatroon omvatten het uitvoeren van willekeurige code en tokendiefstal, afhankelijk van de implementatie van een applicatie”, zegt Dimitrios Valsamaras van het Microsoft Threat Intelligence-team in een woensdag gepubliceerd rapport.
Succesvolle exploitatie zou een aanvaller in staat kunnen stellen de volledige controle over het gedrag van de applicatie over te nemen en de gestolen tokens te gebruiken om ongeautoriseerde toegang te krijgen tot de online accounts en andere gegevens van het slachtoffer.
Twee van de apps die kwetsbaar zijn bevonden voor het probleem zijn de volgende:
- Xiaomi File Manager (com.mi. Android.globalFileexplorer) – Meer dan 1 miljard installaties
- WPS Office (cn.wps.moffice_eng) – Meer dan 500 miljoen installaties
Terwijl Android isolatie implementeert door elke applicatie zijn eigen specifieke gegevens- en geheugenruimte toe te wijzen, biedt het een zogenaamde contentprovider om het delen van gegevens en bestanden tussen apps op een veilige manier mogelijk te maken. Maar implementatieverzuim zou het omzeilen van lees-/schrijfbeperkingen binnen de homedirectory van een applicatie mogelijk kunnen maken.
“Dit op contentproviders gebaseerde model biedt een goed gedefinieerd mechanisme voor het delen van bestanden, waardoor een dienende applicatie zijn bestanden op een veilige manier met andere applicaties kan delen met een fijnmazige controle”, aldus Valsamaras.
“We zijn echter vaak gevallen tegengekomen waarin de verbruikende applicatie de inhoud van het bestand dat het ontvangt niet valideert en, het meest zorgwekkend, de bestandsnaam gebruikt die door de dienende applicatie wordt verstrekt om het ontvangen bestand in de interne gegevensmap van de consumerende applicatie op te slaan. .”

Deze valkuil kan ernstige gevolgen hebben wanneer een dienende app een kwaadaardige versie van de FileProvider-klasse declareert om het delen van bestanden tussen apps mogelijk te maken, en er uiteindelijk voor kan zorgen dat de verbruikende applicatie kritieke bestanden in zijn privégegevensruimte overschrijft.
Anders gezegd: het mechanisme maakt gebruik van het feit dat de consumerende app blindelings de invoer vertrouwt om willekeurige payloads met een specifieke bestandsnaam te verzenden door middel van een aangepaste, expliciete bedoeling en zonder medeweten of toestemming van de gebruiker, wat leidt tot uitvoering van de code.
Als gevolg hiervan zou dit een aanvaller in staat kunnen stellen het gedeelde voorkeurenbestand van de doel-app te overschrijven en dit te laten communiceren met een server onder hun controle om gevoelige informatie te exfiltreren.
Een ander scenario omvat apps die native bibliotheken laden vanuit hun eigen datadirectory (in plaats van “/data/app-lib”), in welk geval een frauduleuze app de bovengenoemde zwakte zou kunnen misbruiken om een native bibliotheek te overschrijven met kwaadaardige code die wordt uitgevoerd wanneer de bibliotheek is geladen.
Na verantwoorde openbaarmaking hebben zowel Xiaomi als WPS Office het probleem vanaf februari 2024 verholpen. Microsoft zei echter dat het probleem vaker zou kunnen voorkomen, waardoor ontwikkelaars stappen moesten ondernemen om hun apps op soortgelijke problemen te controleren.
Google heeft ook zijn eigen richtlijnen hierover gepubliceerd, waarin ontwikkelaars worden aangespoord om op de juiste manier om te gaan met de bestandsnaam die door de serverapplicatie wordt verstrekt.
“Wanneer de clientapplicatie het ontvangen bestand naar de opslag schrijft, moet deze de bestandsnaam van de serverapplicatie negeren en in plaats daarvan zijn eigen intern gegenereerde unieke identificatie als bestandsnaam gebruiken”, aldus Google. “Als het genereren van een unieke bestandsnaam niet praktisch is, moet de clienttoepassing de opgegeven bestandsnaam opschonen.”