Los días de gritos en los pisos de remates de NYSE, NASDAQ y otras bolsas de todo el mundo han desaparecido. Con el advenimiento de plataformas de trading electrónico y redes, el intercambio de instrumentos financieros ahora es más fácil y más rápido que nunca; pero esto viene con riesgos inherentes.

Este artículo fue publicado originalmente en ingles http://blog.ioactive.com/2017/09/are-you-trading-securely-insights-into.html por Alejandro Hernández (@nitr0usmx)

Desde un principio, los chicos malos también se han unido a la fiesta de Wall Street, desarrollando modelos inteligentes para obtener ganancias por medio fraudulentos. Sus esfuerzos han incluido todo, desde la creación de firmas de corretaje ficticias que terminaron siendo esquemas de Ponzi [1] hasta células organizadas que realizan estafas de Pump and Dump. [2] (Pump: comprar acciones baratas e inflar el precio a través de finanzas falsas y declaraciones engañosas al mercado a través de spam por email, medios sociales y otros medios tecnológicos; Dump: una vez que el precio es alto, vender las acciones y recoger la ganancia).

Cuando se trata de seguridad, vale la pena señalar cómo se diferencian los sistemas bancarios de los mercados de capitales. En los sistemas bancarios, la información está centralizada en una única entidad financiera; hay un punto único de fallo en lugar de muchos, lo que los hace más vulnerables a ciberataques. [3] En cambio, los mercados mundiales están distribuidos; registros de quién posee qué, quién vendió y compró qué, y a quién, no se almacenan en un solo lugar, sino en muchos. Al igual que la materia y la energía, el número de acciones y otros instrumentos financieros no pueden crearse a partir de la nada (por ejemplo, un registro de base de datos modificado dentro de una sola entidad financiera). Una vez emitidos los instrumentos financieros, estos sólo pueden ser intercambiados de una entidad a otra dejando trazas de dicha transacción. Dicho esto, la información valiosa, así como la superficie y los vectores de ataque en entornos de bolsas y mercados de valores son ligeramente diferentes que en los sistemas bancarios.

Foto tomada de http://business.nasdaq.com/list/

Durante varios años he utilizado las plataformas de trading de escritorio y web ofrecidas por los bancos de mi país, México, con una visibilidad limitada de los instrumentos comerciales disponibles. Hoy en día, acceder a los mercados financieros mundiales es tan fácil como abrir una cuenta de Facebook a través de empresas de corretaje en línea. Así fue como obtuve acceso al mercado financiero global, en el que están incluidas las empresas cotizadas en las bolsas de Estados Unidos y de todo el mundo. Cualquier persona puede comprar y vender una amplia gama de instrumentos financieros en el mercado secundario (acciones, ETFs, etc.), mercado de derivados (opciones, opciones binarias, contratos por diferencias, etc.), mercados de divisas – también conocido como Forex – o los mercados avant-garde de las criptomonedas (bitcoin, ethereum, etc.).

La mayoría de los bancos con soluciones de inversión y las firmas de corretaje en línea ofrecen plataformas móviles para operar. Estas aplicaciones permiten hacer muchas cosas como:

  • Financiar su cuenta a través de transferencias bancarias o tarjeta de crédito
  • Mantener un registro del capital disponible para invertir y del poder de compra (saldos de efectivo y cuentas margen para apalancamiento)
  • Monitorear sus posiciones (número de instrumentos financieros que posee) y su desempeño (ganancias o pérdidas)
  • Monitorear precios y rendimientos de instrumentos o índices
  • Emitir órdenes de compra o venta de instrumentos
  • Crear alertas o disparadores para ser ejecutados cuando se alcancen ciertos umbrales de precios
  • Recibir noticias y transmisiones de video de noticiarios en tiempo real
  • Mantenerse en contacto con la comunidad de traders a través de redes sociales y chats

