Showing posts with label iOS. Show all posts
Showing posts with label iOS. Show all posts

Tuesday, March 17, 2015

Mobile App Wall of Shame: Shaadi.com


Shaadi.com

Price : Free
Category : Social
Platform : iOS and Android
Updated : Mar. 9, 2015 (Android), Mar. 10 2015 (iOS)
Version : 4.2.2 (Android), 4.2.1 (iOS)
Size : 8.28 MB (Android), 17.7 MB (iOS)
Language : English
Vendor : People Interactive (I) Pvt. Ltd.

Background:

Shaadi.com is the world's largest matrimonial website, active since 1995. This matrimonial site permits individuals to post their profiles and responses including horoscope, caste, language and religion. Shaadi.com provides applications designed for the two main mobile platforms – iOS and Android.

Application Chart (information retrieved from Appannie & xyo.net):



Android

iOS
Global Ranking
15
92
Category Ranking
12 (Social)
24 (Social networking)
Total number of Downloads
~1 million
 ~0.3 million
Rating
3.9/5
2.7/5

A new user is required to register by providing an email address and a password, along with basic personal details. After registering the account, the user can surf profiles created by others. The application also provides a chat facility.

Vulnerability - Cleartext username/password


Login screen

The current version of the Shaadi.com application has a serious security flaw. It has been verified that both the iOS and Android versions of the application transmit the username and password via HTTP in cleartext. This flaw allows an attacker to capture the credentials sent by a user to the application server and thus compromise the user's account, which may lead to compromise of user's personal data. The service also provides premium accounts to paid customers. 

The application was tested on both the Android and iOS platforms. The vulnerability has been confirmed on Android (v4.2.2 - latest version, updated on Mar. 9, 2015) and iOS (v4.2.1 - latest version, updated on Mar. 10, 2015).  

Vulnerability in iOS version

When a user tries to register for an account on the Shaadi.com application, an HTTP request is generated. In the request the userid, password and mobile number of the user is sent in cleartext as seen below:

Account Registration

[-]http://www.shaadi.com/registration/user/?regmode=app&OS=native-iphone
Method: POST 
Host: www.shaadi.com 
User-Agent: native-iphone|4.1.0 
Request Body: form_referral_url=&form_url=http%3A%2F%2Fwww.shaadi.com%2Fregistration%2Fuser%3Fregmode%3Dapp%26appver%3D4.1.0%26os%3Dnative-iphone%26deviceid%3D---%257C---&form_name=MOB_DR_SEO_REG1&frompage=From+Reg+Page&go=&olmt_home_regpage=&hid_year=&oscode=2&email=fnzscalerlnzscaler%40gmail.com&password1=p%40ssword123&postedby=Self&first_name=fnzscaler&last_name=lnzscaler&gender=Male&day=01&month=01&year=1994&community=No+Religion&mother_tongue=Konkani&countryofresidence=USA&contact_tel_number=Landline+No.

Similarly, when an already existing user tries to login to his account by providing his username and password, these credentials are also being sent in cleartext. Below is the traffic capture when a user tries to login to an existing account:

Login

