Facebook Moments (Android / Google Play) on Feb 2, 2017 (upd. on Feb 4th, 2017)

This application is available for Android. This app is designed to provide an easy way to get all the photos of yourself trapped on your friends’ phones. The latest build was released on February 2, 2017

This release protects all data items transferred over the Internet with SSL certificate validation. All data items are vulnerable for intercepting (MITM attacks) with crafted certificate and installed on the device as trusted. All Android operation systems below 7th version are affected. If you have an updated Android OS 7.0 and higher because Android 7 limits a power of user certificates.

Findings Summary

Our examination revealed total 19 items, where were 8 DAR items and 11 DIT items found. Among DAR items were found 0 worst items, 8 bad items, 0 good items, and 0 best items. Among DIT items were found 0 worst items, 0 bad items, 11 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:

Moments helps you create shared photo albums with your friends and family. With Moments you can quickly send photos to your friends and get photos back.

  • FREE UNLIMITED STORAGE
    Keep all your photos and videos organized in one private place.
  • FULL RESOLUTION SUPPORT
    A Favorites feature which stores photos in full resolution.
  • EASILY SEND TO YOUR FRIENDS AND FAMILY
    Moments is connected to your Facebook friends and events.
    Send multiple at once—no need to text or email individual photos.
  • INTELLIGENT ORGANIZATION
    Automatically organizes photos of yourself, your friends, trips, events, and more, so you can easily search for them later.
  • CREATE FUN AND BEAUTIFUL VIDEOS
    View slideshows of your photos and share them to Facebook.

Protection levels.

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

Locally stored data groups include Device Information, Account Information, Credentials Information, Address Book ‘n’ Contact Information, Log Information.
The average DAR value is 3.50 points (7.00 points of system protection and 0.00 points of own protection). It equals to a typical value (3.5 points, where’s 7 points of system protection and 0 points of own protection).

Items 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.

– 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,

– 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,

– 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.,

– Contact Short Profile (‘Address Book ‘n’ Contact Information’ Group) – Name, Email ID, Phone number of contacts. 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,

– Media URLs (‘Address Book ‘n’ Contact 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 info locally stored, cached or transferred over the network and belong to this application if it’s social even,

– 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,

– Log Data (‘Log Information’ Group) – Logged any data as a solid file or multipart files. This data item related to mentioned group meant to be any information stored in local or network logs,

– 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

Keep in mind if you’re using some Android devices such Samsung, LG or another device with an unlocked or non-locked loader that allow to root your device without user action, the system level equals 6 points instead of 7. It means your data can be stolen without involving your actions.

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

Transferred data groups include Credentials Information, Account Information, Media Information, Address Book ‘n’ Contact Information.
The average DIT value is 4.82 5.00 points (6.00 points of system protection and 4.00 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 (6 points of system protection, 4 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 – MITM prevented or fake certificate importing prevented, but plaintext non-protected traffic is intercepted, and own protection level means – bypassed by fake/stolen root certificates.

– 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 (Tokens) (‘Credentials Information’ Group) – Different tokens used to get access to your account, except for passwords but including app or 3rd party tokens, secret keys, etc. (usually give 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.,

– 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 (‘Media Information’ Group) – Any info like images, audios, videos, media notes, etc. This data item related to mentioned group meant to be any data like photo, image, video, audio,

– Media Stream (‘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,

– Contact Short Profile (‘Address Book ‘n’ Contact Information’ Group) – Name, Email ID, Phone number of contacts. 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,

– Media Stream (‘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,

– Media URLs (‘Address Book ‘n’ Contact 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 info locally stored, cached or transferred over the network and belong to this application if it’s social even

– Meta (‘Media Information’ Group) – Any info that gives extra data like EXIF. This data item related to mentioned group meant to be any data like photo, image, video, audio,

– Tracked Data ‘n’ Favorites (‘Media Information’ Group) – Any favorites data or tracked data marked as desirable by users and for users (Means, user is on FB messenger, Viber, bank client or favourite hotel, room type, flight route, airline). This data item related to mentioned group meant to be any data like photo, image, video, audio

Keep in mind if you’re using out-of-date Android < 7.0, the system level equals 4 points instead of 6. It means your data can be stolen with a crafted preinstalled certificate on the device or if someone makes you install a certificate. Also, if you’re using out-of-date Android < 5.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 50 million 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 theMedium Protected Level

This group of data items include 

  • Credentials (IDs), Credentials (Passwords), Credentials (Tokens) related to the ‘Credentials Information’ Group
  • Account Data, Media Stream related to the ‘Account Information’ Group
  • Device Data related to the ‘Device Information’ Group
  • Media Data, Tracked Data ‘n’ Favorites, Meta related to the ‘Media Information’ Group
  • Contact Short Profile, Media Stream, Media URLs related to the ‘Address Book ‘n’ Contact Information’ Group

Medium Protected Level means the application has SSL mechanisms implemented but data items can be intercepted with crafted and installed a certificate as trusted.

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 installed 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 Android, it means you have additional protection from the MITM attacks that prevent intercepting the network traffic if you have trusted certificated installed by yourself. If you have outdated Android below OS 7 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 with installed a crafted certificate as trusted on Android 5 and 6, and without installing a crafted certificate as trusted if it is outdated Android 4th version.

For DAR (local) items that are represented as data items stored on the device not accessible without root and include

  • Account Data, Media URLs related to the ‘Account Information’ Group
  • Contact Short Profile, Media Data, Media URLs related to the ‘Address Book ‘n’ Contact Information’ Group
  • Credentials (IDs) related to the ‘Credentials Information’ Group
  • Device Data related to the ‘Device Information’ Group
  • Log Data related to the ‘Log Information’ Group

The locally stored data requires a root to have an access to it and there are no known issues that might decrease the system level due to vulnerabilities for Android 4th – 7th.

[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 a rooted device