2011-08-04 20 views
26

Recientemente desarrollamos y publicamos una aplicación de banca móvil en la tienda de aplicaciones, para una gran organización bancaria. El banco contrató a una empresa de seguridad para que realice una piratería ética sobre la aplicación para ver si de alguna manera compromete la información confidencial.Cómo proteger la IPA de la aplicación de los ataques si es posible la ingeniería inversa

Recientemente recibimos el informe de piratería de la empresa, que a pesar de indicar que no hay problemas de seguridad graves, contiene una lista de todos los archivos de clase, nombres de métodos y el código de ensamblado del proyecto.

Ahora el cliente insiste en que solucionemos estos agujeros en el bucle de seguridad y volveremos a publicar la aplicación. Sin embargo, no tenemos idea de cómo lograron obtener todos estos detalles del IPA de la aplicación. Busqué esto por SO y encontré una publicación en particular que menciona el enlace this, que dice que no puedes guardar tu aplicación para que no sea pirateada.

Por favor, ayúdenme a solucionar estas vulnerabilidades de seguridad, o si no es posible, cómo convencer al cliente.

Editar: Recientemente encontré this página. Parece que EnsureIT de Arxan puede evitar que las IPA de la aplicación se realicen en ingeniería inversa. Alguien experimentado con esto?

+1

Usted debe revisar esta pregunta: ¿http://stackoverflow.com/questions/5556849/iphone-ipad-app-code-obfuscation-is-it-possible-worth-it – andreamazz

+0

Gracias por tu respuesta andreamzz. Sin embargo, la respuesta aceptada en el post dice que la ofuscación en el objetivo C no es posible, y el método manual que se ha descrito, sería demasiado tedioso y lento para su incorporación en una aplicación ya completada. – Vin

+0

hacking ético? ¿y si alguien intenta piratear sin ética? – peko

Respuesta

9

Hay siempre un riesgo involucrado. Incluso si no introduce vulnerabilidades usted mismo, la plataforma puede permitir exploits que, al final, pueden ofrecer un punto de entrada para un atacante malintencionado.

En cuanto a su pregunta: es no es seguro suponer que una URL codificada, incluso si se ofusca más allá de lo esperado, no se puede pelar fuera de su producto. Siempre diseñe sus aplicaciones de modo que la seguridad de los datos del usuario esté garantizada (en la medida de lo posible) incluso si los recursos integrados se ven comprometidos. Si solo el conocimiento de esa URL representa una amenaza para la seguridad, entonces su enfoque completo y la API de sus clientes son intrínsecamente inseguros. Recuerde que tal información podría ser capturada por un ataque de hombre en el medio (y otros modos de ataque) también.

Evite la seguridad por oscuridad. Almacene datos confidenciales solo en el disco si es necesario. Como regla general, no permite el almacenamiento de PIN/TAN.

Algunos pensamientos que pueden (o no) convencer a su cliente de que su aplicación es tan seguro como pueden ser:

  • Mientras la aplicación se ejecuta en un dispositivo no jailbreak, es poco probable que un atacante, incluso con conocimiento de sus aplicaciones internas, puede acceder a los datos de cualquier usuario, ya que el iPhone normalmente no ofrece oportunidades para interferir con su aplicación
  • Si el atacante puede acceder a los datos de sus usuarios y proporciona has estado protegiendo esa información con todos los medios disponibles en iOS (-> keychain -> crypto chip -> ...), entonces no es tu culpa. Significa que el dispositivo está jailbroken o existen vulnerabilidades del sistema que han sido explotadas, simplemente no se puede hacer nada con respecto a ninguna posibilidad.
  • Es imposible evitar la ingeniería inversa de su aplicación. Incluso si hubiera puesto más esfuerzo en la ofuscación, un atacante con una fuerte motivación aún podría obtener lo que quiere. Su cliente necesita acostumbrarse a esto ya que es un hecho.
  • Otras plataformas tienen vulnerabilidades similares, sin embargo, en el iPhone, al menos, tiene un entorno algo cerrado y un riesgo reducido de ser atacado con troyanos y similares.
  • Los gobiernos y las empresas de seguridad son atacadas regularmente, aunque ahora deberían protegerse. Esto significa que la vida es intrínsecamente insegura, afrontarla.
+0

Tu punto es como, hey incluso los gobiernos son pirateados, ¿por qué no? en serio, esto no son argumentos. no puede suponer que el dispositivo no está jaibroken, etc. Pero como dijo no hay seguridad en la oscuridad. – peko

+0

Hice ese punto solo para poner las cosas en perspectiva. No es una excusa para no preocuparse por la seguridad en absoluto. Más bien debería explicar que, incluso con las medidas de seguridad más sofisticadas, nunca puede estar 100% seguro de que su producto es seguro. – Toastor

+3

Por supuesto, no puedo suponer que el dispositivo no tenga jailbreak. Pero puedo suponer que el usuario con ese dispositivo jailbroken sabía lo que estaba haciendo cuando estaba jailbreaking y que él o ella podría comprometer la seguridad de su dispositivo. Por lo tanto, si debido al jailbreak el usuario pierde datos personales críticos a un atacante, eso es bajo su propia responsabilidad. – Toastor

1

yo estaba investigando recientemente sobre esto y yo encontramos este artículo útil, sobre todo la parte citó:

El código de una aplicación nativa se almacena en forma de un archivo ejecutable binario, lo que es aún más encriptado; su descifrado se realiza solo cuando el archivo ejecutable es cargado por el procesador en la memoria de acceso aleatorio y todo el proceso de descifrado ocurre en el nivel de hardware. Es por eso que es muy difícil crear herramientas de descifrado sin conexión. La única forma de descifrar datos binarios encriptados es en un dispositivo liberado con algunas herramientas especiales instaladas.

Security in iOS: Protecting .ipa File Content by Stoyan Stoyanov

Cuestiones relacionadas