Táto informácia je určená pre vývojárov aplikácií používajúcich nebezpečnú implementáciu tried PreferenceActivity, kvôli ktorej sú zraniteľné voči vkladaniu fragmentov. Takáto implementácia môže povoliť škodlivej externej aplikácii načítať fragmenty, ktoré by mali byť súkromné.
Čo sa deje
Od 1. marca 2017 začala služba Google Play blokovať zverejňovanie všetkých nových aplikácií a aktualizácií, ktorých triedy PreferenceActivity môžu byť zraniteľné voči vkladaniu fragmentov. Informácie nájdete v oznámení v službe Play Console. Po termínoch uvedených v službe Play Console môžu z nej byť odstránené všetky aplikácie s neodstránenými chybami zabezpečenia.
Vyžaduje sa akcia
- Prihláste sa do služby Play Console, prejdite do časti Upozornenia a zistite termíny, dokedy treba problémy vyriešiť, a aplikácie, ktorých sa to týka.
- Aktualizujte príslušné aplikácie a chybu zabezpečenia odstráňte.
- Odošlite aktualizované verzie dotyčných aplikácií.
Po opätovnom odoslaní bude vaša aplikácia znova skontrolovaná. Tento proces môže trvať niekoľko hodín. Ak aplikácia úspešne prejde kontrolou a bude zverejnená, nie je potrebné vykonať žiadne ďalšie kroky. Ak aplikácia neprejde kontrolou, jej nová verzia sa nezverejní a dostanete upozornenie e‑mailom.
Ďalšie podrobnosti
Ak je to možné, nastavte v manifeste pre triedu PreferenceActivity hodnotu exported=false. Zabránite tak cudzím aplikáciám odosielať intencie do tejto triedy.
Ak musíte exportovať parameter PreferenceActivity s chybou zabezpečenia do cudzích aplikácií, zistite, prečo je príslušná trieda nechránená a podniknite náležité kroky. Existujú dve možnosti:
-
Nesprávna implementácia metódy isValidFragment:
Skontrolujte, či trieda s chybou zabezpečenia obsahuje implementáciu metódy isValidFragment, ktorá v prípade všetkých ciest kódu vracia odpoveď typu True, prípadne či takúto implementáciu nezdedila. Ak áno, aktualizujte túto triedu tak, aby kontrolovala zoznam tried fragmentov, ktoré majú byť povolené. Príklad: Ak má trieda PreferenceActivity povoľovať triedy MyFragment, ale žiadne iné fragmenty, implementujte nasledujúcu kontrolu:
public boolean isValidFragment(String fragmentName) {
return MyFragment.class.getName().equals(fragmentName);
}
-
Hodnota targetSdkVersion je menšia ako 19 a nie je implementovaná metóda isValidFragment:
Ak máte v manifeste aplikácie momentálne nastavený parameter targetSdkVersion na hodnotu menšiu ako 19 a trieda s chybou zabezpečenia neobsahuje žiadnu implementáciu metódy isValidFragment, znamená to, že chybu zabezpečenia zdedila z triedy PreferenceActivity.
Vývojári môžu túto chybu opraviť aktualizovaním parametra targetSdkVersion na hodnotu 19 alebo vyššiu. Ak sa parameter targetSdkVersion nedá aktualizovať, mali by implementovať metódu isValidFragment tak, ako je opísané v prvom bode. Umožní im kontrolovať triedy fragmentov, ktoré majú byť povolené.
Upozorňujeme, že aplikácie tiež musia byť v súlade s distribučnou zmluvou pre vývojárov a pravidlami pre obsah.
Sme tu pre vás
V prípade technických otázok týkajúcich sa tejto chyby zabezpečenia môžete uverejniť príspevok na webe Stack Overflow. Použite v ňom značku android-security. Ak potrebujete ďalšie vysvetlenie postupu na vyriešenie tohto problému, kontaktujte tím podpory pre vývojárov.