[-]http://www.shaadi.com/native-apps2/user/login?email=fnzscalerlnzscaler@gmail.com&password=p@ssword123&appver=4.1.0&os=native-iphone&deviceid=---%7C--- 
Method: GET            
Host: www.shaadi.com            
User-Agent: Shaadi/462 CFNetwork/711.1.16 Darwin/14.0.0            
Server Response: {"status":"200","data":{"sid":"7B16D793AFF0443EE1320F85EFD1B4C51425446439","abc":"0CE03847FB4B0C981EB552E34E1C96B61425446522|ZSH82845405|","premium":false,"gender":"Male","age":"21","memberstatus":"ToBeScreened","memberlogin":"ZSH82845405","photograph_status":"photo_request","update_available":false,"has_notification":"N","has_chat_notification":"N","content_settings":{"eoi":"Y","acc":"Y","msg":"Y","nf1":"N","dr":"Y"},"display_name":"SH82845405","username":"SH82845405","email":"fnzscalerlnzscaler@gmail.com","use_connect":1,"upgrade_message":"UPGRADE TO PREMIUM","support_telephone":"1860-200-3456","payment_telephone":"1860-200-3456"},"expdt":"20150403002202","banner_images":{"banner_search_results":{"title":"Become a Premium Member & connect directly via","subtitle":"EMAIL, CHAT & PHONE","details":"","version":"","img":"http:\/\/img.shaadi.com\/community\/images\/app\/banner_search_results_male_free_high.png"},"banner_accepted":{"title":"Upgrade to Premium & start chatting with your Accepted Members!","subtitle":"","details":"","version":"","img":"http:\/\/img.shaadi.com\/community\/images\/app\/banner_accepted_free.png"},"banner_inbox_single":{"title":"1 Member like your profile!","subtitle":"Become a Premium member & write back to them today","details":"","version":"","img":"http:\/\/img.shaadi.com\/community\/images\/app\/banner_inbox_single_male_free_high.png"},"banner_inbox_multiple":{"title":"#count# Members like your profile!","subtitle":"Become a Premium member & write back to them today","details":"","version":"","img":"http:\/\/img.shaadi.com\/community\/images\/app\/banner_inbox_multiple_male_free_high.png"}}} 

Vulnerability in Android version

Account Registration

[-]http://www.shaadi.com/registration/user/?regmode=app&OS=native-android 

Method: POST            

Host: www.shaadi.com            

User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; Nexus 7 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Safari/537.36            

Request Body: form_referral_url=&form_url=http%3A%2F%2Fwww.shaadi.com%2Fregistration%2Fuser%3Fregmode%3Dapp%26os%3Dnative-android%26deviceid%3D--%7C--%26appver%3D4.1.3&form_name=MOB_DR_SEO_REG1&frompage=From+Reg+Page&go=&olmt_home_regpage=&hid_year=&oscode=1&email=vulapps%40zscaler.com&password1=p%40ssword1234&postedby=Self&first_name=fnzscaler&last_name=lnzscaler&gender=Male&day=10&month=10&year=1985&community=Spiritual+-+not+religious&mother_tongue=Marathi&countryofresidence=USA&contact_tel_number=Landline+No. 

Login

[-]http://www.shaadi.com/registration/user/login-submit 

Method: POST            

Host: www.shaadi.com            
User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; Nexus 7 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Safari/537.36            
Request Body: go=&email=vulapps%40zscaler.com&password=p%40ssword123&autologin=0&autologin=Y

ZAP analysis:
ZAP in action - Android
ZAP in action - iOS
Conclusion

The list of mobile applications in Google Play and the iTunes App Store that send out sensitive information in cleartext continues to grow. Therefore, it is extremely important to keep separate passwords for different applications and never use the password of your financial applications anywhere else.

Credit: Lakshmi Devi.

Friday, March 6, 2015

Mobile App Wall of Shame: Quikr


Quikr Local Classifieds

Quikr app logo 

Price : Free
Category : Lifestyle/Shopping
Platform : iOS and Android
Updated : February 12, 2015(Android), 22 January 2015(iOS) 
Version : 7.42(Android), 2.8.2(iOS)
Size : 3.89 MB(Android),10 MB(iOS)
Language : English
Vendor : Quikr India

Background:

Quikr is India's largest online and mobile classifieds portal. Like Craigslist, Quikr provides the users with a platform to help them buy, sell, rent and advertise across multiple categories like real estate, jobs, entertainment, education, matrimonial, etc. Quikr also has a mobile app on both the Android and iOS platforms. 


Application Chart (information retrieved from Appannie xyo.net)


Android
iOS
Overall Ranking(India)
20
90
Category Ranking(India)
5 (Shopping)
8 (Lifestyle)
Total number of Downloads
12 Million
108 Thousand 
Rating
4/5
3.5/5


