Facebook Messenger 102.0 (iOS / App Store) on Jan 26, 2017 (upd. on Feb 3th – ver 103.0)

175x175bb-2
This application is available for iOS. This app is designed to instantly reach the people by texting them. The latest build was released on Jan 24th, 2017 (updated released on February 1st, 2017).

This release transfers data items are protected by SSL Pinning that means a weakness if you have a jailbroken device only. However, the application has an issue with protecting media data items related to friend profile’s pictures (avatars). Since the first time the app runs, until all media data items will be download eventually, all media data items transferred in plaintext (without protection/encryption)

Findings Summary

Our examination revealed total 28 items, where were 11 DAR items and 17 DIT items found. Among DAR items were found 0 worst items, 9 bad items, 2 good items, and 0 best items. Among DIT items were found 0 worst items, 0 bad items, 16 good items, and 0 best items.

Below you find 2 infographics summarizing what we described above. Each image provides information about both DAR and DIT items.

 

 

 

This slideshow requires JavaScript.

Everything presented below is related to well-known CWEs, such as Sensitive data leakage [CWE-200], Unsafe sensitive data storage [CWE-312], Unsafe sensitive data transmission [CWE-319]. You can read more about it here.

Now let’s go deeper and examine each data item’s protection level.

Application Description

Let’s cite the description of this application below:

Instantly reach the people in your life—for free. Messenger is just like texting, but you don’t have to pay for every message (it works with your data plan).

Not just for Facebook friends: Message people in your phone book and just enter a phone number to add a new contact.

Group chats: Create groups for the people you message most. Name them, set group photos and keep them all in one place.

Photos and videos: Shoot videos and snap selfies or other photos right from the app and send them with one tap.

Free calls: Talk as long as you want, even with people in other countries. (Calls are free over Wi-Fi. Otherwise, standard data charges apply.)

Even more ways to message:

  • Bring your conversations to life with stickers.
  • Preview your camera roll photos and videos without leaving the conversation–then choose the perfect ones to send.
  • Record voice messages when you have more to say.

Extra features:

  • Know when people have seen your messages.
  • Forward messages or photos to people who weren’t in the conversation.
  • Search for people and groups to quickly get back to them.
  • Turn on location to let people know when you’re nearby.
  • See who’s available on Messenger and who’s active on Facebook.
  • Turn off notifications when you’re working, sleeping or just need a break.
  • Stay logged in so you never miss a message.

Continued use of GPS running in the background can dramatically decrease battery life. Messenger uses location data to make features work, help people connect and more.

Protection levels.

Locally stored data (Data-at-Rest, DAR).

Locally stored data groups include Media Information, Credentials Information, Account Information, Location ‘n’ Maps Information, Device Information, Application Information, Address Book ‘n’ Contact Information.
The average DAR value is 4.05 points (7.00 points of system protection and 1.09 points of own protection). It is higher than a typical value (3.5 points, where’s 7 points of system protection and 0 points of own protection).

Items’ GROUP #1 with average value 6.50 points (7 points of system protection, 6 points of own protection) means data protection levels have following definitions. Frankly talking, protection and privacy issues are still possible but might involve interaction with an app code where system protection level means – root/jailbreak is required but not possible without wiping device data, and own protection level means – data is not available in backups.

– Screen Snapshots (‘Media Information’ Group) – Screenshots of your device screen running certain apps; common as an iOS app multitasking feature (app swipes) or browser tab swipes. This data item related to mentioned group meant to be any data like photo, image, video, audio,

– Media Data (‘Address Book ‘n’ Contact Information’ Group) – Any info like images, audios, videos, media notes, etc. This data item related to mentioned group meant to be info locally stored, cached or transferred over the network and belong to this application if it’s social even

Items’ GROUP #2 with average value 3.50 points (7 points of system protection, 0 points of own protection) means data protection levels have following definitions. Frankly talking, extra data found that shouldn’t be accessed where system protection level means – root/jailbreak is required but not possible without wiping device data, and own protection level means – stored as is.

– Credentials (IDs) (‘Credentials Information’ Group) – Only account IDs like app or 3rd party user IDs including emails, phone number, usernames, etc. (depends on apps). This data item related to mentioned group meant to be any types of credentials including basic (IDs only), passwords, tokens, etc.,

– Account Data (‘Account Information’ Group) – Basic info about account like name, a list of sub-account (e.g. financial or other) and some linked data like a phone number. This data item related to mentioned group meant to be any info related to profiles, basic credential IDs like email or username or phone number plus some more info depends on applications,

– Media URLs (‘Account Information’ Group) – URLs related to media info such as stream media or profile’s media, etc. This data item related to mentioned group meant to be any info related to profiles, basic credential IDs like email or username or phone number plus some more info depends on applications,