Sin importar si eres un especulador, un trader intra-día muy activo, o simplemente alguien a quien le gusta seguir la estrategia de comprar y retener valor a largo plazo, cada elemento de la lista anterior debe mantenerse en secreto y sólo debe ser conocido por su dueño.

Hace cuatro meses, mientras usaba mi aplicación de trading, me pregunté, “con la enorme cantidad de dinero que se intercambia en las bolsas de valores, ¿qué tan seguras son estas aplicaciones móviles?” Así que ahí estaba, un minuto después, iniciando esta investigación para exponer los problemas de seguridad y privacidad en algunas de estas apps móviles.

Antes de pasar a los resultados, me gustaría compartir una moraleja interesante y polémica que encontré al final de esta investigación:

“La aplicación desarrollada por una firma de corretaje que sufrió un robo de datos hace varios años demostró ser la más segura”. Como dice el viejo refrán: “ahogado el niño, a tapar el pozo”.

Alcance

Mi análisis comprendió de las últimas versiones de 21 aplicaciones de trading móvil más utilizadas y conocidas disponibles en Apple Store y Google Play. Las pruebas se centraron puramente en las aplicaciones móviles; plataformas de escritorio y web no se incluyeron en este estudio. Sin embargo, descubrí algunas vulnerabilidades de seguridad en los servidores del back-end, pero no las incluí en este artículo.

Dispositivos:

  • iOS 10.3.3 (iPhone 6) [sin jailbreak]
  • Android 7.1.1 (emulador) [rooteado]

Probé los siguientes 14 controles de seguridad, los cuales representan sólo la punta del iceberg en comparación con una lista de controles de seguridad más exhaustiva para aplicaciones móviles, la cual podría dar una mejor fotografía del estado actual de la seguridad de estas aplicaciones. Vale la pena señalar que no pude probar todos los controles en algunas de las apps, ya sea porque una característica no estaba implementada (por ejemplo, chats sociales) o porque no era técnicamente factible (por ejemplo, SSL pinning implementado que no permitiría la manipulación de datos) o simplemente porque no pude crear una cuenta para pruebas.

  Control Plataforma % de fallo
Diseño Autenticación biométrica iOS 24%
Cierre de sesión o bloqueo automático para sesiones inactivas iOS 24%
Modo privacidad iOS 95%
Riesgos en medios sociales iOS 0%
Técnico Comunicación encriptada iOS 10%
Validación del certificado SSL iOS/Android 62%
Manejo de sesiones iOS 38%
Validación de datos en lado del cliente iOS 48%
Datos sensibles en la consola de logs iOS/Android 62%
Almacenamiento seguro de datos iOS/Android 67%
Detección de root Android 95%
Ofuscación de código Android 29%
Secretos embebidos en el código Android 62%
Aplicación firmada Android 0%

 

Resultados

Lamentablemente, los resultados demostraron ser mucho peores que los de las aplicaciones de banca personal en 2013 y 2015. [4] [5] Yo creo que la ciberseguridad no ha estado en el radar de la industria FinTech a cargo de desarrollar estas aplicaciones financieras. Los investigadores de seguridad han ignorado estas aplicaciones también, probablemente debido a una falta de comprensión del mercado del dinero.

Los problemas de seguridad que encontré las presento agrupadas en las siguientes secciones. Los logotipos y detalles técnicos que mencionan el nombre de las instituciones de corretaje se eliminaron de las capturas de pantalla, logs y código para evitar cualquier impacto negativo a sus clientes o reputación.

Contraseñas en texto plano expuestas

En cuatro aplicaciones (19%), la contraseña del usuario se envió en texto claro a un archivo de configuración XML no cifrado o a la consola de logs. No obstante, se requiere de acceso físico al teléfono para extraerlos.

