Tropezando con la vulnerabilidad de Uber

[Nathan] es un programador de telefonía móvil. Recientemente depuró uno de sus nuevos programas cuando cayó en una interesante vulnerabilidad de seguridad durante la ejecución de un programa llamado Charles. Charles es un proxy en línea que le permite monitorear y analizar el tráfico de Internet entre su computadora e Internet. El programa básicamente funciona como un humano en el medio, lo que le permite ver todas las solicitudes y los datos correspondientes y, por lo general, le da la opción de manejarlo.

Mientras depura su programa, [Nathan] se dio cuenta de que pronto necesitaría que lo llevaran. Después de abrir el programa de Uber, se le ocurrió que todavía estaba inspeccionando este tráfico. Decidió hurgar y ver si podía encontrar algo interesante. La comunicación del programa Uber al centro de datos de Uber se realiza a través de HTTPS. Esto significa que está encriptado para proteger su información. Sin embargo, si está intentando inspeccionar su propio tráfico, puede utilizar Charles para firmar su propio certificado SSL y descifrar toda la información. Así es [Nathan] hizo. No lo menciona en la publicación de su blog, pero debemos preguntarnos si la aplicación Uber le advirtió sobre el certificado SSL no válido. De lo contrario, esto podría causar un problema de privacidad para otros usuarios si alguien hiciera que un hombre en el medio atacara a una víctima desprevenida.