– GEO Data (‘Location ‘n’ Maps Information’ Group) – Any GEO info stored as plain text referred to the places or tracked activity. This data item related to mentioned group meant to be any geodata from trackers, social networks, GPS, etc.,

– Address Data (‘Location ‘n’ Maps Information’ Group) – Home, work or another type of owner address stored by apps. This data item related to mentioned group meant to be any geodata from trackers, social networks, GPS, etc.,

– Place Details (‘Location ‘n’ Maps Information’ Group) – Any info about public place (city, country, address, contacts) stored in text or media file format. This data item related to mentioned group meant to be any geodata from trackers, social networks, GPS, etc.,

– Media URLs (‘Location ‘n’ Maps Information’ Group) – URLs related to media info such as stream media or profile’s media, etc. This data item related to mentioned group meant to be any geodata from trackers, social networks, GPS, etc.,

– Device Data (‘Device Information’ Group) – Device ID, Device Name, Device OS Name and Version, and jailbroken/root status. This data item related to mentioned group meant to be details about your device,

– Application Configs (‘Application Information’ Group) – Different configuration files created by your app, perhaps app permissions. This data item related to mentioned group meant to be any info related to the app, app settings, including installed apps or installers

Also, keep in mind, using jailbroken device means the system protection level is 0 points and you’re using out-of-date iOS < 8.3 the system protection level is 2 points. If some data marked as shareable via iTunes, then the system protection level is 4 points.

Transferred data (Data-in-Transit, DIT).

Transferred data groups include Address Book ‘n’ Contact Information, Call Information, Account Information, Application Information, Message Information, Credentials Information.
The average DIT value is 4.79 points (3.76 points of system protection and 5.82 points of own protection). It is higher than a typical value (4 points, where’s 4 points of system protection and 4 points of own protection).

Items with average value 5.00 points (4 points of system protection, 6 points of own protection) means data protection levels have following definitions. Frankly talking, data is not available all the time or partially accessed where system protection level means – informs if fake certificate imported into a device, and own protection level means – SSL pinning (can be patched).

– Media Data (‘Address Book ‘n’ Contact Information’ Group) – Any info like images, audios, videos, media notes, etc. This data item related to mentioned group meant to be info locally stored, cached or transferred over the network and belong to this application if it’s social even,

– Contact Short Profile (‘Call Information’ Group) – Name, Email ID, Phone number of contacts. This data item related to mentioned group meant to be any call info stored, cached or transferred in plain text or media files,

– Account Data (‘Account Information’ Group) – Basic info about account like name, a list of sub-account (e.g. financial or other) and some linked data like a phone number. This data item related to mentioned group meant to be any info related to profiles, basic credential IDs like email or username or phone number plus some more info depends on applications,

– Media Data (‘Account Information’ Group) – Any info like images, audios, videos, media notes, etc. This data item related to mentioned group meant to be any info related to profiles, basic credential IDs like email or username or phone number plus some more info depends on applications,

– Application Configs (‘Application Information’ Group) – Different configuration files created by your app, perhaps app permissions. This data item related to mentioned group meant to be any info related to the app, app settings, including installed apps or installers,

– Messages (‘Message Information’ Group) – Different types of messages, conversations, except for SMS, MMS but including recipient and sender IDs and attachments. This data item related to mentioned group meant to be all message, including SMS, MMS, social and IM messages with or without attachments,

