Categoría de OWASP: MASVS-NETWORK: Comunicación de red
Descripción general
Permitir las comunicaciones de red de texto simple en una app para Android implica que cualquier persona que supervise el tráfico de red pueda ver y manipular los datos que se transmiten. Esta es una vulnerabilidad si los datos transmitidos incluyen información sensible, como contraseñas, números de tarjetas de crédito o cualquier otro tipo de información personal.
Independientemente de si envías información sensible o no, el uso de texto simple puede ser una vulnerabilidad, ya que el tráfico HTTP de texto simple o texto sin formato también se puede manipular a través de ataques de envenenamiento de red, como envenenamiento de ARP o DNS, lo que podría permitir que los atacantes influyan en el comportamiento de una app.
Impacto
Cuando una aplicación para Android envía o recibe datos en texto simple a través de una red, cualquier persona que supervise la red puede interceptarlos y leerlos. Si estos datos incluyen información sensible, como contraseñas, números de tarjetas de crédito o mensajes personales, se pueden producir robos de identidad, fraudes financieros y otros problemas graves.
Por ejemplo, una app que transmite contraseñas en texto simple podría exponer estas credenciales a un actor malicioso que intercepte el tráfico. Esos datos podrían usarse para obtener acceso no autorizado a las cuentas de los usuarios.
Mitigaciones
Las instrucciones que se brindan en esta sección solo se aplican a las apps orientadas a Android 8.1 (nivel de API 27) o versiones anteriores. A partir de Android 9 (nivel de API 28), la compatibilidad con texto simple está inhabilitada de forma predeterminada.
Usa la funcionalidad NetworkSecurityConfig.xml para inhabilitar el tráfico de texto simple:
XML
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">secure.example.com</domain>
</domain-config>
</network-security-config>
Esta opción ayuda a prevenir las regresiones accidentales en apps debido a cambios en URLs que generaron fuentes externas, como servidores backend.