En un escenario de ataque hipotético, un usuario malintencionado podría extraer la contraseña del sistema de archivos o de la consola de logs con herramientas básicas, lo cual es relativamente fácil, posteriormente iniciar sesión a través de la plataforma web de la firma de corretaje y realizar operaciones no autorizadas. Podría vender acciones, transferir el dinero a una cuenta bancaria recién agregada y borrar esta cuenta bancaria una vez finalizada la transferencia del dinero. Durante las pruebas, me di cuenta de que la mayoría de las aplicaciones sólo requieren de la contraseña actual para vincular cuentas bancarias y no tienen implementada la autenticación de doble factor (2FA), por lo tanto, no se envía una contraseña de una sola vez (OTP) al teléfono o correo electrónico del usuario para autorizar dicha transacción.

Contraseñas en texto plano almacenadas en archivos de configuración:

En dos aplicaciones, como en la siguiente, además de mandar a la consola de logs el nombre de usuario y la contraseña, la autenticación se realiza a través de un canal HTTP sin cifrar:

En otra app, la nueva contraseña se manda a la consola de logs cuando un usuario cambia de contraseña:

Datos de trading y de cuentas de usuario expuestas

En el contexto de trading, los datos operativos y estratégicos no deben enviarse a la consola de logs ni a ningún otro archivo sin cifrar. Estos valores sensibles incluyen datos personales, saldos en efectivo y margen, patrimonio neto (total de dinero invertido), liquidez neta, el número de posiciones, símbolos recién buscados, listas de seguimiento (watchlists), órdenes de compra / venta, alertas, poder adquisitivo y depósitos realizados. Además, otros valores que no deben ser expuestos son la contraseña, identificadores de sesión, URLs, tokens criptográficos, entre otros.

El 62% de las aplicaciones enviaron datos sensibles a logs y el 67% los almacenaron sin cifrar. No obstante, el acceso físico al dispositivo es necesario para extraer estos datos.

Si estos valores se filtran de alguna manera, un usuario malintencionado podría obtener información sobre el patrimonio neto (el total de dinero invertido) y la estrategia de inversión de los usuarios al conocer los instrumentos que estos han estado buscando recientemente, así como sus saldos, número de posiciones, listas de seguimiento, poder adquisitivo, etc.

Imagine un escenario hipotético en el que un inversor de alto perfil y sofisticado pierde su teléfono y la aplicación de trading que ha estado utilizando almacena su lista de seguimiento de “Inversiones Potenciales” en texto claro. Si esta lista de seguimiento es extraída y termina en manos de alguien que quiere imitar la estrategia de este inversor, este último podría comprar acciones antes de un posible aumento de precios. En el peor de los casos, imagine que la cifra del total de dinero invertido aterriza en las manos equivocadas, digamos secuestradores, estos ahora sabrán cuán generoso podría ser un rescate.

Saldos y portafolio de inversiones filtrados en la consola de logs:

Órdenes de compra y venta enviadas a la consola de logs:

Información personal almacenada en archivos de configuración:

Watchlists de “Inversiones Potenciales” y “Comprar Después” enviadas a la consola de logs:

Watchlist “Favoritos” enviada a la consola de logs:

Tickers (o símbolos que representan a una compañía) recién buscados:

Símbolos recién buscados enviados a la consola de logs:

Símbolos recién buscados almacenados en una base de datos SQLite local (en el teléfono):

Número de cuenta y saldos expuestos en la consola de logs:

Comunicación insegura

Dos de las aplicaciones utilizan canales HTTP no cifrados para transmitir y recibir todos los datos y 13 de 19 aplicaciones que utilizan HTTPS no comprueban la autenticidad del servidor remoto al no verificar su certificado SSL; por lo tanto, es factible realizar ataques Man-in-the-Middle (MiTM) para espiar y manipular datos. Algunos ataques MiTM requieren de engañar al usuario para que este instale un certificado malicioso en el dispositivo móvil.

En determinadas circunstancias, un atacante con acceso a alguna parte de la red, como el router de una red Wi-Fi pública, podría ver y modificar la información transmitida desde y hacia la aplicación móvil. En el contexto de trading, un actor malintencionado podría interceptar y alterar valores como los precios de compra y venta de un instrumento financiero para que un usuario compre o venda valores basados ​​en esta información falsa.

