Tyto informace jsou určeny vývojářům aplikací, které nejsou zabezpečeny proti útokům injektáží SQL.
K čemu dochází?
Minimálně jedna vaše aplikace obsahuje chybu zabezpečení proti útoku injektáží SQL (SQL Injection), kterou je třeba odstranit. Další informace najdete v oznámení ve službě Play Console. Po termínech uvedených v Play Console mohou být aplikace s neopravenými chybami zabezpečení z Google Play odstraněny.
Vyžadovaná akce
- Přihlaste se do Play Console a přejděte do sekce Upozornění, kde zjistíte, kterých aplikací se tento problém týká a do kdy je potřeba jej vyřešit.
- Aktualizujte dotčené aplikace a chybu zabezpečení opravte.
- Odešlete aktualizované verze dotčených aplikací.
Po odeslání bude aplikace znovu zkontrolována. Tento proces může trvat několik hodin. Pokud aplikace při kontrole projde a bude úspěšně publikována, není potřeba podnikat žádné další kroky. Jestliže aplikace při kontrole neprojde, nová verze aplikace nebude publikována a obdržíte e‑mailem oznámení.
Další podrobnosti
Implementace metod query
, update
a delete
v exportovaných objektech ContentProvider
mohou být zranitelné útokem injektáží SQL, pokud v příkazech SQL předávají nezabezpečený vstup. Škodlivá aplikace může předáním speciálně vytvořeného vstupu získat přístup k soukromým datům nebo poškodit obsah databáze. Problém lze vyřešit takto:
Pokud dotčený ContentProvider
nemusí být dostupný ostatním aplikacím:
- V souboru Manifest můžete upravit značku
<provider>
příslušného objektuContentProvider
tak, aby obsahovala atributandroid:exported="false"
. Tím zajistíte, že objektuContentProvider
ostatní aplikace nebudou moci odesílat objekty Intent. -
Můžete také nastavit atribut
android:permission
na oprávnění (permission
) s atributemandroid:protectionLevel="signature"
. Objekty Intent pak příslušnémuContentProvideru
budou moci odesílat pouze vaše aplikace (aplikace jiných vývojářů nikoliv).
Pokud dotčený ContentProvider
musí být dostupný ostatním aplikacím:
- Injektáži SQL do dotazu
SQLiteDatabase.query
můžete zabránit použitím striktního režimu s mapou projekce. Striktní režim chrání před škodlivými klauzulemi výběru a mapa projekce před škodlivými klauzulemi projekcí. K zajištění bezpečnosti dotazů je nutné použít obě tyto funkce. - Injektáži SQL do příkazů
SQLiteDatabase.update
aSQLiteDatabase.delete
můžete zabránit použitím klauzule výběru, která bude používat otazník (?
) jako nahraditelný parametr a samostatné pole argumentů výběru. Klauzuli výběru nesmíte sestavovat z nedůvěryhodných vstupů.
Rádi vám poradíme
Máte-li ohledně této zranitelnosti technické dotazy, publikuje příspěvek na webu Stack Overflow. Použijte štítek „android-security“. Pokud potřebujete poradit s jednotlivými kroky k řešení tohoto problému, obraťte se na náš tým podpory pro vývojáře.