Corregir una vulnerabilidad de inyección de SQL

Esta información está destinada a los desarrolladores que tengan aplicaciones con la vulnerabilidad de inyección de SQL.

¿Qué va a suceder?

Una o varias de tus aplicaciones contienen una vulnerabilidad de inyección de SQL que debes solucionar. Consulta el aviso en Play Console. Una vez que finalice el plazo indicado en Play Console, es posible que las aplicaciones que contengan vulnerabilidades de seguridad sin corregir se retiren de Google Play.

Acción necesaria​

  1. Inicia sesión en Play Console y ve a la sección Alertas para consultar qué aplicaciones están afectadas y las fechas límite para resolver estos problemas.
  2. Actualiza las aplicaciones afectadas y corrige la vulnerabilidad.
  3. Envía las versiones actualizadas de las aplicaciones afectadas.

Cuando vuelvas a enviar tus aplicaciones, se revisarán de nuevo. Este proceso puede tardar varias horas en completarse. Si una aplicación supera el proceso de revisión y se publica, no tendrás que hacer nada más. De lo contrario, la nueva versión de la aplicación no se publicará y recibirás una notificación por correo electrónico.

Información adicional

Las implementaciones de query, update y delete en las clases ContentProvider exportadas pueden ser vulnerables a la inyección de SQL si pasan entradas no seguras a declaraciones SQL. Una aplicación maliciosa puede proporcionar una entrada diseñada para acceder a datos privados o dañar los contenidos de la base de datos. Puedes solucionar el problema de las siguientes formas:

Si una clase ContentProvider afectada no necesita estar expuesta a otras aplicaciones:

Si una clase ContentProvider afectada necesita estar expuesta a otras aplicaciones:

  • Utiliza el modo strict con un mapa de proyección en SQLiteDatabase.query. El modo estricto protege contra las cláusulas de selección maliciosas y el mapa de proyección protege contra las cláusulas de proyección maliciosas. Debes utilizar ambas funciones para garantizar la seguridad de tus consultas.
  • Utiliza una cláusula de selección que use "?" como parámetro sustituible y una matriz independiente de argumentos de selección para impedir la inyección de SQL en SQLiteDatabase.update ySQLiteDatabase.delete. La cláusula de selección no debe construirse a partir de entradas que no sean de confianza.

Queremos ayudarte

Si tienes alguna pregunta técnica sobre esta vulnerabilidad, puedes publicarla en Stack Overflow con la etiqueta "android-security". Ponte en contacto con nuestro equipo de asistencia para desarrolladores si necesitas más información para resolver este problema.

¿Te ha resultado útil esta información?
¿Cómo podemos mejorar esta página?