Evitar que los usuarios omitan las medidas de detección de root / jailbreak

5

Se realizó un pentest para nuestra aplicación móvil (versión de Android y iOS) y recibimos comentarios que indican que la detección de jailbreak / root no fue efectiva porque fue relativamente fácil aplicar ingeniería inversa a la aplicación y cambiar el valor de retorno del método que verifica si El dispositivo está enraizado / jailbreak.

¿Debemos aplicar la ofuscación de código a nuestras aplicaciones nativas? ¿Cuál es el curso de acción aquí?

Pros:
- El código de propiedad estará a salvo del robo
- Esto agregará una capa adicional de seguridad para que la mayoría de los atacantes desistan, evitando que modifiquen la aplicación en formas maliciosas (aparte de cambiar la detección de jailbreak / raíz)

Contras:
- Dedicar tiempo para implementar métodos de ofuscación
- Riesgo de romper la aplicación

Tal vez en el caso de iOS podríamos ofuscar "manualmente" la detección jailbreak del código para que se vea más genérico / parezca otra cosa, por lo que el atacante no sabe qué es y por lo tanto no puede modificar el Código desde un dispositivo jailbreak es necesario para hacer esto. Pero eso aún nos dejaría con el problema de Android.

    
pregunta Victor 13.11.2017 - 11:14
fuente

2 respuestas

3

Nota rápida: las últimas versiones de Android (¿o una próximamente?) ahora cuentan con la protección contra jailbreak incorporada, y puedes especificar que no deseas que tu aplicación esté instalada en ningún dispositivo roto en la cárcel.

Esto está un poco fuera de mi área inmediata de experiencia, pero creo que tengo una buena respuesta para ti de todos modos. Como todo lo demás, se trata del análisis de costo / beneficio, y desafortunadamente solo usted puede hacer eso. Podemos ejecutar eso rápidamente, pero tenga en cuenta que no le estoy pidiendo que responda a estas preguntas aquí. Le doy la bienvenida, pero estoy tratando de guiarlo a través del tipo de preguntas que me haría para responder a su pregunta.

  1. Estás intentando detectar jailbreaking por una razón. ¿Por qué? ¿Qué pérdida está tratando de evitar al impedir que su aplicación se ejecute en dispositivos con jailbreak? ¿Está perdiendo ingresos de un solo cliente? ¿O está filtrando potencialmente documentos confidenciales o información protegida?
  2. ¿Qué porcentaje de sus usuarios espera tener la capacidad técnica y la motivación para aplicar ingeniería inversa a su aplicación para que puedan vencer su detección de jailbreak y ejecutar su aplicación en un dispositivo con jailbreak?

Para dar dos ejemplos extremos: si su aplicación es un juego y la pérdida potencial para su empresa son las ventas de divisas en el juego o los ingresos publicitarios del juego porque la persona que revierte la ingeniería de su aplicación puede obtener todo de forma gratuita, entonces esto es probablemente No vale más de 5 minutos para asegurarte en tu final. La razón es porque muy pocas personas tienen el conocimiento técnico para lograr estas cosas, y la pérdida por persona es tan pequeña, que incluso el tiempo que tomó para escribir esta pregunta ya le cuesta más que la posible pérdida.

Por otra parte, si su aplicación es un lector de documentos para los documentos clasificados como el nivel más alto de secreto por parte de la NSA, y los gobiernos extranjeros intentarán entrar a robar nuestros secretos más valiosos (no es que los La NSA ya tiene secretos), entonces la ofuscación de código no es lo suficientemente segura.

La respuesta depende de su propio saldo de costo / beneficio. Su riesgo está probablemente en medio de estos dos casos extremos. Sin embargo, en última instancia, creo que solo usted puede responder su pregunta.

Tiempo para una evaluación de riesgos

Creo que para cuando llegues a "¿Deberíamos ofuscar nuestro código para evitar que los competidores realicen una ingeniería inversa de nuestro software?" Ya has pasado el punto de necesitar una prueba de penetración. En su lugar, lo que necesita es una evaluación de riesgos. Creo que ahora es una pregunta de negocios, no una pregunta de seguridad, porque ahora estás entrando en un territorio legal. Los competidores que intentan tomar parte en sus sistemas son un tipo de problema diferente. Tomar algunos pasos en el aspecto técnico para desalentar este tipo de comportamiento es probablemente razonable, pero en última instancia es posible que le sirvan mejor con algo de detección de intrusos y un buen conjunto de abogados. Parece que este esfuerzo puede estar olvidando la otra cara de la seguridad: algunas medidas de seguridad no merecen la pena, y todos los pasos de seguridad deben ser importantes en relación con su costo para el negocio. Su empresa debe decidir dónde se encuentra ese equilibrio entre la seguridad y el costo de mantenimiento en su caso particular.

    
respondido por el Conor Mancone 13.11.2017 - 11:31
fuente
2

Algunos de los métodos en este proyecto, enlace , son lo suficientemente avanzados para la mayoría de las necesidades. Sin embargo, r2frida y muchos otros métodos de reversión probablemente encontrarán una forma de evitar incluso estos mecanismos avanzados de detección de raíz.

Lo ideal es que estés buscando tanto anti-rooting como anti-hooking - enlace

Además, es incorrecto que al ocultar el código se evite que los inversores encuentren las rutas del código anti-rootkit. Son relativamente obvios. En segundo lugar, también es incorrecto sobre la necesidad de un dispositivo con jailbreak para detectar mecanismos anti-jailbreak. Ha habido numerosas publicaciones en este foro y otras que demuestran que se ha vuelto a empaquetar una aplicación con complementos de bibliotecas en un dispositivo iOS con cárcel. Permite métodos completos de detección anti-jailbreak. Incluso hay algunas aplicaciones en la App Store oficial de Apple, como syssecinfo , que también proporciona detección de jailbreak y descubrimiento de shim de biblioteca.

Aprovechar una plataforma móvil segura y lo básico logrará un éxito a mediano y largo plazo superior a la detección de jailbreak y root. Una de las mejores maneras de garantizar que un dispositivo iOS se mantenga seguro es no instalar nada en él. Una de las mejores maneras de garantizar que un dispositivo Android se mantenga seguro es comenzar con una plataforma base como Copperhead OS y no instalarle nada. Si puede revisar el código de cada aplicación que se está instalando en el dispositivo, entonces las aplicaciones pueden usarse desde una perspectiva segura. Además, configurar sus dispositivos para DFIR triage y tomar instantáneas de la situación es altamente recomendable para verificar la seguridad a largo plazo de estos plataformas.

    
respondido por el atdre 04.12.2017 - 14:34
fuente

Lea otras preguntas en las etiquetas