Oplossing van kwetsbaarheid met impliciete PendingIntent

Deze informatie is bedoeld voor ontwikkelaars met apps die de kwetsbaarheid met een impliciete PendingIntent bevatten.

Wat er gebeurt

Een of meer van je apps bevatten een probleem met een impliciete PendingIntent dat tot beveiligingsrisico's kan leiden in de vorm van denial of service, diefstal van privégegevens en toe-eigening van rechten. Neem de gedetailleerde stappen hieronder door om het probleem met je apps op te lossen. Je vindt de locatie(s) waar impliciete PendingIntents worden gebruikt in je app in de Play Console-melding voor je app. Als een locatie eindigt met '(in dynamisch geladen code)', is de locatie in code die dynamisch wordt geladen door de app of door bibliotheken die door de app worden gebruikt. Apps gebruiken meestal dynamisch geladen code via on demand levering van functies, hoewel er ook andere niet-aanbevolen technieken bestaan (sommige niet-aanbevolen technieken schenden ook het Google Play-beleid en mogen niet worden gebruikt). Bovendien kunnen packers app-code omzetten in dynamisch geladen code.

We raden je aan dit probleem op te lossen, maar het is niet verplicht. De publicatiestatus van je app wordt niet beïnvloed door de aanwezigheid van dit probleem.

Aanvullende details

Via intenties sturen Android-apps berichten tussen componenten. Intenties kunnen de doelcomponent specificeren (expliciete intentie) of een algemene actie vermelden en het besturingssysteem de intentie laten leveren aan elke component op het apparaat die een intentiefilter registreert dat overeenkomt met die actie (impliciete intentie).

PendingIntents zijn intenties die aan een andere app zijn gedelegeerd om op een later tijdstip te worden geleverd. Als je een impliciete intentie maakt die wordt verpakt in een PendingIntent, is dit een beveiligingsprobleem dat kan leiden tot denial of service, diefstal van privégegevens en toe-eigening van rechten.

Volgende stappen

1. Update je app en verhelp meldingen over een impliciete PendingIntent aan de hand van de hieronder beschreven stappen.

Bekijk in je app de locatie waar een PendingIntent is gemaakt. De volgende code maakt bijvoorbeeld een PendingIntent waarin een impliciete intentie wordt verpakt:

// Maak een impliciete basisintentie en verpak deze in een PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

PendingIntent pi = PendingIntent.getService(this, 0, base, 0);

Google raadt ontwikkelaars aan de kwetsbaarheid te verhelpen door een (of bij voorkeur alle) van de volgende oplossingen toe te passen:

  • Ervoor zorgen dat de velden voor actie, pakket en component van de basisintentie zijn ingesteld.
  • Ervoor zorgen dat de PendingIntent alleen wordt geleverd aan vertrouwde componenten.
  • FLAG_IMMUTABLE gebruiken (toegevoegd in SDK 23) om PendingIntents te maken. Zo wordt voorkomen dat apps die de PendingIntent ontvangen, niet-gevulde eigenschappen vullen. Als de app ook wordt uitgevoerd op apparaten met SDK 22 of lager, raden we ontwikkelaars aan de vorige opties toe te passen terwijl ze het maken van PendingIntents versterken met het volgende patroon:

if (android.os.Build.VERSION.SDK_INT >= 23) {

// Maak een PendingIntent met FLAG_IMMUTABLE

} else {

// Bestaande code die een PendingIntent maakt

}

2. Dien je geüpdatete APK in

Zo dien je een geüpdatete app-bundel of APK in:

  1. Ga naar de Play Console.
  2. Selecteer de app.
  3. Ga naar App-bundel-verkenner.
  4. Selecteer rechtsboven in het dropdownmenu de app-versie van de APK's/app-bundels die niet aan het beleid voldoen en maak een lijst van de releases waartoe ze behoren.
  5. Ga naar de track met het beleidsprobleem. Dit is een van deze 4 pagina's: Intern, Gesloten, Open test of Productie.
  6. Selecteer rechtsboven op de pagina de optie Nieuwe release maken. (Misschien moet je eerst op Track beheren klikken.)
    • Als de release met de schendende APK een conceptstatus heeft, verwijder je de release.
  7. Voeg een versie van app-bundels of APK's toe die aan het beleid voldoet.
    • Ga na of de versie van app-bundels of APK's die niet aan het beleid voldoet, wordt vermeld in het gedeelte Niet opgenomen van deze release. Bekijk het gedeelte 'Niet opgenomen (app-bundels en APK's)' in dit Help-artikel van de Play Console.
  8. Selecteer Opslaan om wijzigingen op te slaan die je hebt aangebracht in je release.
  9. Selecteer Release controleren als je klaar bent met het voorbereiden van je release.

Als de APK die niet aan het beleid voldoet, is vrijgegeven aan meerdere tracks, herhaal je in elke track stap 5 tot en met 9.

Gedurende deze tijd heeft je nieuwe app of app-update de status Wordt beoordeeld totdat je verzoek is beoordeeld. Als de app niet correct is geüpdatet, blijf je de waarschuwing zien.

We helpen je graag

Als je technische vragen over de kwetsbaarheid hebt, kun je een bericht posten op Stack Overflow. Gebruik de tag 'android-security'. Neem contact op met ons supportteam voor meer informatie over de stappen om dit probleem op te lossen.

Was dit nuttig?

Hoe kunnen we dit verbeteren?
false
Hoofdmenu
620368001033006636
true
Zoeken in het Helpcentrum
true
true
true
true
true
5016068
false
false