Por ejemplo, la siguiente app utiliza por defecto un canal inseguro para la comunicación; un usuario no tan familiarizado con la tecnología y que no conoce el significado de “SSL” (Secure Socket Layer), no habilitará este control en la pantalla de inicio de sesión y todos sus datos confidenciales serán enviados y recibidos sin cifrar:

Se encontró que una sola aplicación envía de forma frecuente un archivo de logs con datos de trading sensibles al servidor remoto a través de un canal HTTP no cifrado.

Algunas aplicaciones transmiten datos no sensibles (por ejemplo, noticias públicas o emisiones de canales de TV financieros en vivo) a través de canales HTTP inseguros, lo cual no parece representar un riesgo para el usuario.

Autenticación y manejo de sesiones

Hoy en día, la mayoría de los smartphones soportan la lectura de huellas dactilares, y la mayoría de las apps de trading lo utilizan para autenticar al usuario. Sólo cinco aplicaciones (24%) no hacen uso de esta tecnología.

Lamentablemente, el uso de la base de datos de huellas digitales en el teléfono tiene un pequeño inconveniente:

Por otro lado, en dos aplicaciones se observó que después de hacer clic en el botón de cierre de sesión las sesiones seguían siendo válidas en el lado del servidor. Adicionalmente, otro par de aplicaciones implementan políticas de contraseña laxas:

Modo de privacidad

Una sola aplicación (buscar “moraleja” anteriormente en este artículo) implementa el “Modo de privacidad”, el cual protege ciertos valores confidenciales que son mostrados en pantalla cuando uno está en áreas públicas donde ataques de shoulder surfing son factibles. El resto de las aplicaciones no implementan esta característica útil e importante.

Sin embargo, hay un pequeño error en esta única implementación vista: cada cifra monetaria sensible está enmascarada, excepto en la pestaña de “Posiciones” donde las columnas de “Liquidez neta” y “Totales” son totalmente visibles:

Cabe señalar que no sólo se deben enmascarar los saldos, posiciones y otros valores sensibles, sino que también los datos de tarjetas de crédito cuando se ingresan para financiar la cuenta:

Validación de datos en el lado del cliente

No en todas, pero en la mayoría de las aplicaciones que no comprueban los certificados SSL, es posible realizar ataques MiTM e inyectar código JavaScript o HTML malicioso en las respuestas del servidor. Dado que las Vistas Web de diez aplicaciones están configuradas para permitir la ejecución de código JavaScript, es posible desencadenar ataques comunes de Cross-site Scripting (XSS).

Un XSS ejecutado en dos apps distintas (<script>alert(document.cookie);</script>):

Un formulario falso en HTML inyectado para engañar al usuario y tratar de robar sus credenciales:

Detección de root

Muchas aplicaciones de Android no se ejecutan en dispositivos rooteados por razones de seguridad. En un teléfono rooteado o emulador, el usuario tiene el control total del sistema, por lo tanto, el acceso a archivos, bases de datos y logs es completo. Una vez que un usuario tiene acceso completo a estos elementos, es fácil extraer información valiosa.

20 de las aplicaciones (95%) no detectan entornos rooteados. La única aplicación (buscar “moraleja” anteriormente en este artículo) que lo detecta simplemente muestra un mensaje de advertencia; sin embargo permite al usuario seguir utilizando la plataforma normalmente:

Secretos embebidos en el código y ofuscación

Seis instaladores para Android (archivos .apk) fueron fácilmente convertidos a código legible a través de ingeniería inversa. El resto tenía niveles de ofuscación de medios a altos, como el que se muestra a continuación. Es importante destacar que el objetivo de la ofuscación es ocultar el propósito y funcionamiento interno de las aplicaciones (seguridad a través de la oscuridad) a fin de disuadir la ingeniería inversa y a la vez hacerla más difícil.

