Te informacje są przeznaczone dla programistów aplikacji, które zawierają lukę umożliwiającą wstrzyknięcie kodu SQL
Co zamierzamy
Co najmniej jedna z Twoich aplikacji zawiera lukę umożliwiającą wstrzyknięcie kodu SQL, którą należy usunąć. Zapoznaj się z powiadomieniem w Konsoli Play. Po przekroczeniu terminów wskazanych w Konsoli Play wszystkie aplikacje z lukami w zabezpieczeniach mogą zostać usunięte z Google Play.
Wymagane działania
- Zaloguj się w Konsoli Play i przejdź do sekcji Alerty, by sprawdzić, których aplikacji dotyczy problem i jaki jest termin jego rozwiązania.
- Zaktualizuj te aplikacje i usuń lukę w zabezpieczeniach.
- Prześlij zaktualizowane wersje tych aplikacji.
Po ponownym przesłaniu aplikacja zostanie jeszcze raz sprawdzona. Ten proces może potrwać kilka godzin. Jeśli aplikacja pomyślnie przejdzie weryfikację i zostanie opublikowana, nie musisz już nic robić. Jeśli wynik weryfikacji nie będzie pomyślny, nowa wersja aplikacji nie zostanie opublikowana, a Ty otrzymasz powiadomienie e-mailem.
Dodatkowe szczegóły
Implementacje funkcji query
, update
i delete
w wyeksportowanych komponentach ContentProvider
mogą być podatne na wstrzyknięcie kodu SQL, jeśli przekazują niesprawdzone dane wejściowe do instrukcji SQL. Złośliwa aplikacja może dostarczyć zmanipulowane dane wejściowe, by uzyskać dostęp do prywatnych danych lub uszkodzić zawartość bazy danych. Oto propozycje rozwiązania tego problemu:
Jeśli komponent ContentProvider
nie musi być widoczny dla innych aplikacji:
- W pliku manifestu możesz zmodyfikować tag
<provider>
komponentuContentProvider
, którego dotyczy problem, by miał wartośćandroid:exported="false"
. Uniemożliwi to innym aplikacjom wysyłanie intencji do tego komponentuContentProvider
. -
Możesz też określić atrybut
android:permission
, by elementpermission
miał wartośćandroid:protectionLevel="signature"
. Uniemożliwisz w ten sposób aplikacjom innych deweloperów wysyłanie intencji do komponentuContentProvider
, którego dotyczy problem.
Jeśli komponent ContentProvider
musi być widoczny dla innych aplikacji:
- Możesz uniemożliwić wstrzyknięcie kodu SQL do funkcji
SQLiteDatabase.query
, używając trybu ścisłego z mapą projekcji. Tryb ścisły chroni przed działaniem złośliwych klauzul wyboru, a mapa projekcji chroni przed klauzulami złośliwych projekcji. Aby mieć pewność, że zapytania są bezpieczne, musisz używać obu tych funkcji. - Możesz uniemożliwić wstrzyknięcie kodu SQL do funkcji
SQLiteDatabase.update
iSQLiteDatabase.delete
, stosując klauzulę wyboru używającą znaku„?”
jako parametru wymiennego oraz odrębnej tablicy argumentów wyboru. Klauzula wyboru nie powinna się składać z niezaufanych danych wejściowych.
Chętnie Ci pomożemy
Jeśli masz pytania techniczne związane z tą luką w zabezpieczeniach, możesz je opublikować na Stack Overflow, używając tagu „android-security”. Jeśli potrzebujesz wyjaśnienia czynności potrzebnych do rozwiązania tego problemu, skontaktuj się z naszym zespołem pomocy dla deweloperów.