Analyse av en lekket Android Q-konstruksjon viser at flere personvernoppgraderinger kommer til Android: blokkering av bakgrunnsavlesninger på utklippstavlen, bedre mediebeskyttelse og mer.
Hver ny versjon av Android kommer med nye funksjoner, noe som betyr at Android trenger nye tillatelser for å gi tilgang til disse funksjonene. Jeg fant mange nye tillatelser i Android Qs rammeverk (ikke alle jeg vil dekke i denne artikkelen fordi mange av dem ikke er interessante). Noen av tillatelsene jeg fant hadde ingen beskrivelser, men navnene deres er ganske selvforklarende uansett. La oss dykke inn og diskutere de nye personvernforbedringene bak kulissene i Android Q, samt noen andre interessante funksjoner jeg fant.
Spesiell takk til PNF Software for å gi oss en lisens til bruk JEB Dekompiler. JEB Decompiler er et omvendt utviklingsverktøy av profesjonell kvalitet for Android-applikasjoner.
Blokkerer tilgang til utklippstavle i bakgrunnen
Visste du at hver app i Android kan lese utklippstavlen din
, og du trenger ikke å gi dem en kjøretidstillatelse for å gjøre det? Mange kopierer sannsynligvis sensitiv informasjon som brukernavn, passord, adresser osv. hele tiden, så det ville være enkelt for enhver app å skrape disse dataene i bakgrunnen. Det er derfor mange passordbehandlingsapper liker KeepPass har sine egne tastaturer du kan bruke til å omgå Android utklippstavlebehandling. Passordbehandling-apper tømmer ofte utklippstavlen for deg etter at du har kopiert og limt inn noe. Grunnen til at Android-apper trenger å lese utklippstavlen er at de ikke kan godta tekst fra utklippstavlen uten den, noe som betyr at du ikke kan lime inn tekst du har kopiert. Android Q ønsker å endre det, heldigvis.En ny tillatelse er lagt til kalt "READ_CLIPBOARD_IN_BACKGROUND
” som høres ut som den vil gjøre akkurat det den sier: begrense hvilke apper som kan lese utklippstavlen i bakgrunnen. Beskyttelsesnivået for denne tillatelsen er "signatur", noe som betyr at bare apper signert av OEM kan gis denne tillatelsen.
<permissionandroid: name="android.permission.READ_CLIPBOARD_IN_BACKGROUND"android: protectionLevel="signature"/>
Støtte for nedgradering av apper?
Har du noen gang installert en oppdatering for en app på Google Play og angret umiddelbart? Noen ganger vil en utvikler presse en oppdatering som bryter noe de ikke forutså, men når oppdateringen har blitt presset og installert, er det for sent å gjøre noe med det. Utvikleren må raskt utstede en hurtigreparasjon, og brukeren må enten slutte å bruke appen til en oppdatering er utgitt eller avinstallere appen og laste inn en eldre versjon. Det er ingen måte å nedgradere en app med mindre du har en rotfestet enhet med en app som TitaniumBackup, fordi Androids pakkebehandling blokkerer deg fra å installere eldre versjoner av apper. Det er en god grunn til å gjøre det fordi å installere en eldre versjon av en app kan føre til brudd hvis appens data blir ikke slettet, eller det kan utsette brukeren for fare hvis den eldre versjonen er sårbar for en sikkerhet feil.
Selv om vi ikke vet med sikkerhet om Google vil tillate brukere å rulle tilbake apper til en eldre versjon, fant vi flere tillatelser og kommandoer i Android Q som antyder at det vil være mulig. Først den nye "PACKAGE_ROLLBACK_AGENT
" og "MANAGE_ROLLBACKS
” tillatelser antyder at den forhåndsinstallerte markedsappen kan fungere som en agent for å administrere tilbakeføringen av applikasjonsversjoner. Den førstnevnte tillatelsen er "signatur", mens sistnevnte er "installatør" på toppen av "signatur", så dette betyr bare en plattformsignert app med muligheten til å installer apper (vanligvis bare pakkebehandleren, Google Play Store eller andre førsteparts appbutikker, avhengig av enheten) kan bruke disse tillatelsene. To nye beskyttede kringkastingshensikter er lagt til: "PACKAGE_ENABLE_ROLLBACK
" og "PACKAGE_ROLLBACK EXECUTED
." Disse sendingene kan ikke sendes av tredjepartsapper, og er sannsynligvis ment å la den berørte appen vite når den har blitt nedgradert (mye som hvordan apper blir fortalt når de har blitt oppdatert, noe som gir dem en sjanse til å vise en melding ved neste start.) Til slutt har et nytt flagg blitt lagt til den "pm install
” shell-kommando. Flagget, kalt "--enable-rollback
,” kan la deg rulle tilbake en applikasjon til en tidligere versjon. Jeg kunne imidlertid ikke få det til å fungere.
<protected-broadcast android: name="android.intent.action.PACKAGE_ENABLE_ROLLBACK"/>
<protected-broadcast android: name="android.intent.action.PACKAGE_ROLLBACK_EXECUTED"/>
<permissionandroid: name="android.permission.PACKAGE_ROLLBACK_AGENT"android: protectionLevel="signature"/>
<permissionandroid: name="android.permission.MANAGE_ROLLBACKS"android: protectionLevel="installer|signature"/>
Sikring av filer på ekstern lagring
Datalagring i Android involverer "intern lagring" (/data unntatt /data/media) og "ekstern lagring" (/data/media og eventuelle monterte SD-kort eller USB-stasjoner). APK-er og deres mest sensitive data lagres i intern lagring, mens alle delte medier som dokumenter, bilder, videoer osv. lagres i ekstern lagring. Som standard kan apper bare lese og skrive filer til én enkelt katalog i ekstern lagring: /data/media/[bruker]/Android/data/[pakkenavn]. (For å lære mer om denne oppførselen, anbefaler jeg at du leser min artikkel om sdcardfs i Android Oreo.) Når brukeren gir en app en hvilken som helst tillatelse under tillatelsesgruppen for ekstern lagring (READ_EXTERNAL_STORAGE
eller WRITE_EXTERNAL_STORAGE
), kan appen deretter lese eller skrive hvilken som helst fil i ekstern lagring. Dette er problematisk fordi du gir en app muligheten til å potensielt høste mye data om deg når du bare ville la den lese eller skrive bestemte filer. For å fikse dette ser det ut til at Google introduserer et par nye eksterne lagringsrelaterte tillatelser i Android Q. Tillatelsene vil gate følgende funksjoner:
- Evne til å lese plasseringene fra media. (Sannsynligvis blokkerer tilgangen til metadataene til bilder som standard.)
- Mulighet for tilgang til musikkfiler.
- Mulighet for tilgang til bilder.
- Evne til å få tilgang til videoer.
For apper som allerede har READ_EXTERNAL_STORAGE
eller WRITE_EXTERNAL_STORAGE
tillatelser før Android Q-oppdateringen, får de den nye lese tillatelser, men ikke de nye skrive tillatelser. For eksempel en app som allerede er gitt READ_EXTERNAL_STORAGE
av brukeren vil automatisk bli tildelt READ_MEDIA_IMAGES
tillatelse, men ikke WRITE_MEDIA_IMAGES
tillatelse.
Relevante strenger fra Android Qs framework-res
<stringname="permgroupdesc_aural">access your musicstring>
<stringname="permgrouplab_visual">Photos & Videosstring>
<stringname="permgrouprequest_aural">Allow <b>%1$s</b> to access your music?string>
<stringname="permgroupdesc_visual">access your photos & videosstring>
<stringname="permgrouplab_activityRecognition">Activity recognitionstring>
<stringname="permgrouplab_aural">Musicstring>
<stringname="permdesc_videoRead">Allows the app to read your video collection.string>
<stringname="permdesc_videoWrite">Allows the app to modify your video collection.string>
<stringname="permdesc_imagesRead">Allows the app to read your photo collection.string>
<stringname="permdesc_imagesWrite">Allows the app to modify your photo collection.string>
<stringname="permdesc_audioRead">Allows the app to read your music collection.string>
<stringname="permdesc_audioWrite">Allows the app to modify your music collection.string>
<stringname="permlab_audioRead">read your music collectionstring>
<stringname="permlab_audioWrite">modify your music collectionstring>
<stringname="permdesc_mediaLocation">Allows the app to read locations from your media collection.string>
"android.permission.READ_EXTERNAL_STORAGE"
targetSdk="10000">
<new-permission name="android.permission.READ_MEDIA_AUDIO" />
<new-permission name="android.permission.READ_MEDIA_VIDEO" />
<new-permission name="android.permission.READ_MEDIA_IMAGES" />
split-permission>"android.permission.WRITE_EXTERNAL_STORAGE"
targetSdk="10000">
<new-permission name="android.permission.READ_MEDIA_AUDIO" />
<new-permission name="android.permission.READ_MEDIA_VIDEO" />
<new-permission name="android.permission.READ_MEDIA_IMAGES" />
split-permission>
Les mer
Tilbakeføringen av bakgrunnsposisjonstilgang
Android Oreo og Android 9 Pie tok store skritt fremover for å sikre brukernes personvern, men noen brukere følte at Google tok ting for langt. Et slikt område som kan betraktes som en funksjonsregresjon er i posisjonstilgang i bakgrunnen. Posisjonstilgang i Android Oreo og nyere er sterkt begrenset hvis ikke direkte drept for apper som kjører i bakgrunnen, så apper må enten være i forgrunnen eller ha en forgrunnstjeneste i gang hvis de vil kontinuerlig spørre enhetens plassering. Det blokkerer apper fra å spionere på posisjonen din i bakgrunnen, men den blokkerer også brukeren fra å kartlegge sin egen plassering ved å bruke en app i bakgrunnen. Dette er et problem vi har berørt i en egen artikkel, og det ser ut til at Google legger til en ny tillatelse i Android Q for å løse bekymringene til disse utviklerne og brukerne.
I Android Q er det lagt til en ny tillatelse for å tillate at en app har bakgrunnstilgang til enhetens plassering. Tillatelsens beskrivelse til brukeren advarer om at "appen alltid vil ha tilgang til plasseringen, selv når du ikke bruker appen." Denne tillatelsen kan gis «i tillegg til den omtrentlige eller nøyaktige plasseringen»-tillatelser slik at appen «kan få tilgang til plasseringen mens den kjører i bakgrunnen». I motsetning, tillatelsen for grov posisjon kan bare få posisjonen din basert på nettverkskilder som mobiltårn eller Wi-Fi-nettverk, men bare når appen er i forgrunnen.
Relevante strenger fra Android Qs framework-res
<stringname="permgroupbackgroundrequest_location">Always allow <b>%1$s</b> to access this device’s location?string>
<stringname="permgroupbackgroundrequestdetail_location">The app will always have access to the location, even when you’re not using the app.string>
"permdesc_accessBackgroundLocation">If this is granted additionally to the approximate or precise location access the app can access the location while running in the background.</string>
"permdesc_accessCoarseLocation">This app can get your location based on network sources such as cell towers and Wi-Fi networks, but only when the app is in the foreground. These location services must be turned on and available on your phone for the app to be able to usethem.string>
"android.permission.ACCESS_FINE_LOCATION"
targetSdk="10000">
<new-permission name="android.permission.ACCESS_BACKGROUND_LOCATION" />
split-permission>
"android.permission.ACCESS_COARSE_LOCATION"
targetSdk="10000">
<new-permission name="android.permission.ACCESS_BACKGROUND_LOCATION" />
split-permission>
Les mer
Anerkjennelse av fysisk aktivitet
En ny tillatelse er lagt til Android Q som lar en app «gjenkjenne din fysiske aktivitet». Dette er teknisk sett ikke nytt siden det er det allerede en del av Google Play Services, men det kan bety at Google vil frakoble tillatelsen fra Play Services. Med hvor integrert Google Play-tjenester har vært i å tilby kjernefunksjoner for Android, er det godt å se noe av kraften gi tilbake til AOSP.
<stringname="permgroupdesc_activityRecognition">recognize activitystring>
<stringname="permgrouprequest_activityRecognition">Allow <b>%1$s</b> to recognize your physical activity?string>
<stringname="permdesc_activityRecognition">This app can recognize your physical activity.string>
For flere Android Q-nyheter, sjekk ut vår stikkord med siste nytt sortert etter dato. Vi publiserte nylig en artikkel med mye bevis som peker mot at Google jobber med støtter Face ID-lignende maskinvare for ansiktsautentisering i Android Q. Vi har også en tidlig hands-on av den lekkede Android Q-bygningen (og det er til og med en video) som du bør sjekke ut her. Vi kommer til å legge ut flere av funnene våre fra denne tidlige Android Q-byggingen vi fikk, så følg med.