Het verbergen van root-toegang in Magisk staat op het punt een stuk moeilijker te worden dankzij een recente verandering in SafetyNet die hardware-attestatie met zich meebrengt.
In maart hebben een paar gebruikers Magisk geïnstalleerd merkte op dat hun apparaten niet voldeden aan de SafetyNet-attest. Dit nieuws verontrustte de gemeenschap bij XDA omdat het betekent dat veel cruciale bank-/financiële apps en populaire games zoals Pokémon Go en Fate/Grand Order weigerden te draaien op geroote apparaten. Het leek er enige tijd op dat de aangescherpte beperkingen in SafetyNet werden ingetrokken, om vervolgens de afgelopen weken weer voor een handjevol gebruikers te worden uitgerold. Google bevestigde echter begin mei stilletjes dat ze hardware-ondersteunde attesten testen SafetyNet-reacties, waardoor Magisk de ontgrendelingsstatus van de bootloader niet meer kon verbergen Maart. Als deze verandering op grote schaal wordt doorgevoerd, betekent dit dat gebruikers zullen moeten kiezen tussen toegang tot root/aangepaste ROM's/kernels/etc. of hun favoriete bank-apps en -games. Een van de grootste aantrekkingskrachten van Android voor ervaren gebruikers zou binnenkort verdwenen kunnen zijn.
Om deze reeks gebeurtenissen samen te vatten, moeten we het eerst over SafetyNet zelf hebben. SafetyNet is een set API's in Google Play Services. De SafetyNet Attestation API is een van die API's en kan door applicaties van derden worden aangeroepen om te controleren of er op enigerlei wijze met de softwareomgeving van het apparaat is geknoeid. De API controleert op verschillende zaken, zoals tekenen van superuser-binaire bestanden, de ontgrendelingsstatus van de bootloader en meer. Wanneer je een apparaat roott met Magisk, “[creëert] het een geïsoleerde ‘veilige omgeving’ voor het [SafetyNet] detectieproces, en het gaat via de API van Google om een rechtmatig SafetyNet-resultaat dat niet de werkelijke status van het apparaat weerspiegelt”, aldus XDA Senior Recognised Developer topjohnwu. Hierdoor kan de gebruiker zijn telefoon rooten, terwijl hij ervoor zorgt dat de API altijd "false" retourneert bij elke ontgrendelingscontrole van de bootloader. Deze methode om de detectie van het ontgrendelen van de bootloader van SafetyNet te omzeilen, heeft de laatste paar keer voor Magisk gewerkt jaar, maar dat komt alleen omdat Google heeft afgezien van het verifiëren van de integriteit van het opstartimage met behulp van hardware attest. In maart leek het erop dat Google eindelijk hardware-attestatie in SafetyNet ging gebruiken om de gegevens te verifiëren boot image, maar we hebben nooit een officiële verklaring van Google ontvangen waarin de wijziging werd bevestigd en slechts een paar gebruikers waren dat aangetast. Zoals opgemerkt door XDA Senior Member OntplaxGoogle bevestigde echter op 5 mei 2020 dat SafetyNet Attestation API-reacties van sommige apparaten nu door hardware ondersteunde controles bevatten.
In de Google Group voor 'SafetyNet API Clients' heeft Google een nieuwe functie voor de Attestation API beschreven: evaluatieType. Het JSON Web Signature (JWS)-antwoord van sommige apparaten zal een veld hebben met de naam "evaluationType" dat "ontwikkelaars inzicht zal geven in de soorten signalen/metingen die hebben bijgedragen aan elke individuele SafetyNet Attestation API-reactie." Een van de ondersteunde tokens in dit veld staat "HARDWARE_BACKED", wat aangeeft dat de API "de beschikbare, door hardware ondersteunde beveiligingsfuncties van het externe apparaat [gebruikt] (bijv. door hardware ondersteunde sleutelattesten) om [zijn] evaluatie te beïnvloeden." Google zegt dat ze "momenteel de geschiktheidscriteria evalueren en aanpassen voor apparaten waarop we zullen vertrouwen op hardware-ondersteunde beveiligingsfuncties." Dit betekent dat Google Play Services op sommige apparaten nu door hardware ondersteunde attesten gebruikt om te detecteren dat de software van het apparaat niet is geïnstalleerd. ermee geknoeid. Google heeft deze wijziging niet officieel gedocumenteerd buiten de aankondiging in de Google-groep om, dus sommige ontwikkelaars die SafetyNet gebruiken, kunnen dat wel doen niet op de hoogte zijn van deze wijziging (en dus nog niet controleren op het veld "HARDWARE_BACKED" in JWS-reacties.) Maar voor de apps die controleren op dit veld, er is nu geen manier om root-toegang voor hen te verbergen, op voorwaarde dat uw apparaat deel uitmaakt van de test die Google doet rennen.
Volgens topjohnwu betekent hardware-ondersteunde attestatie dat Google Play Services nu “een ongewijzigd keystore-certificaat [stuurt] naar SafetyNet-servers, [verifieert] de legitimiteit ervan, en [controleert] certificaatextensiegegevens om te weten of uw apparaat geverifieerd heeft dat opstarten is ingeschakeld (bootloaderstatus). Sinds de privésleutels waarvan de sleutelopslagcertificaten zijn afgeleid worden ondersteund door de geïsoleerde beveiligde omgeving van de telefoon. Als u ze wilt ophalen, zou de beveiliging van de Trusted Execution Environment (TEE) of speciale hardwarebeveiliging van de telefoon worden omzeild. module (HSM). Als iemand op de een of andere manier een privésleutel zou kunnen lekken, zou de sleutels zouden snel worden ingetrokken zodra Google erachter kwam. Google biedt honderdduizenden dollars aan beloningen voor kritieke beveiligingsproblemen die de TEE in Pixel-telefoons beïnvloeden. wat alleen maar aantoont dat het ongelooflijk onwaarschijnlijk is dat dit een potentiële manier is om de detectie van het ontgrendelen van de bootloader te omzeilen hoe dan ook.
Een andere mogelijke manier waarop Magisk door kan gaan met het vervalsen van de ontgrendelingsstatus van de bootloader is door de code aan de clientzijde van SafetyNet zo aan te passen dat altijd de BASIC-evaluatie wordt gebruikt. Als topjohnwu merkt opHiervoor zou echter aangepaste code in Google Play Services moeten worden geïnjecteerd via een hooking-framework zoals het Xposed Framework. Dit is niet alleen moeilijk om te doen omdat Google Play-services zeer onduidelijk zijn, maar het is ook onmogelijk om te verbergen omdat "sommige analyse van de geheugenruimte codemanipulatie heel erg aan het licht zal brengen." gemakkelijk." Bovendien zou dit ook alleen werken als de servers van Google BASIC-evaluaties blijven accepteren en als HARDWARE_BACKED-evaluaties niet worden afgedwongen op apparaten die ondersteuning bieden hen. (SafetyNet-reacties "[komen] van Google-servers en zijn ondertekend met de privésleutel van Google", aldus topjohnwu, dus de daadwerkelijke reacties kunnen niet worden vervalst.)
Sinds Android 7 Nougat eist Google dat alle apparaten een geïsoleerde, beveiligde omgeving hebben, Dit betekent dat deze wijziging in de manier waarop SafetyNet de ontgrendeling van de bootloader verifieert, van invloed zal zijn op de meeste apparaten die niet beschikbaar zijn daar. Omdat oudere apparaten zonder een geïsoleerde veilige omgeving uiteraard geen door hardware ondersteunde attesten kunnen uitvoeren, kan Magisk nog steeds de root-toegang op die apparaten verbergen. Maar als deze verandering op grote schaal wordt doorgevoerd, zullen alle anderen een moeilijke keuze moeten maken tussen root-toegang en bank-apps.
Helaas zijn er waarschijnlijk veel apps die SafetyNet-controles gebruiken terwijl dat niet echt nodig is. Een door topjohnwu aangehaald voorbeeld is de officiële McDonald's-app, die schijnbaar weigert te draaien op een apparaat dat is ontgrendeld met een bootloader. Op Twitter noemt topjohnwu apps die overmatig gebruik maken van de API omdat ze een vijandige omgeving creëren voor ervaren gebruikers. XDA erkende ontwikkelaar Quinny899 sluit zich aan bij een anekdote over hoe zijn team overwoog SafetyNet te gebruiken om de beveiligingsstatus van het apparaat te controleren. Ze besloten uiteindelijk om er niet mee door te gaan, omdat de app van zijn team alle gevoelige gegevens waarmee het werkt, versleutelt. SafetyNet, zo betoogt hij, mag niet worden gebruikt in plaats van goede beveiligings- en gegevensverwerkingspraktijken, vooral niet als het om de veiligheid gaat mogelijkheid van superuser-exploits.
Voor meer informatie over hoe de nieuwe SafetyNet-wijziging Magisk beïnvloedt, bekijk topjohnwu's uitstekende veelgestelde vragen op Twitter. Als u alleen wilt controleren of uw apparaat deel uitmaakt van de nieuwe SafetyNet-test van Google, kunt u dit volgen deze gids door XDA Senior Member Displax of download de nieuwste Magisk Manager-release.
Dit artikel is op 30 juni 2020 om 10:46 uur EST bijgewerkt om te corrigeren dat Google alleen beloningen uitbetaalt voor TEE-kwetsbaarheden die zijn aangetroffen in Pixel-telefoons. Bovendien zijn er details toegevoegd met betrekking tot de nieuwste Magisk Manager-release, die nu het evaluatietype-veld toont in de ingebouwde SafetyNet-checker.