En las aplicaciones no ofuscadas, se encontraron secretos tales como claves criptográficas y contraseñas de servicios de terceros. Esto podría permitir el acceso no autorizado a otros sistemas que no están bajo el control de las casas de corretaje. Por ejemplo, un usuario y contraseña de Morningstar.com (sitio especializado en investigación de inversiones) embebido en una clase Java:

Curiosamente, diez de las aplicaciones (47%) tienen trazas (nombres de host e IPs internas) sobre los entornos de desarrollo y de pruebas en los que se crearon y probaron estas apps:

Otras deficiencias

El siguiente problema de confianza me llamó la atención: al abrir el chat de ayuda dentro de la aplicación, se inicia una conversación con, aparentemente, un chatbot, al cual se le pueden hacer preguntas que conllevan a respuestas confidenciales. Sin embargo, una URL con el nombre de usuario (correo electrónico) y el primer nombre pasados como parámetros se envió a la consola de logs. Al abrir esta URL desde un navegador web común, el chatbot toma la identidad de los parámetros suministrados y confía automáticamente como usuario conectado desde la app; es como una forma de autenticación con el correo electrónico solamente. Desde este chat es posible solicitar detalles confidenciales sobre la cuenta ya que todo lo que se necesita es conocer el correo electrónico y el nombre de otra persona:

No he tenido tiempo suficiente para probar completamente esta característica en otras apps, pero hasta ahora, pude extraer saldos e información personal de una sola aplicación.

Estadísticas

Una imagen dice más que mil palabras. A continuación unas gráficas que ilustran los resultados:

Divulgación responsable

Una de las misiones de IOActive es actuar con responsabilidad cuando se trata de divulgación de vulnerabilidades, por lo que entre el 6 y 8 de septiembre enviamos un informe detallado a 13 de las firmas de corretaje cuyas aplicaciones presentaban algunas de las vulnerabilidades de mayor riesgo discutidas en este artículo.

A la fecha de publicación del artículo, 26 de septiembre, sólo dos firmas de corretaje respondieron a nuestro correo electrónico.

Pruebas post-publicación

Un mes después de haber enviado un reporte de vulnerabilidades a las cinco firmas de corretaje con las vulnerabilidades más críticas, y diez días después de haber publicado este estudio, el 6 de octubre de 2017 se probaron las últimas versiones de las cinco apps afectadas obteniendo los siguientes resultados:

  • Dos apps envían todos los datos por HTTP sin encripción.
  • Tres apps almacenan la contraseña en texto plano en un archivo de configuración.
  • Dos apps envían la contraseña en texto plano a la consola de logs.

En otras palabras, ninguna de las cinco firmas respondió nuestro correo ni tampoco corrigieron alguno de los fallos reportados.

Reguladores y organizaciones de calificación

Navegando exhaustivamente en sitios web de algunos reguladores de EE.UU., [7] [8] [9] me di cuenta de que ya son conscientes de las amenazas de ciberseguridad que podrían afectar negativamente a los mercados financieros y relacionados. Sin embargo, la mayor parte del contenido publicado se centra en temas generales a los que son sujetas las instituciones financieras y usuarios finales, como por ejemplo el phishing, el robo de identidad, el software antivirus, los riesgos en las redes sociales, la privacidad y los procedimientos a seguir en caso de incidentes de ciberseguridad como brechas o denegación de servicio.

No obstante, no encontré ninguna documentación relacionada con los riesgos de seguridad del trading electrónico ni alguna guía recomendada para el desarrollo de software seguro dirigida a los programadores y a las empresas FinTech sobre cómo crear productos más seguros y de mejor calidad.

Foto tomada de http://www.reuters.com/article/net-us-internet-lending/for-online-lenders-wall-street-cash-brings-growth-and-risk-idUSBRE96204I20130703

