"Epätäsmällinen PendingIntent" ‑haavoittuvuuden korjaaminen

Nämä tiedot on tarkoitettu kehittäjille, joiden sovellukset sisältävät "Epätäsmällinen PendingIntent" ‑haavoittuvuuden.

Mistä on kyse?

Yksi tai useampi sovelluksesi sisältää epätäsmällisen PendingIntent-ongelman, joka voi aiheuttaa tietosuojauhkia palveluneston, henkilökohtaisten tietojen varastamisen ja oikeuksien lisäämisen muodossa. Korjaa sovellustesi ongelmat alla olevien ohjeiden mukaisesti. Sovelluksesi epätäsmällisten PendingIntent-tavoitteiden käyttökohdat löytyvät sovelluksen Play Console ‐ilmoituksesta. Jos sijainti päättyy "(in dynamically loaded code)", sijainti on sovelluksen tai sen kirjastojen dynaamisesti lataamana koodina. Sovellukset käyttävät dynaamisesti ladattua koodia yleensä on demand ‐ominaisuustoimituksissa, mutta olemassa on muita ei-suositeltuja tekniikoita (jotkin ei-suositellut tekniikat ovat myös Google Playn käytännön vastaisia ja niitä ei pidä käyttää). Lisäksi pakkaajat voivat muuntaa sovelluksen koodin dynaamisesti ladatuksi koodiksi.

Ongelman korjausta suositellaan, mutta se ei ole pakollista. Ongelma ei vaikuta sovelluksen julkaisutilaan.

Lisätietoja

Android-sovellukset lähettävät komponenttien välillä viestejä käyttämällä tavoitteita. Tavoitteet (Intents) voivat joko ilmoittaa kohdekomponentin (Täsmällinen tavoite), tai listata yleisen toiminnon ja antaa käyttöjärjestelmän toimittaa tavoite mille tahansa laitteen komponentille, joka rekisteröi toiminnolle vastaavan tavoitesuodattimen (Epätäsmällinen tavoite).

PendingIntentit ovat toiselle sovellukselle delegoituja tavoitteita, jotka toimitetaan myöhemmin tulevaisuudessa. Epätäsmällisen tavoitteen luominen PendingIntentin sisällä on tietosuojauhka, joka saattaa johtaa palvelunestoon, henkilökohtaisten tietojen varastamiseen ja oikeuksien lisäämiseen

Seuraavat vaiheet

1. Päivitä sovelluksesi ja korjaa Epätäsmällinen PendingIntent ‐ilmoitukset seuraamalla alla olevia ohjeita.

Tarkista sovelluksesi kohta, jossa PendingIntent on luotu. Esimerkiksi tämä koodi luo epätäsmällisen tavoitteen ja sen ympärille PendingIntentin: 

// Luo epätäsmällinen perustavoite ja sen ympärille PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

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

Google suosittelee kehittäjiä korjaamaan haavoittuvuuden soveltamalla mitä tahansa (tai mieluiten kaikkia) seuraavista:

  • Varmista, että pohjatavoitteen toiminto-, paketti- ja komponenttikentät on asetettu; 
  • Varmista, että PendingIntent toimitetaan ainoastaan luotetuille komponenteille; 
  • Valitse FLAG_IMMUTABLE (lisätty SDK 23:ssa), kun haluat luoda PendingIntentin. Tämä estää PendingIntentin saavia sovelluksia täyttämästä tyhjiä ominaisuuksia. Jos sovellusta käytetään SDK 22:a tai vanhempaa versiota käyttävillä laitteilla, suosittelemme kehittäjiä soveltamaan aikaisempia vaihtoehtoja ja samalla vahvistamaan PendingIntentin luomista näin:

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

  // Luo epätäsmällinen Pendingintent käyttäen FLAG_IMMUTABLEa

} else {

  // Aiemmin luotu koodi, jolla PendingIntent luodaan

}

2. Lähetä päivitetty APK

Näin lähetät päivitetyn sovelluspaketin tai APK:n:

  1. Siirry Play Consoleen.
  2. Valitse sovellus.
  3. Siirry sovelluspakettien hallintaan.
  4. Valitse käytäntöjen vastaisen APK:n tai sovelluspaketin sovellusversio oikean yläkulman avattavasta valikosta ja katso, mitä julkaisuja ne koskevat.
  5. Siirry kanavalle, jolla käytäntörikkomus on. Se on jokin seuraavista neljästä sivusta: sisäinen / suljettu / avoin testaus tai tuotanto.
  6. Valitse sivun oikeasta yläkulmasta Luo uusi julkaisu. (Sinun on ehkä valittava ensin Ylläpidä kanavaa)
    • Jos käytäntöä rikkovan APK:n sisältävä julkaisu on luonnostilassa, hylkää se.
  7. Lisää käytäntöjä noudattava sovelluspaketti- tai APK-versio.
    • Varmista, että sovelluspakettien tai APK:iden käytäntöjen vastainen versio sijaitsee julkaisun Ei oteta mukaan ‑osiossa. Lisätietoja saat tämän Play Console ‑ohjeartikkelin Ei oteta mukaan (sovelluspaketit ja APK:t) ‑osiosta.
  8. Jos haluat tallentaa julkaisuun tehtäviä muutoksia, valitse Tallenna.
  9. Kun olet valmistellut julkaisun, valitse Tarkista julkaisu.

Jos käytäntöjen vastainen APK julkaistaan useille kanaville, toista vaiheet 5–9 jokaisen kanavan kohdalla.

Tänä aikana uusi sovelluksesi tai sovelluspäivityksesi on tarkistus käynnissä ‑tilassa, kunnes pyyntö tarkistetaan. Jos sovellusta ei ole päivitetty oikein, näet varoituksen edelleen.

Autamme mielellämme

Voit esittää teknisiä kysymyksiä haavoittuvuudesta Stack Overflow'ssa. Merkitse kysymyksesi tagilla "android-security". Jos tarvitset lisätietoja ongelman ratkaisun vaiheista, voit ottaa yhteyttä tukitiimiimme.

false
Päävalikko
7850282209899909874
true
Ohjekeskushaku
true
true
true
true
true
5016068
false
false