OnePlus lämnade kvar en Qualcomm-tekniktestapp som fungerar som en bakdörr för att ge root-åtkomst på OnePlus 3, 3T och 5.
Uppdatering: OnePlus har utfärdat en officiellt svar till saken. De kommer att ta bort ADB-rotfunktionen från EngineerMode i en kommande uppdatering.
Det har gått lite över en månad sedan OnePlus visade sig samla in personligt identifierbar information för analys. Företaget vände snabbt kursen, och i en uppdatering lovade företaget att vara mer transparent genom att tydligt ge användarna möjlighet att välja bort OxygenOS-analys. Även om det debaclet sedan har löst sig, reser en annan upp sitt fula huvud i kväll. En användare på Twitter som går under namnet "Elliot Alderson" (uppkallad efter huvudkaraktären i den populära tv-serien Mr. Robot) har upptäckt att OnePlus av misstag lämnat en diagnostisk testapplikation på plats tillverkad av Qualcomm. Efter att ha dekompilerat den här applikationen upptäckte han att det kan vara det utnyttjas för att ge root-åtkomst – fungerar effektivt som en bakdörr.
Applikationen heter "EngineerMode" och det är i huvudsak en systemapplikation gjord av Qualcomm och tillhandahålls till OEM-tillverkare som OnePlus för att OEM-tillverkare enkelt ska kunna testa alla hårdvarukomponenter i enhet. Applikationen är förinstallerad på alla OnePlus 3-, OnePlus 3T- och OnePlus 5-enheter och kan lätt nås via valfri aktivitetsstartare eftersom alla appens aktiviteter exporteras.
Vi faktiskt täckte förekomsten av denna ansökan för flera månader sedan, men då hade vi ingen aning om vad den kunde användas till. Twitter-användaren dekompilerade applikationen (källan har publicerats online här) och hittade en intressant aktivitet som heter DiagEnabled. Särskilt en metod stack ut inom aktiviteten: escalatedUp. Denna metod accepterar ett booleskt värde (true/false) och en sträng. Strängen är ett lösenord som kontrolleras av metoden innan det ställer in systemegenskaperna persist.sys.adbroot
och oem.selinux.reload_policy
till 1.
Den första systemegenskapen är särskilt intressant eftersom den tillåter användaren att köra ADB som root. Detta öppnar omedelbart upp möjligheten att skaffa full root-åtkomst på telefonen – allt utan att låsa upp starthanteraren. Så exakt hur får du EngineerMode-appen att ställa in dessa systemegenskaper till '1'?
@fs0c131y behövde hitta rätt lösenord för att skicka in avsikten för att klara logiken i metoden ovan. Att hitta detta lösenord är dock inte en enkel uppgift. Han dekompilerade biblioteket som var ansvarigt för att skapa lösenordet (kallat libdoor.so) och hittade var lösenordshashen fanns: /data/backup/fpwd
. Lösenordet genereras från olika byggegenskaper som t.ex ro.product.model
och ro.product.brand
och skulle inte vara lätt att bakåtkonstruera.
Tur med hjälpen David Weinstein och Nu Säker på Twitter upptäckte han lösenordet som behövs av EngineerMode för att eskalera ADB till root-privilegier.
Allt man behöver göra är att skicka en avsikt i detta format:
adb shell am start -n com.android.engineeringmode/.qualcomm.DiagEnabled --es "code""angela"
där com.android.engineeringmode/.qualcomm. DiagEnabled är komponentnamnet för den DiagEnabled-aktivitet vi utnyttjar, och "kod" är strängens namn och "angela" är det relevanta lösenordsvärdet.
@fs0c131y säger att han kommer att göra det publicera en ansökan snart kommer det att skicka denna avsikt att höja ADB till root-privilegier, korrigera startavbildningen för att inaktivera dm-verity och installera su-binärfilerna. Håll utkik på XDA-forumen för när denna rotapplikation läggs upp.
Vad detta betyder för slutanvändarna är att du kan rota enkelt din OnePlus 3, OnePlus 3T och OnePlus 5 utan att någonsin låsa upp din bootloader. Denna exploatering tillåter inte en skadlig app att ge sig själv root-åtkomst, så om inte någon har fysisk åtkomst till din enhet för att ställa in ADB, är du säker från exploatering.
Om du vill skydda dig från detta utnyttjande oavsett, så kan du avinstallera appen från den aktuella användaren vilket kommer att förhindra att avsikten skickas till EngineerMode-appen. Använd bara följande kommando i ADB:
adbshellpmuninstall-k--user 0 com.android.engineermode
Naturligtvis anses detta fortfarande vara ett utnyttjande och vi hoppas att OnePlus korrigerar detta snart. Allt de egentligen behöver göra är att ta bort den här applikationen från framtida versioner.
Uppdatering 1: Lösenordet är 'angela'
Användaren @fs0c131y lade upp en uppdatering på sin Twitter-sida med lösenordet som du behöver för att komma in i ett rotat ADB-skal. Det lösenordet är...angela. För er som inte tittar på Mr Robot är Angela namnet på en av huvudpersonerna. Jag antar att det måste finnas många Mr. Robot-fans på Qualcomm.
Om du anger kommandot som jag postade ovan i ADB kommer du att märka att ADB omedelbart kopplas bort och servern startar om. Ange ADB igen, och du kommer att märka att det nu är ett rotat skal.
Uppdatering 2: Hur lösenordet härleddes
Säkerhetsföretaget Now Secure har publicerat ett blogginlägg som beskriver hur de härledde lösenordet som behövdes för att denna rotexploatering ska inträffa. Du kan läsa hela deras inlägg här.
Uppdatering 3: Fler enheter påverkas
De senaste nyheterna borde inte komma som en överraskning, men fler enheter verkar påverkas av detta utnyttjande. Det beror på att EngineerMode-appen är en Qualcomm-app, så det är möjligt att andra OEM-tillverkare lämnade den förinstallerad på sina enheter. Hittills har användare kontaktat @fs0c131y på Twitter för att bekräfta att applikationen är installerad på vissa Asus Zenfone- och Xiaomi-enheter. Du kan enkelt kontrollera om din enhet har den här applikationen genom att gå till Inställningar och se vilka appar som är installerade.
Uppdatering 4: Rootar din enhet
Genom att använda några kommandon genom det rotade ADB-skalet är det nu möjligt att tryck på su-binären på din enhet. Med det kan du sedan installera en root manager-app som SuperSU och sedan fritt ge root-åtkomst till andra appar. Allt utan att låsa upp din bootloader!
Uppdatering 5: OnePlus svarar
OnePlus har officiellt reagerat på situationen. I en blogginlägg, upprepar företaget att detta utnyttjande endast kan användas om en angripare har fysisk åtkomst till enheten och har aktiverat USB-felsökning. För att aktivera USB Debugging behöver angriparen även din enhets pin/lösenord. Således är rotbakdörren inte lätt att exploatera av någon app eller person, men ändå kommer OnePlus att ta itu med användarnas problem genom att ta bort denna funktionalitet från EngineerMode-appen.