A user is required to provide an email address and password when creating an account. After creating an account, the user can the post advertisements on Quikr. The application also provides functionality wherein different users can chat with each other.

Vulnerability - Clear text username/password

The current version of Quikr mobile application has a serious data leakage vulnerability. It has been verified that both the current Android and iOS versions of the application are sending username and password information via the HTTP protocol in cleartext. This security vulnerability allows an attacker on the same network to capture the credentials sent by a Quikr user to the application server and thus compromise the user's account which may lead to posting fake ads on account owner's behalf, selling and buying products and sending spam messages via chat to other users.

The flaw has been confirmed on versions 7.42 (latest versions available on Feb 12, 2015) on the Android platform and version 2.8 (latest version available on Jan 22, 2015) on the iOS platform. 




Vulnerability in iOS version

When a user tries to register for an account in the Quikr application, an HTTP request is generated as shown below. In this request, the userid, password and mobile number of the user are sent in cleartext. 

Account Registration:

[-]  Method: POST
Url: http://services.quikr.com/api?                 method=registerUser&secCode=fd1f2276c71627c35e2a9c5f8838c09c&version=1.5
Host: services.quikr.com
User-Agent: Quikr/2.8.2 CFNetwork/711.1.16 Darwin/14.0.0
Request Body:cityId=23&userId=zscalerappscan%40zscaler.com&password=password123&mobile=9876543210&demail=969eac57dbfc4079a935fadf7ab261d6%40quikr.com
Server Response: AJBiY , N , .E]n3 , i^0%] , 1}qa , K;\OU4

Similarly, below is the traffic capture when an already existing user tries to login to their account. The userid and password are passed in cleartext.

Login:

