- Find a cross-site scripting vulnerability in a widely used Facebook application. At least three of the top 10 applications currently have one.
- Craft a short link that redirects to a specially infected XSS link. You can use a clickjacking attack to help ensure that users who don’t have the application installed still get infected.
- You’ll probably want to include code that harvests profile information (such as date of birth, interests, and educational history) from infected users and their friends, since that simply requires an FQL query. You could also download photos if you so desire. In order to appear inconspicuous, use the same FQL queries that advertising networks use for targeting.
- Finish up your code with a few API requests that post a one-line story to a user’s wall or send notifications to their friends, since both of these are also generally possible with injected code. Include your short link in these posts. Finally, redirect the user to an innocent page so they don’t suspect anything.
- Note that after a little while, someone may catch on and patch the hole in the application you’re exploiting. But since multiple applications typically have holes (see step 1), you can easily switch your code to a new one. Since you’re using mainstream applications, they’re not likely to be banned as quickly as suspicious-looking rogue applications, so that should buy you some time.
Fully functional demonstration code available to security researchers and media outlets upon request.
Note that this is not simply a problem with Facebook applications. This is a problem with the Facebook Platform. These instructions will remain valid until Facebook takes action on publicly noted issues with their current setup.
Share with your friends!