Esta información está dirigida a desarrolladores cuyas apps contengan una vulnerabilidad de inyección de SQL.
Novedades
Una o más de tus apps contienen una vulnerabilidad de inyección de SQL que debes corregir. Consulta la notificación en tu cuenta de Play Console. Después de los plazos que aparecen en Play Console, es posible que se eliminen de Google Play todas las apps que contengan vulnerabilidades de seguridad no resueltas.
Acción necesaria
- Accede a tu cuenta de Play Console y desplázate a la sección "Alertas" para ver qué apps están afectadas, así como los plazos para resolver los problemas.
- Actualiza las apps afectadas y corrige la vulnerabilidad.
- Envía las versiones actualizadas de las apps afectadas.
Una vez que las hayas reenviado, revisaremos tu app nuevamente. Este proceso puede demorar varias horas. Si la app pasa la revisión y se publica sin problemas, no se requiere ninguna otra acción. Si la app no pasa la revisión, no se publicará la nueva versión, y recibirás una notificación por correo electrónico.
Detalles adicionales
Las implementaciones de query
, update
y delete
en ContentProviders
exportados pueden ser vulnerables a la inyección de SQL si envían información no segura en instrucciones de SQL, ya que una app maliciosa podría diseñarse para acceder a datos privados o dañar el contenido de una base de datos. Puedes solucionar el problema de las siguientes maneras:
Si no es necesario exponer un ContentProvider
en otras apps, haz lo siguiente:
- Modifica la etiqueta
<provider>
delContentProvider
afectado en tu manifiesto para establecerandroid:exported=”false”
. De esta manera, impedirás que otras apps envíen intents alContentProvider
afectado. -
También puedes configurar el atributo
android:permission
para que sea unpermission
conandroid:protectionLevel=“signature”
y, de esta forma, evitar que las apps de otros desarrolladores envíen intents alContentProvider
afectado.
Si es necesario exponer el ContentProvider
afectado en otras apps, haz lo siguiente:
- Para evitar la inyección de SQL en
SQLiteDatabase.query
, usa el modo strict con un projection map. Este modo brinda protección contra las cláusulas de selección maliciosa y el mapa de proyecciones protege de las cláusulas de proyección maliciosas. Debes usar ambas funciones para garantizar la seguridad de tus consultas. - Para evitar la inyección de SQL en
SQLiteDatabase.update
ySQLiteDatabase.delete
, emplea una cláusula de selección que use"?"
como parámetro para reemplazar y separar un conjunto independiente de argumentos de selección. La cláusula de selección no debe construirse a partir de entradas que no sean de confianza.
Estamos aquí para ayudarte
Si tienes preguntas técnicas sobre la vulnerabilidad, publícalas en Stack Overflow con la etiqueta "android-security". Si tienes dudas sobre los pasos que debes seguir para resolver este problema, comunícate con nuestro equipo de asistencia para desarrolladores.