[-]  Method: POST
Url: http://services.quikr.com/api?method=login&secCode=fd1f2276c71627c35e2a9c5f8838c09c&version=1.5
Host: services.quikr.com
User-Agent: Quikr/2.8.2 CFNetwork/711.1.16 Darwin/14.0.0
Request Body: demail=969eac57dbfc4079a935fadf7ab261d6@quikr.com&userId=zscalerappscan@zscaler.com&password=password123
Server Response: 1`QaL , B*RD , , ,

Vulnerability in Android version

We will first test the Quikr application installed on a Google Nexus tablet. The Quikr application version available in the Google Play store for the tablet was v6.9. Below is the sample traffic capture when a user tries to register a new Quikr account or login to their existing Quikr account.

Account Registration:

[-]  Method: POST
Url: http://services.quikr.com/api?method=registerUser&version=1.5&secCode=zXcv80386Mdp1hs0q7o0p9uiLZV37TdF&consumerVersion=7.42&density=2.0&demail=qaf4cd1713f1f62078magnumsnip@gmail.com
Host: services.quikr.com
User-Agent: QuikrConsumer
Request Body: --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="cityId" , , 23 , --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="demail" , , qaf4cd1713f1f62078magnumsnip@gmail.com , --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="mobile" , , 8234567890 , --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="userId" , , appscan@zscaler.com , --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="opf" , , json , --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="password" , , p@ssword123
Server Response: {"login":{"auth":1,"code":"usercreated","message":[{"direct":"New user created"}],"email":"appscan@zscaler.com","mobile":"8234567890","city":"23","name":"","UserSession":"PGR8fU59OHVzOWMhfFI+fll0Qj5mdnIjRXd0Rm57T0dZPXw\/Q0RDYCE4amJ5L3R5PHVdTGpORSY6KDhjbl40LlliaztN","emailCRC":null,"cityName":"Bangalore","cityId":"23","app_notif_status":1,"sound_preference":1,"notif_alarmtime":"08:00 PM","userClassification":null,"isSharedPB":0,"isSharedFB":0,"userType":1,"numAlerts":0,"numAds":"0"}}

Login:

[-]  Method: POST
Url: http://services.quikr.com/api?method=login&version=1.5&secCode=zXcv80386Mdp1hs0q7o0p9uiLZV37TdF&consumerVersion=7.42&density=2.0&demail=qaf4cd1713f1f62078magnumsnip@gmail.com
Host: services.quikr.com
User-Agent: QuikrConsumer
Request Body: --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="demail" , , qaf4cd1713f1f62078magnumsnip@gmail.com , --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="userId" , , appscan@zscaler.com , --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="opf" , , json , --s2retfgsGSRFsERFGHfgdfgw734yhFHW567TYHSrf4yarg , Content-Disposition: form-data; name="password" , , password123
Server Response: {"login":{"auth":1,"code":"success","message":[{"direct":"You are successfully logged in"}],"email":"appscan@zscaler.com","mobile":"8234567890","city":"23","name":"","UserSession":"PGR8fU59OHVzOWMhfFI+fll0Qj5mdnIjRXd0Rm57T0dZPXw\/Q0RDYCE4amJ5L3R5PHVdTGpORSY6KDhjbl40LlliaztN","emailCRC":null,"cityName":"Bangalore","cityId":"23","app_notif_status":1,"sound_preference":1,"notif_alarmtime":"08:00 PM","userClassification":"0","isSharedPB":0,"isSharedFB":0,"userType":1,"numAlerts":0,"numAds":"0"}}

As you can see in the above requests, all communication between the mobile app and server is in sent via cleartext, which includes sensitive user information.

ZAP Analysis:
ZAP in action - Android
ZAP in action - iOS
This flaw was identified using the Zscaler Application Profiler (ZAP). ZAP is a free online tool that can be used to analyze mobile applications for vulnerabilities and privacy issues as seen in the above screenshots.

Conclusion:
We continue to find new popular applications in the Apple and Google app stores that are leaking device data and sending out sensitive user information in cleartext. This is a good argument for the use of one time passwords when establishing accounts on mobile apps. As a user, you can never know with certainly if your credentials are being transmitted/stored securely. By leveraging a password manager and ensuring that passwords are unique for all apps, at least you can be assured that if your credentials are compromised due to poor app security, only that specific account will be impacted.

Credit: Lakshmi Devi.

Friday, February 20, 2015

Mobile App Wall of Shame: Tinychat for iPhone


Tinychat

Price : Free
Category : Social Networking
Updated : December 29, 2014
Version : 5.0
Size : 19.41 MB
Language : English
Vendor : Tinychat Co
Operating system : iOS

Background:

Tinychat is a group video chat application that allows users to chat online and also create their own chart rooms. Currently, this application is ranked among the top 200 apps in the Social Networking category on the iTunes app store. Tinychat claims 5 million minutes of usage per day, making it one of the largest voice and video chat communities on the Internet today.

A user must submit their email address and password in order to create an account. Alternately, a user can also use their Facebook or Twitter account to login to this application.

 Vulnerability - Clear text username/password

App Login page
The current Tinychat App (verified on Version 5.0) has a serious information leakage flaw whereby username & password information for the Tinychat user is sent in clear text (unencrypted) to the application server. This vulnerability woud make it possible for an attacker to easily sniff network traffic and compromise the user account.

Below is the sample capture of a Tinychat user login attempt. As seen in the request, the username & password information is sent in clear text.





Login:
Login Capture

Similarly, when a user attempts to register an account on Tinychat, the following HTTP request is generated. The username, password and email address information of the user passes in clear text as seen in the request below:

Account registration:
Registration Capture

An attacker can easily takeover the victim's account by sniffing the vulnerable application's network traffic. This can further lead to more sophisticated attacks and can often lead to the compromise of other applications/services due to password reuse.

ZAP Analysis:
ZAP in action.

This flaw was identified using Zscaler Application Profiler (ZAP). ZAP is a free online tool that can be used to analyze mobile applications for vulnerabilities and privacy issues as seen in the above screenshot. We have reached out to Tinychat developers, informing them of this security flaw.

Conclusion:

This type of security flaw can be uncovered by simply analyzing the network traffic sent by the application. It is disappointing to see such applications getting uploaded to Apple iTunes store without basic security tests like checking for clear text username/passwords being conducted. This is not the first time we have seen a popular iOS application with this security flaw, but Apple continues to ignore performing a basic security check as part of their vetting process for adding new applications to the app store.

Credit: Analysis by Lakshmi.

Monday, July 21, 2014

Mobile App Wall of Shame: CNN App for iPhone

Price: Free
Category: News
Updated: Jul 11, 2014
Version: Version 2.30 (Build 4948)
Size: 21.8 MB
Language: English
Vendor: CNN Interactive Group, Inc.
Operating System: iOS

Background

iReport account setting
The CNN App for iPhone is one of the most popular news applications available for the iPhone. At present, it is sitting at #2 in the iTunes free News app category and #165 among all free apps. Along with providing news stories, alerts and live video, it also includes iReport functionality, allowing users to upload photos, video and narrative to contribute to CNN news reports. The functionality includes the ability to register for an account by providing an email address, username and password. Users can optionally provide a real name and phone number. Logging into an existing iReport account or creating a new account can be accessed via More à Settings àiReport in the main menu. The user can then access the iReport Assignments section, which is accessible via This is CNNàiReport in the main Menu.



Vulnerability – Clear Text Passwords

iReport Functionality
The current CNN for iPhone App (verified on Version 2.30 (Build 4948)) has a key weakness whereby passwords for iReport accounts are sent in clear text (unencrypted). While this is always a problem, it's especially concerning that this relates to functionality which permits people to anonymously submit news stories to CNN. This occurs both when a user first creates their iReport account and during any subsequent logins. Traffic sniffed from the app using Zscaler's free ZAP tool illustrates the problem.






Initial Account Registration

[-]  Method: POST
User-Agent: CNN/4948 (iPad; iOS 7.1.2; Scale/2.00)
Request Body: nowrap=true&termsOfService=true&displayname=zscaler&password=p%40ssword&privacy=domestic_version&email=zscalertest%40zscaler%2Ecom&kaptcha=3dbgc

Subsequent Login

[-]  Method: POST
User-Agent: CNN/4948 (iPad; iOS 7.1.2; Scale/2.00)
Request Body: doSso=false&password=p%40ssword&email=zscalertest%40zscaler%2Ecom&nowrap=true
Server Response:{ , "status":"success"}

As can be seen, both transmissions are sent in clear text (HTTP) and the password (p@ssword) is sent unencrypted, along with all other registration/login information. The concern here is that anyone on the same network as the user could easily sniff the victim's password and access their account. Once obtained, the attacker could access the iReport account of the user and compromise their anonymity. The same credentials could be used to access the user's web based iReport account where any past submissions are also accessible.

ZAP Analysis:
ZAP analysis
We have tested other CNN mobile apps and found that the Android app does not have this same vulnerability as it uses both SSL encryption for registration/login and SSL certificate pinning. The iReport functionality is not present in the CNN iPad application. The vulnerability was reported to CNN on July 15th. They acknowledged receipt of the report and indicated that they are investigating.

Conclusion

Unfortunately, it isn’t difficult to identify mobile applications that send authentication credentials in clear text. As mentioned, this was easily identified in a few minutes leveraging ZAP. For end users however, such flaws aren’t as evident. In a web application, a user knows immediately when sensitive information is sent in clear text, as they don’t see the familiar lock and key symbol in their browser or HTTPS in the URL bar. Such feedback is not available in a mobile application, despite the fact that it is sending the same content. End users must rely on both the app developers and app store gatekeepers to prevent such flaws from being exposed in the first place. This vulnerability could easily have been caught by Apple during the vetting process that they subject new applications to before including them in the app store, but our research has shown us that Apple and Google simply aren’t looking for these basic security vulnerabilities.

Note:
As this issue was reported to CNN by us, CNN rolled out new updates and fix for this vulnerability. CNN app new version (2.3.1) no longer vulnerable to this issue.

Tuesday, July 15, 2014

The “Forbidden” Apple: App Stores and the Illusion of Control Part I

There is no doubt we truly live in an “App Economy.” From personal to professional, we direct and live our lives through our smart phones. But while we enjoy the latest games, stream the latest content or catch up on our friend's activities, few think about the “App Dichotomy”– The fact that we are at least as much the consumed, as we are the consumer. This is the first in a pair of blogs that break down and analyze the access we grant to our personal information, behaviours and tendencies when we download an App, and the security and privacy risks that result.

First, we will examine the privacy/security profiles of the most popular iOS apps in the Apple App Store. Apple of course presents an image of a walled and pristine garden where users are safe unless you “bite the apple” and jailbreak your device, exposing it to the evils of unapproved apps. Apple also holds an advantage over Google/Android in that it offers more granular allow/deny control over specific permissions, while still allowing a user to download and use an app.  However, it’s well understood that many users do not scrutinize the permissions requested regardless of choices. And for those who do, even with a cursory review, do they understand what they grant when they click “allow”?
Zscaler to date, has analyzed the top 550 most popular iOS apps, via static analysis techniques, specifically tracking permissions for access to functionality such as: the address book, telephony information (carrier, country code, SIM card info., etc.), user geo-location, calendar, email and unique identifiers. One difference in the approach that we’ve taken, in contrast to previously published statistics that we’ve seen, is that we looked for the express use of various functions to determine that an app actually required specific levels of access. We often see stats based on only the inclusion of a framework within an app. While including the framework provides the app with the ability to access specific functionality, it is common for developers to be aggressive with the frameworks that they include but never actually leverage the functionality.There are many interesting findings in the data, but two findings that we found especially concerning were:
  • 38% of applications still have access to the now infamous UDID identifier, that was the center of the AntiSec leak in 2012, and since which time, Apple has banned access. Access to UDIDs is a concern because developers could track user behaviour across multiple apps to track unique user. Developers and ad networks may also map UDIDs to user's sensitive information like mobile numbers,name passwords, locations and other information.
  • In excess of 60% of Game and Entertainment apps request permission to telephony functions (service provider information and current call information) and geo-location.This is of course more of a privacy concern, than security, but troubling nonetheless. This concerns are important as previously some issues came to light regarding spying on leaky apps. 

One last item before we dive deep into the analysis that we feel is compelling to point out, is that – somewhat ironically – we had to jailbreak the devices. This was necessary in order to access the applications in their running state, and then identify various functions called by the apps to understand the access permissions that they require. This increases the value and validity of these stats, and in some cases calls into question the accuracy of some of the iOS stats that we've previously seen. Most are based on simply seeing a framework being imported (potential use) vs what we did which was look for the use of individual functions (actual use).

So, on to the analysis. We have compiled stats for:
  • Address book functionality - Provides a programing interface to the Address book in order to allow an application to access the Addressbook database
  • Telephony data information - Provides details on usage of the core telephony framework’s methods, which include access to the cellular service provider information like the cellular service carrier and current call information
  • Location tracking - Allows apps to determine user’s current location or heading
  • Email Functionality - Usage of the MFMailComposeViewController class’s methods, which provide a standard interface to manage the editing and sending of email messages. With this access, an app would not be able to send mails independently, without user involvement. The app would also not be able to read a user's email.
  • Calendar data - Allows applications to read/write from/to Calendars, Events and Reminders.
  • UUID - Apps can access UUIDs (Universally Unique Identifiers), also known as GUIDs (Globally Unique Identifiers) or IIDs (Interface Identifiers), which are 128-bit values designed to be unique per device.
The following overall results were derived from static app analysis:
Below we see the percentage of applications which are trying to use social media and ad networks. 
47% of applications are found to be linked to social networks. We have observed Facebook, Twitter and Instagram as most common social networks used by apps.
75% of applications are found to be linked to advertisingnetworks. This is not a surprising finding given that all of the apps analyzed were free apps and most have a monetization strategy driven by advertising.
UDID vs. UUID:
Apple is pushing developers to stop using the unique identifier (UDID) embedded in iPhones and iPads and started rejecting apps that gather UDIDs after May 2013. App developers were warned not to use the “uniqIdentifier”, although it seems that some developers have neglected these warnings. Developers rely on the UDID value to track user activity for targeted advertising and troubleshooting. Since Apple is prohibiting the option to use the unique identifiers, companies are looking for new ways to keep tabs on users while avoiding personal privacy concerns. As an alternative to UDIDs, Apple has instead introduced the UUID (Universally Unique Identifier) created by CFUUIDCreate method, which we will explain below. Since these changes were implemented, developers are now trying to track the user in the following ways:
  • The UDID is tied to the device hardware and no longer permitted by Apple. Apple started rejecting apps which requested the UDID string, although a few legacy apps still exist which use this method.
  • The UUID, Apple’s preferred approach is a unique value per app and device. This limits privacy concerns as the user cannot be tracked across apps on a given device. One additional limitation of the UUID is that it is created when the app is first installed and, if the user re-installs the app, a new UUID will be created. In order to get around this limitation, developers are storing the UUID in the user’s keychain to make it persistent across app installs.
  • A final option involves querying the MAC address of device. Apple is also now prohibiting the use of MAC addresses tracking. Apple will now reject apps where developers query the MAC address. Additionally, starting with iOS 7, Apple now always returns a fixed value when querying the MAC address to specifically prevent the MAC as base for unique identifier.
Here are some UDID vs. UUID statistics we derived from our scanned applications.
We have found 38% of legacy applications are still using the UDID “uniqIdentifier” string which is no longer permitted by Apple. Apple is pushing very hard to ensure that only UUID values are now used in place of UDID and MAC addresses.In support of that, we can see that 92% of apps are now using UUID values to track users.
Statistics breakdown by App Categories
The following details the results of five permission categories from the iTunes store for the top 25+ applications in their respective categories.
Category: Games
In the Games category, we have found that 28% of apps are accessing Address book functionality, 68% of apps are using telephony information, 76% of apps are trying to use the user’s location, 64% apps are using the Email framework and 60% of apps are asking for calendar access. Also, 84% of games are leveraging UUID’s for tracking user activity for targeted advertising.
                                                Category: Entertainment
In the Entertainment category, we have observed 20% of apps trying to access address book functionality, 75% of apps are asking for telephony data, 86% of apps are using location APIs to track a user’s location, 88% of apps are using the Email framework and 70% of apps are using calendar data. Additionally, 97% of apps are using UUID’s for tracking.
                                      Category: Social Networking
In the Social Networking category, 92% of apps use address book functionality, 72% of apps are asking for telephony information, 96% of apps are using location APIs and the Email framework, while 54% of apps are accessing calendar functionality and 96% of apps track via UUIDs.
                                      Category: Lifestyle
In the Lifestyle category, 59% of apps were found to be accessing the address book, 81% of apps are using telephony data, 85% of apps are using the location and Email framework, 51% apps are accessing calendar functionality and all apps scanned were found to be accessing UUIDs.
                                      Category: Travel
In the Travel category, we observed 54% of apps with access to the address book, 58% of apps have telephony data access, 92% of apps have access to location information, 77% of apps are using email and 61% of apps are using the calendar framework. Additionally, 92% of apps are leveraging UUIDs.

Conclusion:
With 97% apps using at least one of the functionalities being tracked (address book, telephony, location, email calendar or UUID), as stated, we are being consumed as much, if not more, than we consume.  In and of itself, this is not a danger.  However as threats – and even business practices – evolve, the risk profile of access changes with it. In the case of our findings, while Apple has stated otherwise, it is clear that some developers significantly overreach in permissions requested. And while some “risks” still live inside gates – for example access to Social Media still requires express user permission for an app to post, etc., -- as also stated earlier, many users are click happy and indiscriminate with that permission.  I’ll leave you with a specific access and risk analysis for one app, Draw Something Free.

Recommendations:
To avoid security and privacy problems, more knowledge about mobile app risk is necessary. As organizations are moving forward with BYOD, infrastructure knowledge of app behaviors helps to avoid security and corporate privacy risks – from location tracking of executives to leaking corporate data.

Users and IT always must remain vigilant and aware regarding installed app behaviors. Consider the necessity of any functionality requested by an app before you allow it. For example, why does any game app need to access  your address book? Should an app for kids really be asking for geolocation? Awareness among users about how much access is granted to particular apps is the only way to build the stronger defense against future mobile threats.

Example:
Application: Draw something free
Methods identified in the decompiled source code for respective areas of functionality:
  • Address book access:
  • ABAddressBookCreate
  • ABAddressBookGetAuthorizationStatus
  • ABAddressBookRequestAccessWithCompletion
  • ABAddressBookSave
  • ABAddressBookAddRecord
  • ABAddressBookRemoveRecord
  • ABRecordGetRecordID
  • ABRecordGetRecordType
  • ABRecordSetValue
  • ABRecordCopyValue
  • ABRecordRemoveValue
  • ABRecordCopyCompositeName
  • ABPersonCreate
  • ABPersonGetTypeOfProperty
  • ABAddressBookGetPersonWithRecordID
  • ABAddressBookCopyArrayOfAllPeople

Telephony Information:
  • carrierName
  • carrierName
  • mobileCountryCode
  • mobileNetworkCode

Location Access:
  • locationManager:didUpdateLocations:
  • locationManager:didUpdateLocations:
  • locationManager:didFailWithError:
  • locationManager:didFinishDeferredUpdatesWithError:
  • locationManager:didUpdateToLocation:fromLocation:
  • locationManagerDidPauseLocationUpdates:
  • locationManagerDidResumeLocationUpdates:
  • locationManager:didUpdateHeading:
  • locationManagerShouldDisplayHeadingCalibration:
  • locationManager:didEnterRegion:
  • locationManager:didExitRegion:
  • locationManager:monitoringDidFailForRegion:withError:
  • locationManager:didStartMonitoringForRegion:
  • locationManager:didChangeAuthorizationStatus:
  • initWithLatitude
  • horizontalAccuracy
  • verticalAccuracy

Email access:
  • SetSubject
  • setToRecipients
  • setCcRecipients
  • setBccRecipients

Calender access:
  • defaultCalendarForNewEvents
  • removeEvent
  • saveEvent

Unique Identifier (UUID) access:
  • uniqueIdentifier
  • CFUUIDCreateString
  • CFUUIDCreate

Ad network related URLs found in source code:
  • http://www.flurry.com/resources/privacy/reengagement.html
  • http://www.googleanalytics.com/__utm.gif
  • utmwv=4.4mi&utmn=%d&utmt=event&utme=5
  • http://www.google.com/OAuthCallback
  • http://www.googleadservices.com/pagead/aclk
  • https://data.flurry.com/aas.do
  • https://et.w.inmobi.com/user/e.asm

Social Network related URLs found in the source code:
  • http://twitter.com/WeDrawSomething
  • http://www.facebook.com/playdrawsomething
  • https://api.twitter.com
  • https://api.twitter.com/1/statuses/update.json
  • https://api.twitter.com/oauth/access_token
  • https://api.twitter.com/oauth/authorize
  • https://api.twitter.com/oauth/request_token
References:
https://developer.apple.com/library/ios/navigation/
https://developer.apple.com/news/?id=3212013a
http://techcrunch.com/2013/06/14/ios-7-eliminates-mac-address-as-tracking-option-signaling-final-push-towards-apples-own-ad-identifier-technology/