– URL Preview (‘Message Information’ Group) – A preview of URL (usually not related to the Stream but typically related to the messages. This data item related to mentioned group meant to be all message, including SMS, MMS, social and IM messages with or without attachments,

– Call History (‘Message Information’ Group) – Some info about calls you made like phone number, name, date and time, and type of call (missed, placed, outgoing, etc.). This data item related to mentioned group meant to be all message, including SMS, MMS, social and IM messages with or without attachments,

– Media Data (‘Message Information’ Group) – Any info like images, audios, videos, media notes, etc. This data item related to mentioned group meant to be all message, including SMS, MMS, social and IM messages with or without attachments,

– GEO Data (‘Message Information’ Group) – Any GEO info stored as plain text referred to the places or tracked activity. This data item related to mentioned group meant to be all message, including SMS, MMS, social and IM messages with or without attachments,

– GEO Snapshots (‘Message Information’ Group) – Image-based snapshots of geodata info referred to the places. This data item related to mentioned group meant to be all message, including SMS, MMS, social and IM messages with or without attachments,

– Call History (‘Call Information’ Group) – Some info about calls you made like phone number, name, date and time, and type of call (missed, placed, outgoing, etc.). This data item related to mentioned group meant to be any call info stored, cached or transferred in plain text or media files,

– Credentials (IDs) (‘Credentials Information’ Group) – Only account IDs like app or 3rd party user IDs including emails, phone number, usernames, etc. (depends on apps). This data item related to mentioned group meant to be any types of credentials including basic (IDs only), passwords, tokens, etc.,

– Credentials (Passwords) (‘Credentials Information’ Group) – Well-known passwords or PINs you’re using to get access to your account (usually it is worse than tokens because it gives full access to your account). This data item related to mentioned group meant to be any types of credentials including basic (IDs only), passwords, tokens, etc.,

– Credentials (Activation IDs) (‘Credentials Information’ Group) – Two-factor activation code received in messages. This data item related to mentioned group meant to be any types of credentials including basic (IDs only), passwords, tokens, etc.,

– Call Stream (‘Call Information’ Group) – Audio or Video call streaming between two or more users. This data item related to mentioned group meant to be any call info stored, cached or transferred in plain text or media files

Keep in mind if you’re using out-of-date iOS < 9.0, the system level equals 2 points instead of 4. It means your data can be stolen without involving your actions.

Privacy Policy

Full application privacy policy is available here.

You may find privacy policy details proceeding the link above to compare developer’s vision on data protection with our results.

More than 1 billion users in total use this application.

[Dev Statement #1]>>

According to the full data use policy

Date of Last Revision: September 29, 2016. As you review our policy, keep in mind that it applies to all Facebook brands, products and services that do not have a separate privacy policy or that link to this policy, which we call the “Facebook Services” or “Services.”

[PrivacyMeter comment #1]>>

The last update of Privacy Policy written by eFax Team is bound to the September 26th, 2016 and cover all services including mobile applications

[Dev Statement #2]>>

I. What kinds of information do we collect?

Depending on which Services you use, we collect different kinds of information from or about you.
  • Things you do and information you provide. We collect the content and other information you provide when you use our Services, including when you sign up for an account, create or share, and message or communicate with others. This can include information in or about the content you provide, such as the location of a photo or the date a file was created. We also collect information about how you use our Services, such as the types of content you view or engage with or the frequency and duration of your activities.
  • Things others do and information they provide. We also collect content and information that other people provide when they use our Services, including information about you, such as when they share a photo of you, send a message to you, or upload, sync or import your contact information.
  • Your networks and connections. We collect information about the people and groups you are connected to and how you interact with them, such as the people you communicate with the most or the groups you like to share with. We also collect contact information you provide if you upload, sync or import this information (such as an address book) from a device.
  • Information about payments. If you use our Services for purchases or financial transactions (like when you buy something on Facebook, make a purchase in a game, or make a donation), we collect information about the purchase or transaction. This includes your payment information, such as your credit or debit card number and other card information, and other account and authentication information, as well as billing, shipping and contact details.
  • Device information. We collect information from or about the computers, phones, or other devices where you install or access our Services, depending on the permissions you’ve granted. We may associate the information we collect from your different devices, which helps us provide consistent Services across your devices. Here are some examples of the information we collect:

    • Attributes such as the operating system, hardware version, device settings, file and software names and types, battery and signal strength, and device identifiers.
    • Device locations, including specific geographic locations, such as through GPS, Bluetooth, or WiFi signals.
    • Connection information such as the name of your mobile operator or ISP, browser type, language and time zone, mobile phone number and IP address.
  • Information from websites and apps that use our Services. We collect information when you visit or use third-party websites and apps that use our Services (like when they offer our Like button or Facebook Log In or use our measurement and advertising services). This includes information about the websites and apps you visit, your use of our Services on those websites and apps, as well as information the developer or publisher of the app or website provides to you or us.
  • Information from third-party partners. We receive information about you and your activities on and off Facebook from third-party partners, such as information from a partner when we jointly offer services or from an advertiser about your experiences or interactions with them.
  • Facebook companies. We receive information about you from companies that are owned or operated by Facebook, in accordance with their terms and policies. Learn more about these companies and their privacy policies.

[PrivacyMeter comment #2]>>

The Facebook Team collects the following types of information, doesn’t describe how it is protected but each of them protected in two different ways. In the description below the ‘Group’ term means a place in the application where it was found, so there is a possibility that the same data item might be duplicated and found in one or more places at the same times with a different protected level too even.

For DIT (network) items that are part of activity related to the whole application are assigned to the Good Protected Level

The data items include 

  • Account Data, Media Data related to the ‘Account Information’ Group
  • Media Data related to the ‘Address Book ‘n’ Contact Information’ Group
  • Application Configs related to the ‘Application Information’ Group
  • Call History, Call Stream, Contact Short Profile related to the ‘Call Information’ Group
  • Credentials (IDs), Credentials (Passwords), Credentials (Activation IDs) related to the ‘Credentials Information’ Group
  • Messages, URL Preview, Call History, Media Data, GEO Data, GEO Snapshots related to the ‘Message Information’ Group

Good Protected Level means all data items protected by SSL encryption mechanisms are pinned to the Facebook certificate and no other certificate accepts as valid one unless your device is jailbroken

However, during many tests, there was found one type of data that duplicate another one. This data type is Media Data related to the ‘Address Book ‘n’ Contact Information’ Group. The duplicate item is assigned to Obesity Protection Level and describes the cached activity. It happens once (usually the first start of the app) and ends when all profile pictures related to the Facebook Contacts will be downloaded. Normally, these pictures (media data) transferred securely and not available to intercept (MITM) if the device is not jailbroken.

Also, the application can validate an SSL connection and detected crafted certificate, however, that security feature is limited to perform checks by comparing SSL certificate with a list of installed certificates on the device including certificates added by the user and marked as trusted. In this case, MITM is possible to intercept data items in traffic. All data items found in research are affected to MITM with installing crafted certificate. The crafted certificate can be either installed by the user or be already on the device and expired. The first case divides into parts when user knowingly installs the certificate or someone makes him install it by misleading into change to access to the network. ‘Making someone to install’ is divide to the simple case to get access to the public network or serious one like in Kazakhstan (Kazakhstan is going to start intercepting HTTPS traffic via “man-in-the-middle attack” starting Jan 1, 2016, Government root SSL certificate possible vulnerabilities, Bug 1232689 – Add Root Certification Authority of the Republic of Kazakhstan (root.gov.kz), Mozilla – CA Program (Included Government of Kazakhstan roots)). The second case divides into parts when the certificate is preinstalled and expired or was revoked but not removed, or when the user got the firmware with a specially crafted certificate.
If you have up-to-date iOS, it means you still do not have additional protection from the MITM attacks aimed to intercept the network traffic if you have trusted certificated installed by yourself. If you have outdated iOS below iOS 9th version, you might have issues that decrease your system level of protection due to known problems with security mechanisms and leads to the MITM attacks without installing a crafted certificate as trusted.

For DAR (local) items that are represented as data items stored in backup too and out of backup only and not accessible without jailbreak/outdated iOS.
The ‘in-backup’ items include

  • Account Data, Media URLs related to the ‘Account Information’ Group
  • Application Configs related to the ‘Application Information’ Group
  • Credentials (IDs) related to the ‘Credentials Information’ Group
  • Device Data related to the ‘Device Information’ Group
  • GEO Data, Address Data, Place Details, Media URLs related to the ‘Location ‘n’ Maps Information’ Group

The ‘Out of backup only’ items include

  • Media Data related to the ‘Address Book ‘n’ Contact Information’ Group
  • Screen Snapshots related to ‘Media Information’ Group

The locally stored data requires either jailbreak or a backup, however, usually, not all data items are included in a backup file. If you use outdated iOS below iOS 8.3th version, you might have issues that decrease your system level of protection due to known problems with security mechanisms and leads to stealing the data items of the application stored in an application folder (except keychains) without jailbreaking the device but having the device connected to PC/Mac.

[Statement #1 and comment #1]

[Solutions for Developers #1]>>
In general, the dev team should revise the policy and include information how the application data is protected, because this part is obviously missed.

[Solutions for users #1]>>
Nothing required

[Statement #2 and comment #2]

[Solutions for Developers #2]>>
The dev team should implement SSL Pinning in a way to trust only Instagram SSL certificate. The certificate is easiest to pin. It is possible to fetch the certificate out of the band for the website, use openssl s_client to retrieve the certificate, etc. At runtime, the application retrieves the website or server’s certificate in the callback. Within the callback, the application compares the retrieved certificate with the certificate embedded within the program. If the comparison fails, then fail the method or function.

The locally stored data should be protected and encrypted. Adding information what data is included in a backup help users make a security decision clearly.

[Solutions for users #2]>>

You may safely use this application including main activities if your device is not jailbroken, but avoid installing suspicious SSL certificates into your device if you are not sure where it comes from, avoid using this application in the non-trusted network and check your device for installed user CA SSL certificates that marked as trusted. Also, you may use VPN solutions to prevent MITM.

Keep in mind, that a backup is an additional insecurity flow even if you do not have a jailbroken device. Avoid to create a non-encrypted (non-protected by password) backup files, use jailbroken device and outdated iOS below 8.3 version.