Además, hay organizaciones que califican a las casas de corretaje en línea en una escala de 1 a 5 estrellas. Le di un vistazo a dos informes recientes [10] [11] y no encontré nada relacionado con la seguridad o privacidad en sus reseñas. Hoy en día, con los ciberataques frecuentes en la industria financiera, considero que estas organizaciones deben dar reconocimientos o por lo menos mencionar en sus revisiones los mecanismos de seguridad que las plataformas evaluadas implementan. Más controles de seguridad podría ser considerada una ventaja competitiva.

Conclusiones y recomendaciones

  • Todavía hay un largo camino por recorrer para mejorar el nivel de madurez de la seguridad en las aplicaciones móviles de trading.
  • Las plataformas de escritorio y web también deben ser probadas y mejoradas en cuestión de seguridad.
  • Los reguladores deberían alentar a las firmas de corretaje y a la industria FinTech a implementar mejores mecanismos de seguridad para tener un mejor ecosistema de trading.
  • Además de las mejores prácticas informáticas genéricas para el desarrollo seguro de software, los reguladores deben desarrollar directrices específicas para el contexto de trading que deben seguir las firmas de corretaje y las compañías FinTech encargadas de crear este software especializado.
  • Las empresas de corretaje deben realizar auditorías internas de forma regular con el fin de mejorar continuamente la postura de seguridad de sus plataformas de
  • Los desarrolladores deben analizar sus aplicaciones para determinar si sufren las vulnerabilidades aquí descritas, y de ser así, solucionarlas.
  • Los diseñadores y desarrolladores deben crear el nuevo software financiero de forma más segura siguiendo las buenas prácticas de programación ya existentes.
  • Los usuarios finales deben habilitar todos los mecanismos de seguridad que ofrecen sus aplicaciones para hacer trading de forma más segura.

Nota extra

Recuerda: el mercado de valores no es un casino donde mágicamente te haces rico de la noche a la mañana. Si no se comprenden cómo funcionan los mercados de valores, acciones y otros instrumentos financieros, existe un alto riesgo de perder dinero rápidamente. Es recomendable entender el funcionamiento del mercado de valores y su propósito antes de invertir.

Sin nada más qué agregar, les deseo feliz y seguro trading!

Artículo escrito en ingles por Alejandro Hernández  {@nitr0usmx} en el blog de IOactive http://blog.ioactive.com/2017/09/are-you-trading-securely-insights-into.html y traducido al español por el mismo Alejandro Hernández para La Comunidad DragonJAR

Referencias

[1] Ponzi scheme
https://en.wikipedia.org/wiki/Ponzi_scheme

[2] “Pump-and-Dumps” and Market Manipulations
https://www.sec.gov/fast-answers/answerspumpdumphtm.html

[3] Practical Examples Of How Blockchains Are Used In Banking And The Financial Services Sector
https://www.forbes.com/sites/bernardmarr/2017/08/10/practical-examples-of-how-blockchains-are-used-in-banking-and-the-financial-services-sector/

[4] Personal banking apps leak info through phone
http://blog.ioactive.com/2014/01/personal-banking-apps-leak-info-through.html

[5] (In)secure iOS Mobile Banking Apps – 2015 Edition
http://blog.ioactive.com/2015/12/by-ariel-sanchez-two-years-ago-idecided.html

[6] Shoulder surfing (computer security)
https://en.wikipedia.org/wiki/Shoulder_surfing_(computer_security)

[7] Financial Industry Regulatory Authority: Cybersecurity
http://www.finra.org/industry/cybersecurity

[8] Securities Industry and Financial Markets Association: Cybersecurity
https://www.sifma.org/explore-issues/cybersecurity/

[9] U.S. Securities and Exchange Commission: Cybersecurity, the SEC and You
https://www.sec.gov/spotlight/cybersecurity

[10] NerdWallet: Best Online Brokers for Stock Trading 2017
https://www.nerdwallet.com/blog/investing/best-online-brokers-for-stock-trading/

[11] StockBrockers: 2017 Online Broker Rankings
https://www.stockbrokers.com/annual-broker-review