A Fragment Injection (csomagrészlet beszúrása) sebezhetőség javítása

Ez az információ az olyan alkalmazások fejlesztőinek szól, amelyek a PreferenceActivity osztályok nem biztonságos megvalósítását használják, így sebezhetők a Fragment Injection támadással szemben. Az ilyen megvalósítások lehetővé teszik rosszindulatú külső alkalmazások számára olyan csomagrészletek betöltését, amelyeknek privátnak kellene lenniük.

Mi történik?

2017. március 1-jétől a Google Play letiltja az olyan új alkalmazások és frissítések közzétételét, amelyekben a PreferenceActivity osztályokat Fragment Injection sebezhetőség érintheti. A Play Console felületén lévő értesítésben további információt találhatsz.A Play Console felületén látható határidők után eltávolíthatjuk a Google Playről azokat az alkalmazásokat, amelyekben még megtalálható a sebezhetőség.

Teendők​

  1. Jelentkezz be a Play Console felületén, majd tekintsd át az Értesítések oldalon az érintett alkalmazásokat és a problémák megoldásának határidőit.
  2. Készíts olyan frissítést az érintett alkalmazásokhoz, amely elhárítja a sebezhetőséget.
  3. Küldd be az érintett alkalmazások frissített verzióit.

A beküldés után alkalmazásodat ismét ellenőrizzük. A folyamat több órát is igénybe vehet. Ha az alkalmazás megfelel az ellenőrzésen, és ezt követően közzétesszük, nincs más teendőd. Ha az alkalmazás nem felel meg az ellenőrzésen, akkor nem tesszük közzé az új verziót, és e-mailben értesítést küldünk a fejleményről.

Részletek

Ha lehetséges, a PreferenceActivity osztályok esetében a Manifest fájlban állítsd be a következő paramétert: exported=false. Ezzel megakadályozhatod, hogy idegen alkalmazások Intent elemeket küldjenek ennek az osztálynak.

Ha a sebezhető PreferenceActivity osztályt idegen alkalmazásokba kell exportálnod, akkor állapítsd meg, hogy mi okozza az osztály sebezhetőségét, majd hajtsd végre a szükséges intézkedéseket. Két lehetőség van:

  1. Az isValidFragment metódus helytelen megvalósítása:

Ellenőrizd, hogy a sebezhető osztály tartalmazza vagy örökli-e az isValidFragment olyan megvalósítását, amely igaz értéket küld vissza a kód összes útvonalán. Ha igen, akkor frissítsd az osztályt az engedélyezhető Fragment osztályok listájának ellenőrzéséhez. Például ha a PreferenceActivity osztálynak engedélyeznie kell a MyFragment osztályokat, de más Fragment osztályokat nem, akkor a következőképpen valósítsd meg az ellenőrzést:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. A targetSdkVersion értéke 19-nél kisebb, és nem valósítja meg az isValidFragment metódust:

Ha az alkalmazás jegyzékfájljában a targetSdkVersion értéke 19-nél kisebb, a sebezhető osztály pedig az isValidFragment semmilyen megvalósítását nem tartalmazza, akkor a sebezhetőség a PreferenceActivity osztályból öröklődik.

Ennek kijavításához a fejlesztőknek a targetSdkVersion számát 19-es vagy magasabb értékre kell frissíteniük. Ha a targetSdkVersion nem frissíthető, akkor az 1. lehetőségben leírtak szerint kell megvalósítaniuk az isValidFragment metódust az engedélyezhető Fragment osztályok ellenőrzéséhez.

Vedd figyelembe, hogy az alkalmazásoknak meg kell felelniük a Fejlesztői terjesztési megállapodásban és a tartalmi irányelvekben foglaltaknak is. 

Örömmel segítünk

A sebezhetőségre vonatkozó technikai kérdéseidet felteheted a Stack Overflow webhelyén, az „android-security” címkével ellátva. Ha a probléma megoldásának lépéseire vonatkozóan szeretnél tisztázni valamit, vedd fel a kapcsolatot fejlesztőtámogatási csapatunkkal.