Facebook users' personal information could have been accidentally leaked to advertisers over the past few years, according to Symantec.
Third parties, in particular advertisers, have accidentally had access to Facebook users' accounts including profiles, photographs, chat, and also had the ability to post messages and mine personal information, Symantec said in its blog.
"Fortunately, these third-parties may not have realized their ability to access this information," the security firm added. Symantec has reported this issue to Facebook, who has taken corrective action to help eliminate this issue.
Facebook applications are Web applications that are integrated onto the Facebook platform. According to Facebook, 20 million Facebook applications are installed every day.
Symantec has discovered that in certain cases, Facebook IFRAME applications inadvertently leaked access tokens to third parties like advertisers or analytic platforms. The company estimates that as of April 2011, close to 100,000 applications were enabling this leakage.
"We estimate that over the years, hundreds of thousands of applications may have inadvertently leaked millions of access tokens to third parties," Symantec said.
Access tokens are like 'spare keys' granted by users to the Facebook application. Applications can use these tokens or keys to perform certain actions on behalf of the user or to access the user?s profile. Each token or 'spare key' is associated with a select set of permissions, like reading a users' wall, accessing his or her friend?s profile, posting to a wall, etc.
"During the application installation process, the application requests the user to grant permissions to these actions. Upon granting these permissions, the application gets an access token. Using this access token, the application can now access the user's information or perform actions on behalf of the user," Symantec explained.
By default, most access tokens expire after a short time, however the application can request offline access tokens which allow them to use these tokens until users change their passwords, even when they aren't logged in.
By default, Facebook now uses OAUTH2.0 for authentication. However, older authentication schemes are still supported and used by hundreds of thousands of applications. When a user visits apps.Facebook.com/appname, Facebook first sends the application a limited amount of non-identifiable information about the user, such as their country, locale and age bracket. Using this information, the application can personalize the page.
The application then needs to redirect the user to a permission dialog page. The application uses a client-side redirect for redirecting the user to the familiar application permission dialog box. This indirect leak could happen if the application uses a legacy Facebook API and has the following deprecated parameters, "return_session=1" and "session_version=3", as part of their redirect code. If these parameters are used, Facebook subsequently returns the access token by sending an HTTP request containing the access tokens in the URL to the application host.
The Facebook application is now in a position to inadvertently leak the access tokens to third parties potentially on purpose and unfortunately very commonly by accident. In particular, this URL, including the access token, is passed to third-party advertisers as part of the referrer field of the HTTP requests.
"Needless to say, the repercussions of this access token leakage are seen far and wide. Facebook was notified of this issue and has confirmed this leakage. Facebook notified us of changes on their end to prevent these tokens from getting leaked," Symantec said.
Symantec suggests concerned Facebook users to change their Facebook passwords to invalidate leaked access tokens.
Facebook has recently announced an update to their Developer RoadMap. The details of this update can be found here: https://developers.facebook.com/blog/post/497
Facebook has more than 500 million users and is challenging Google and Yahoo for users' time online and for advertising dollars.