software1

Kotlin's Genesis: errores comunes de codificación a tener en cuenta


En mayo de 2019, Kotlin, un lenguaje de programación para aplicaciones multiplataforma modernas, se convirtió en el lenguaje preferido de Google para desarrollar aplicaciones de Android . Como resultado, muchos desarrolladores de Java, el lenguaje original para crear aplicaciones de Android, se han cambiado a Kotlin. De acuerdo con una encuesta reciente el 62% de los desarrolladores ahora usan Kotlin para construir aplicaciones móviles, y otro 41% usa Kotlin para crear proyectos de back-end web, lo que significa que el lenguaje permanece aquí.

Junto con el surgimiento de Kotlin, la seguridad de las aplicaciones móviles está cada vez más en primer plano con organizaciones líderes, incluido el gobierno de los Estados Unidos. El estudio más reciente sobre seguridad de dispositivos móviles encargado por el Departamento de Seguridad Nacional (DHS) en consulta con el Instituto Nacional de Estándares y Tecnología (NIST), encontró que las vulnerabilidades en El incumplimiento de las prácticas de codificación segura y estas vulnerabilidades generalmente ponen en peligro los datos del usuario, lo que es una llamada de atención para toda la industria.

Más que nunca, y dado el Mes Nacional de Conciencia de Ciberseguridad se lleva a cabo durante todo octubre. Por lo tanto, es importante que los desarrolladores se familiaricen con Kotlin y comprendan las mejores prácticas para codificar de forma segura las aplicaciones móviles al usar ese idioma. Veamos algunas de las trampas comunes del uso de Kotlin:

  • Almacenamiento inseguro

El ecosistema de Android ofrece varias formas de almacenar datos para una aplicación. El tipo de memoria utilizada por los desarrolladores depende del tipo de datos almacenados, cómo se usan los datos y si los datos deben mantenerse privados o compartidos con otras aplicaciones.

Desafortunadamente, un error de codificación muy común es almacenar información sensible de texto sin formato en texto sin formato. Por ejemplo, a menudo encuentra claves API, contraseñas e información personal (PII) almacenadas en las preferencias o bases de datos compartidas de la aplicación. Vemos que este descuido conduce cada vez más a la pérdida de datos confidenciales porque un atacante que puede acceder a la base de datos de la aplicación (raíz del dispositivo, hacer una copia de seguridad de la aplicación, etc.) puede recuperar las credenciales de otros usuarios que la utilizan. ,

  • Comunicación insegura

Actualmente, la mayoría de las aplicaciones móviles están intercambiando datos basados ​​en cliente-servidor. Cuando se produce esta comunicación, los datos se transmiten a través de la red del proveedor de servicios móviles o entre una red WiFi e Internet.

Aunque explotar la red del operador móvil no es una tarea imposible, el mal uso de una red Wi-Fi suele ser mucho más fácil. En ausencia de SSL / TLS en la comunicación, un adversario no solo puede monitorear el tráfico de texto sin formato, sino también robar los datos intercambiados y realizar ataques de hombre en el medio (MitM). Para evitar una comunicación insegura, siempre se debe suponer que la capa de red no es segura y que existe una garantía continua de que toda la comunicación entre aplicaciones móviles y servidores de servicios de fondo está encriptada.

  • Autenticación insegura

Debido al factor de entrada para dispositivos móviles, la autenticación débil o insegura es generalizada para aplicaciones móviles: los lápices de 4 dígitos son un buen ejemplo de esto. Una política de contraseña débil debido a requisitos de usabilidad o autenticación basada en características como TouchID hará que su aplicación sea vulnerable.

A menos que existan requisitos funcionales, las aplicaciones móviles no requieren un servidor de fondo en el que deberían autenticarse en tiempo. Incluso si existen tales servidores de fondo, los usuarios no siempre tienen que estar en línea. Este es un gran desafío para autenticar aplicaciones móviles. Si la autenticación debe ser local, se puede omitir en dispositivos liberados por manipulación en tiempo de ejecución o modificación de archivos binarios.

La autenticación insegura no se trata solo de contraseñas adivinables, cuentas de usuario estándar o violaciones de datos. A veces, se puede omitir el mecanismo de autenticación y el sistema no puede identificar al usuario y no registrar su actividad (dañina).

Una vez que una aplicación móvil se ha descargado e instalado en un dispositivo, tanto el código como los datos están disponibles allí. Con la mayoría de las aplicaciones móviles en el dominio público, los adversarios tienen la capacidad de modificar directamente el código, manipular el contenido de la memoria, cambiar o reemplazar las API del sistema, o simplemente modificar los datos y recursos de una aplicación. Esto se llama manipulación de código.

Hoy en día, las aplicaciones móviles fraudulentas a menudo juegan un papel clave en los ataques fraudulentos que son aún más comunes que el malware. Como regla, los atacantes explotan los cambios de código a través de tipos maliciosos de aplicaciones para que los usuarios instalen la aplicación maliciosa a través de ataques de phishing.

Para evitar la manipulación del código, es importante que la aplicación móvil reconozca en tiempo de ejecución que el código se ha agregado o cambiado. A partir de ahí, los equipos de desarrollo deberían poder responder adecuadamente informando la violación de la integridad del código al servidor o deteniendo por completo la ejecución.

Las técnicas de uso evolucionan constantemente. En el futuro se pueden encontrar nuevas vulnerabilidades basadas en dependencias que pueden revelar nuevos puntos de manipulación de aplicaciones. Al encontrar estos errores de codificación, los desarrolladores pueden crear aplicaciones de Android más seguras y evitar dificultades que pueden conducir a estos escenarios evitables. Además, los desarrolladores pueden mantenerse actualizados leyendo la lista de OWASP Mobile Top 10 vulnerabilidades y revisando los últimos módulos de capacitación de Codelabs de Google, Fundamentos de Android Kotlin . Kotlin Bootcamp para programadores y Refactorización de Java a Kotlin .



Control de obras 3000 de Cea Ordenadores

Comentarios desactivados en Kotlin's Genesis: errores comunes de codificación a tener en cuenta