[Nathan] pinchó entre las diversas solicitudes hasta que vio algo interesante. Hubo una solicitud repetida que Uber usa para "obtener y comunicar el asiento del conductor, la disponibilidad del conductor, la configuración de ajuste y más". Notó que dentro de esta solicitud, hay una variable llamada "isAdmin" y se estableció en falso. [Nathan] usó Charles para capturar esta solicitud y cambiar el valor a verdadero. No estaba seguro de que hiciera nada, pero bastante seguro, esto desbloqueó algunas funciones nuevas que generalmente solo son accesibles para los empleados de Uber. No estamos muy seguros de para qué sirven estas funciones, pero obviamente nadie las usa.

  • StinkySteve dice:

    Debe instalar un nuevo certificado SSL en el dispositivo para ejecutarlo. Lo mismo si está usando mitmproxy u otro programa similar.

    ¿Uber ha solucionado esto? ¿Quizás todos podamos ser engañados por esto?

    • TiSpork dice:

      No estoy seguro de por qué dice que necesita instalar un nuevo certificado. Solo necesita instalar el certificado Charles CA para evitar certificados.

      El verdadero defecto aquí es que parecen pensar que HTTPS es seguridad de aplicaciones. Necesitan al menos usar trucos de firma de claves públicas / privadas para cada llamada / respuesta de API. La información aún era visible a través de un ataque masculino, pero las firmas evitarían la falsificación. Hackea todos los datos de la llamada / respuesta, los cifra con la mitad de la clave y luego los agrega a la llamada / respuesta. Muy simple de implementar y la confirmación de entrada es rápida. Si agrega una marca de tiempo en la llamada / respuesta, incluso obtendrá una prevención de ataque repetido simple al verificar que la marca de tiempo esté en una ventana de tiempo corta. Esto, por supuesto, estaría además de HTTPS.

      • kjkrum dice:

        Todo esto podría ser reemplazado por el MITM. Solo necesitan descompilar su programa y obtener sus claves.

        • TiSpork dice:

          La clave del servidor nunca estaría en el programa compilado. Es la base del cifrado de clave pública / privada. También puede generar un conjunto de claves diferente para cada cliente, por lo que la descompilación tampoco le proporcionará la clave del cliente. Muchas API públicas funcionan en este dispositivo.

          • kjkrum dice:

            Lo que sugieres no agregaría absolutamente nada a la seguridad que ya brinda SSL. Una vez que se rompió la seguridad de la capa en línea de la manera descrita en el artículo, el MITM podría simplemente reemplazar las claves públicas de ambas partes con las suyas propias y volver a firmar cada mensaje con sus propias claves privadas.

      • JDL dice:

        La instalación del certificado Charles CA es una operación privilegiada que (si la realiza correctamente el teléfono móvil) requiere un acceso confiable al dispositivo de la "víctima desprevenida" para instalar una nueva raíz de confianza. Sin instalar el certificado de CA en el dispositivo de la víctima, el programa denegará la comunicación que fluye a través del proxy o se someterá a una advertencia de seguridad.

        Un certificado anclado dentro de la aplicación móvil proporcionaría una barrera adicional al ataque al requerir que el atacante instale una versión personalizada de la aplicación antes de que el MITM pase desapercibido. Por supuesto, una vez que el atacante está a punto de instalar un programa personalizado, tiene tanto poder como cualquiera en el medio.

      • JDL dice:

        Además, no utilice marcas de tiempo como un medio para evitar ataques repetidos. Muchas bromas pueden suceder en un "corto período de tiempo", o incluso entre los tics del reloj de su sistema.

      • celdrono dice:

        Puede que no haya ningún defecto. Este atributo le dice al cliente de iPhone que muestre algunas opciones adicionales, pero no dice si el servidor de Uber acepta o no esos valores de cuenta que no son de administrador.

  • DainBramage dice:

    Odio admitirlo, pero estaba confundido hasta que descubrí que Uber es una aplicación y no un adjetivo en este artículo.

    Definitivamente no soy un habitante de la ciudad.

    • mjrippe dice:

      Uno de los problemas con TODAS LAS MAYÚSCULAS.

      Me pregunto cuántos otros programas tienen tal vulnerabilidad.

    • bthy dice:

      Yo también

  • onebiozz dice:

    "IsAdmin", ¿qué mierda literal?
    He cometido muchos errores estúpidos mientras programaba antes, pero nunca le pregunté amablemente al cliente si el usuario tiene privilegios administrativos.

    • Robar dice:

      Definitivamente hay un cómic XKCD en alguna parte.

    • araneoidulo dice:

      No es tan estúpido como parece; es una bandera enviada por el servidor al cliente que le indica al cliente si debe mostrar el menú de administración / depuración. La mayoría de los comandos de administración / depuración le permiten alterar qué partes de la interfaz de usuario están expuestas, y así sucesivamente.

      ESPERO que cualquier alteración posterior con cosas que los clientes no puedan modificar, como cambiar el costo de una unidad, sea rechazada por el servidor como inválida.

      • TiSpork dice:

        Todo lo que tengo que hacer es sentarme en la cafetería a la vuelta de la esquina de su oficina, haciendo un ataque medio masculino contra el wifi. Después de que un trabajador con los privilegios adecuados inicia accidentalmente su aplicación a través de wifi, ahora tengo la información de su sesión. Sin siquiera una huella digital encriptada en cada solicitud / respuesta para verificar la autenticidad, nada podría detenerme.

        Si alguien afirma que esto parece descabellado, entonces nunca ha conocido a un hacker en una misión. De hecho, si la empresa no tiene una buena seguridad en su red cableada, entonces un pirata informático puede correr por el edificio (es decir, control de plagas) y ocultar un pequeño dispositivo de red para atrapar el tráfico. Busca en Google la piña Hak5 como referencia.

        • Tim dice:

          Si es un tercero que intercepta el tráfico SSL entre un cliente y un servidor, solo verá datos cifrados. Ese es el objetivo de SSL. El Hak5 Pineapple no cambia eso en absoluto.

    • Señor esponjoso dice:

      Sin embargo, es bueno que hayan dejado el nombre hermoso y descriptivo. Si se llamara algo indecible, alguien habría tenido que pasar y probar todo, y quién sabe qué más arrojaría eso 🙂

      • Leithoa dice:

        La seguridad por oscuridad solo hace que las mejoras futuras de otros desarrolladores sean más difíciles, no más seguras.

  • Georgios dice:

    Lo tienen probablemente por razones de depuración, pero en realidad hicieron que su programa pareciera que fue programado por aficionados (con el mal significado de la palabra).

  • Oliver dice:

    También es posible que el cliente utilice el indicador isAdmin para mostrar opciones. El servidor tiene que negarse a aceptarlos, por supuesto, así que tal vez no sea tan ridículo.

  • Fennec dice:

    Siempre puede hacer algo así con un certificado autofirmado y un proxy para lacar el punto de acceso al café y recopilar datos de Facebook de las personas, etc. 🙂

    La verdadera vulnerabilidad aquí es que la cuenta de nivel de seguridad de Über es solo una bandera enviada por el cliente. ¿Qué desagradable Über?

    Mi puesto en mi lugar de trabajo es escribir un programa de servidor de respaldo. Antes de comenzar a trabajar en el sitio donde estoy, nunca antes había escrito un programa de back-end, pero incluso sin experiencia, todavía desarrollé reglas de control de acceso y licencias para ambos accesos a carreteras, además de permisos de base de datos por fila. El cliente no dicta nada, el servidor dicta nada y el cliente no puede hacer nada a menos que haya iniciado sesión como administrador.

    Entonces, si estoy furioso, ¿qué raza de bacalao se esconde en Über para hacer algo tan estúpido como esto? Por supuesto, como alguien más ya ha mencionado, podría ser solo el cliente mostrando las opciones adicionales, lo cual no es un truco o descubrimiento, es solo cómo se hace y el desarrollador de software que escribió la publicación original definitivamente notará esto, así que supongo el servidor realmente le dio acceso ...

    • Señor esponjoso dice:

      Otra persona a la que no le importa lo suficiente aprender. He visto círculos en términos de valores ambientales con bastante frecuencia en grandes productos comerciales bajo prueba.
      Parece que no siempre te enseñan a pensar como una mala persona en los cursos oficiales y actualmente una revisión de seguridad es solo un centro de costos para sacar el presupuesto y ahorrar dinero.

      La mayoría de las redes corporativas MITM ssl de esta manera con certeza predeterminada enviada a las máquinas corporativas como parte de su filtrado DPI, por lo que los usuarios ni siquiera reciben una advertencia o saben que esto está sucediendo.

      Solo sabemos que esto es genial porque es una herramienta con la que juegan los geeks, y muchos ojos significan que, tarde o temprano, alguien lo notó y tiene un juguete, en el mundo real, es endémico.

    • araneoidulo dice:

      El indicador isAdmin se envía desde el servidor al cliente para habilitar un menú de depuración en el cliente, no al revés.

  • Rollyn01 dice:

    “Entonces, si estoy furioso, ¿qué raza de bacalao viejo se esconde en Über para hacer algo tan estúpido como esto? Por supuesto, como alguien más ya ha mencionado, podría ser solo el cliente mostrando las opciones adicionales, lo cual no es un truco o descubrimiento, es solo cómo se hace y el desarrollador de software que escribió la publicación original definitivamente notaría esto, así que yo supongo que el servidor realmente le dio acceso ... "

    Incluso si ese es el caso, ¿por qué ninguna ¿Autenticación de dos factores? Creo que al menos instalarían el servidor para realizar la solicitud después de la falla de CRC porque se ha cambiado el indicador "isAdmin". ¿O ya ni siquiera se preocupan por los ataques mitm?

  • Código Rojo dice:

    "Pero tenemos que preguntarnos si la aplicación Uber le advirtió sobre el certificado SSL no válido".
    Esta.
    Entonces, ¿quién acepta el certificado no válido, iOS o la aplicación Uber? Estos son programas seguros que me asustan, al menos en un navegador web puedes ver que la certeza no es válida. Cuando pasa por la API, muchos desarrolladores se van para asegurarse de que las validaciones estén deshabilitadas para pasar las pruebas.
    Considere esta búsqueda web reciente que hice mientras trabajaba en un proyecto de tarjeta de crédito, "validación de certificado httpwebrequest". Tenga en cuenta que los resultados de 9/10 son "Cómo deshabilitar".

    • celdrono dice:

      La sesión SSL se cifró con un certificado válido. El certificado fue firmado por una autoridad de certificación raíz de confianza. Dio la casualidad de que Charles creó el certificado de firma, y ​​la confianza se creó solo después de que el certificado de proxy se instaló como una autoridad raíz confiable del propietario del abogado, pero eso no es menos válido.

  • Mark Atwood dice:

    ¿Por qué las aplicaciones de teléfonos móviles utilizan el sistema CA?

    ¡Pueden anclar su certificado de confianza cuando se compilan!

    • fuelle pescado dice:

      El proxy local negocia la conexión y luego pasa el tráfico como https. El proxy firma su propio certificado raíz de serpiente, en el que confía explícitamente, instalando el certificado en su navegador o almacén de claves / almacén de CA. Si no realiza este paso, el navegador informará MITM o un certificado que no es de confianza. El navegador que se basa en la falsa certeza no indica una vulnerabilidad explícita. Sin embargo, el parámetro de pase es increíble. Además, si establece una certeza durante el tiempo de compilación, asume que la certeza no se revocará ni caducará antes de que su usuario actualice el programa. Cuando se trata de la instalación de software local, dejará vulnerables a sus usuarios o perderá usuarios.

      Por favor llama si soy un tonto.

  • xpozitron dice:

    El punto del artículo es que puede manipular un cliente para habilitar el acceso integrado de administrador / empleado. El problema no está en SSL o certificados falsos, sino que la función está ahí y no se elimina de una aplicación cliente enviada.

  • C. Chef dice:

    Experimenté MITM con mi Android, capturaron mi capacidad para viajar. Trabajé, pero todavía no estoy seguro de cómo se hizo.

Nora Prieto
Nora Prieto

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *