El tipo de vulnerabilidad que encontró Prakash suele recibir el eufónico nombre de IDOR, abreviatura de Insecure Direct Object Reference (Referencia Directa Insegura a Objetos).
Una vulnerabilidad IDOR suele consistir en un sitio web o servicio que facilita a alguien que ejecuta la aplicación la recuperación de datos a los que necesita acceder…..
Para averiguar cómo recuperar los datos de otras personas en el futuro sin iniciar sesión o autenticarse en absoluto. Normalmente, encontrarás que una aplicación o servicio utiliza una URL o formulario web que contiene tu propio ID de usuario, número de serie u otro identificador no muy secreto sin ninguna otra forma de estar seguro de que eres tú. Por ejemplo, puede que intentes crear una solicitud utilizando el ID de otra persona, el siguiente número de la secuencia o alguna otra suposición probable para una referencia válida, y te encuentres con que el sistema recupera los datos directamente para ti, aunque no sea tu registro y no debas verlo.
En teoría, muchos fallos IDOR explotables se pueden encontrar de forma puramente analítica mediante ingeniería inversa de la aplicación sospechosa sin necesidad de crear una cuenta falsa y ejecutar la aplicación en sí. En la práctica, a menudo es más fácil y rápido realizar algunas reversiones básicas que te den una idea de lo que debes buscar y luego ejecutar la aplicación sospechosa mientras la observas en acción. No es necesario pasar días analizando estáticamente una aplicación en un descompilador cuando se pueden deducir los errores directamente de su propio comportamiento: basta con dar a la aplicación la oportunidad de cocinar su propia gallina de los huevos de oro de la ciberseguridad mientras se toman notas.
En este caso, la aplicación se llamaba “Acr call recorder” (Grabador de llamadas Acr) y, al igual que muchas aplicaciones de la App Store para iPhone, está (o estaba cuando miramos) llena de cientos, incluso miles, de elogiosas reseñas de 5 estrellas.
Muchos de estos comentarios de 5 estrellas curiosamente recomiendan una aplicación totalmente diferente en su texto, o elogian la aplicación con giros extraños que hacen puntos inverosímiles e incluso inquietantes.
Por ejemplo, alguien llamado Earnest te asegura que “definitivamente es un desperdicio si no has probado esta aplicación”, mientras que Christopher.1966 dice que “lleva usando esta cosita casi desde que subí al tren”, y Brenda expresa de forma un tanto escalofriante, aunque redundante, su alegría porque ahora puede “grabar lo que mi novia y yo hablamos”. (Una grabadora de llamadas que no pudiera grabar llamadas sería simplemente un nombre inapropiado).
Aunque resulta que Brenda se refiere a una aplicación totalmente distinta que incluye una función de cambio de voz, uno se pregunta si la amiga de Brenda se dio cuenta de con quién estaba hablando cuando la grabaron. La valoración de 5 estrellas de Brenda sigue contando para la atractiva valoración media de 4,2/5 de la aplicación de grabación de llamadas mencionada anteriormente.
Sin embargo, hay muchas reseñas de 1 estrella que te advierten de que ésta es una de esas “aplicaciones de prueba gratuitas” que te cobran automáticamente si no la cancelas en tres días – un tipo de aplicación gratuita que Elizafish describió muy sucintamente con su reseña, “GRATIS ?????. Ridículo”. Pero quizá la crítica más acertada, al menos hasta que la aplicación se actualizó después de que el desarrollador recibiera el informe de errores de Anand Prakash, fue la de Leanne, de 5 estrellas, que decía: “No sólo puedo gestionar las grabaciones, sino que puedo compartirlas fácilmente cuando las necesito. Me resulta muy cómodo”.
Sin embargo, Leanne no se dio cuenta de que la función de almacenamiento en la nube de la aplicación es muy útil no sólo para ella, sino para todo el mundo, incluidos los que no tienen esta aplicación o un iPhone. Al parecer, compartir sus llamadas con otras personas era mucho más fácil de lo que ella pensaba.
Prakash descompiló la aplicación para buscar posibles URL a las que pudiera conectarse, monitorizó la aplicación mientras se ejecutaba y descubrió que una de sus solicitudes de inicio de llamada era un bloque de datos JSON con el siguiente aspecto:
POST /fetch-sinch-recordings.php HTTP/1.1
Host: [ELIMINADO]
Content-Type: application/json
Conexión: close
[. . .más cabeceras, sin cookies o tokens únicos. . .]
{
“UserID”: “xxxxxx”,
“AppID”: “xxx”
}
Como no hay forma de vincular esta petición a un usuario específico que ya se haya autenticado, y el servidor no tiene forma de decidir si el remitente de la petición tiene siquiera derecho a pedir datos pertenecientes al usuario designado por UserID……, alguien puede insertar el UserID de cualquier usuario en una petición falsa, y por tanto los datos de cualquiera no están a salvo de nadie. Este tipo de fallo recibe el nombre de IDOR porque permite a los atacantes designar de forma insegura y directa a sus víctimas simplemente insertando un nuevo UserID directamente en la solicitud.