Flickr's API Signature Forgery Vulnerability

Flickr's API Signature Forgery Vulnerability


Thai Duong and Juliano Rizzo


Date Published: Sep. 28, 2009

Advisory ID: MOCB-01

Advisory URL: http://netifera.com/research/flickr_api_signature_forgery.pdf

Title: Flickr's API Signature Forgery Vulnerability

Remotely Exploitable: Yes


1. Vulnerability Description


Flickr is almost certainly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best online photo management and sharing application in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world. As of June 2009, it claims to host more than 3.6 billion images. In order to allow independent programmers to expand its services, Flickr offers a fairly comprehensive web-service API that allows programmers to create applications that can perform almost any function a user on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Flickr site can do.

The Flickr's API consists of a set of callable methods, and some API endpoints. To perform an action using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Flickr's API, you need to select a calling convention, send a request to its endpoint specifying a method and some arguments, and will receive a formatted response.

Many methods require cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to be logged in. At present cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is only one way to accomplish this. Users should be aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticated using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Flickr Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication API. Any applications wishing to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Flickr Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication API must have already obtained a Flickr's API Key. An 8-byte long 'shared secret' for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 API Key is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n issued by Flickr and cannot be changed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 users. This secret is used in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signing process, which is required for all API calls using an aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication token. In addition, calls to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 flickr.auth.* methods and login URLs pointing to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 auth page on Flickr must also be signed. For more details, please read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Flickr Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication API Spec [1].

This advisory describes a vulnerability in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signing process that allows an attacker to generate valid signatures without knowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 shared secret. By exploiting this vulnerability, an attacker can send valid arbitrary requests on behalf of any application using Flickr's API. When combined with ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r vulnerabilities and attacks, an attacker can gain access to accounts of users who have authorized any third party application. Additionally, if an application uses PHPFlickr >= 1.3.1, an attacker can trick users of that application to visit arbitrary web sites. This may apply for ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Flickr's API libraries and applications as well.



2. Vulnerable Web Services


A lot of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r web sites provide API service whose architecture is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same as Flickr's API. They are potentially vulnerable. We don't have a complete list, but here are some notable web sites:

* DivShare http://www.divshare.com/

* iContact http://www.icontact.com/

* Mindmeister http://www.mindmeister.com/

* Myxer http://www.myxer.com/

* Remember The Milk http://www.remembercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365milk.com/

* Scribd http://www.scribd.com/

* Vimeo http://www.vimeo.com/

* Voxel http://www.voxel.net/

* Wizehive http://www.wizehive.com/

* Zooomr http://www.zooomr.com/

Please note that we haven't tested cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se web sites. They are included here because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y describe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same signing process in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir API documentation.


3. Vendor Information


An initial notification was sent to Yahoo! Flickr on Sep. 5, 2009. A copy of this advisory was sent to Yahoo! Flickr on Sep. 13, 2009. Yahoo! Flickr replied on Sep. 14, 2009 to acknowledge cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerability. Yahoo! Flickr sent us an email on Sep. 23, 2009 to say that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were going to deploy a fix in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same week.

An initial notification was sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendors listed in Section 2 on Sep. 17, 2009. Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r copy of this advisory was sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m on Sep. 24, 2009. Here are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 responses from some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m:

* Remember The Milk said that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y have investigated and confirmed that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Remember The Milk API is not vulnerable to this particular known issue.

* Vimeo tried to fix cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issue by making sure that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first parameter after sorting is always api_key and failing if it isn't. This fix doesn't work because we can make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first parameter be api_key and still append new data to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request.

No ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r vendor provided details about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir plans to deploy fixes.


4. Credits


This vulnerability was found and researched by Thai Duong from VNSecurity/HVAOnline and Juliano Rizzo from Netifera. Greeting to all members of VNSecurity, HVAOnline and Netifera.

The authors would like to thank Huong L. Nguyen, rd, Guncá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, Bruce Leidl, and Alex Sotirov for reading and editing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 draft of this advisory.


5. Technical Description


In Section 5.1 we introduce Flickr's API request signing process and its vulnerabilities. In Section 5.2 we describe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 length-extension attack against Merkle-Damgård hash. In Section 5.3 we describe our attack against Flickr's API. In Section 5.4 we discuss some exploitations, and finally in Section 5.5 we suggest some solutions that may help to fix cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerability.


5.1 Flickr's API Request Signing Process


Flickr requires that all API calls using an aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication token must be signed. In addition, calls to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 flickr.auth.* methods and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 URLs that bring users to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application authorization page must also be signed. The process of signing is as follows.

* Sort your argument list into alphabetical order based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parameter name.

* e.g. foo=1, bar=2, baz=3 sorts to bar=2, baz=3, foo=1

* concatenate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 shared secret and argument name-value pairs

* e.g. SECRETbar2baz3foo1

* calculate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 md5() hash of this string

* append this value to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 argument list with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name api_sig, in hexadecimal string form, e.g. api_sig=1f3870be274f6c49b3e31a0c6728957f

There are two vulnerabilities in this signing process:

  • As cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no delimiters between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keys and values, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signature for "foo=bar" is identical to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signature for "foob=ar"; moreover, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signature for "foo=bar&fooble=baz" is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signature for "foo=barfooblebaz". See [2] for a similar vulnerability of Amazon Web Service.

  • As MD5 is vulnerable to length-extension attack (see Section 5.2), one can append arbitrary data to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request yet still can generate valid signature without knowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret key. When combining with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first vulnerability, one can easily forge any request on behalf of any Flickr application.

5.2 Length-Extension Attack On MD5


In short, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 length-extension attack on one-way hash construction is that you can, given h(m) and len(m), you are able to compute h(m||pad(m)||m') for any m' (|| stands for concatenation), even if you don't know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entire m. This attack works on all Merkle-Damgård hash (see [4, 5]) such as MD0-MD5 and SHA0-SHA2. This is also called "message extension" or "padding" attack (see [6]). The rest of this section describes how this attack works on Flickr's API's MD5 signature. What follows is technical. You may want to skip reading it until you need it.

MD5 ([3]) follows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Merkle/Damgård iterative structure, where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash is computed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 repeated application of a compression function to successive blocks of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message. (See Figure 1.) For MD5, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compression function takes two inputs — a 128-bit chaining value and a 512-bit message block — and produces as output a new 128-bit chaining value, which is input into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next iteration of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compression function. The message to be hashed is first padded to a multiple of 512 bits, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n divided into a sequence of 512-bit message blocks. Then cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compression function is repeatedly applied, starting with an initial chaining value and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first message block, and continuing with each new chaining value and successive message blocks. After cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last message block has been processed, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 final chaining value is output as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message.


Figure 1. Merkle-Damgård hash construction (copied from Wikipedia)


According to [7], because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 iterative design, it is possible, from only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash of a message and its length, to compute cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash of longer messages that start with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 initial message and include cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding required for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 initial message to reach a multiple of 512 bits. (See Figure 2.) Applying this to Flickr's API request signature, it follows that from MD5 (SECRET||m), one can compute MD5 (SECRET||m') for any m' that starts with m||p, where p is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Merkle-Damgård padding on SECRET||m. To compute p, one just needs to know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 length of SECRET||m, which is easy to calculate in Flickr's API's case. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signature of m, one can forge cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 API signature of m||p||x for any x, without even knowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 shared secret key, and without breaking MD5 in any sense.




Figure 2. Length-extension attack on MAC = MD(KEY||msg) (copied from [9])



5.3 Our Attack



As described in Section 5.2 we require a message m and its signature to produce a longer message with a valid signature. It is easy to obtain a request signed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target third party application provider.

Flickr and many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Web 2.0 sites allows users to share data with third party applications without divulging cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's credentials. Users are transported to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Flickr web site where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are asked whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r he/she wants to allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application to access cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir data. To achieve this cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application providers ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to follow a link like this:


http://flickr.com/services/auth/?api_key=[api_key]&perms=[perms]&api_sig=[sig]



The api_key 16 bytes value identifies cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application asking for permissions and api_sig is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signature of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request calculated using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret shared between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application's developer and Flickr. This link is called login URL and is also a signed message which is all we need to perform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack.

And we start working on our message forgery code, let's see what we have:

Message: SECRETapi_key[api_key]permsread (sorted and concatenated without '&=')
Signature: [api_sig]
Length: Length of Message + Length of SECRET

SECRET is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 shared secret that Flickr and application owner don't want to share with us and that we don't need anyway.

Although cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 length of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding is always between 9 and 64 bytes we need to know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exact size of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hashed data to reconstruct cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sequence used as padding because this value is included in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ending 64 bits. Based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 API documentation we can assume that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret is 16 bytes.

We can append anything to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request and calculate its signature but we must keep cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same prefix including cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding, fortunately we have a simple way to avoid that prefix being a limitation. We can use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first char of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first variable as a variable name and all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original request including cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash padding as its value:


a=pikey[api_key]permsreadapi_sig[api_sig][padding]&api_key=[api_key]&perms=delete&new_key=new_value...


The annoying padding that includes non alphanumeric values and always contains null bytes becomes part of a variable that will be ignored. The only limitation is that we cannot use new variable names that after sorting fall before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 'a' variable but this is not a problem in practice because 'a' is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first letter of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 alphabet and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re isn't any numeric API parameter name being used.



5.4 Exploitations



There are many ways one can exploit this vulnerability for fun and profit. Below are what we have come up with. Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs may have better ways to exploit this vulnerability. Please note that what we write here apply only for Flickr's API. This vulnerability may become much more-or-less dangerous in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 context of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Flickr copycat API services. However, it would be up to those who have more time and/or interest than us to test cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se services.

First off, an attacker can send arbitrary yet valid requests on behalf of any third party application. This can be exploited to send requests using commercial API key which is AFAWK cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same as non-commercial keys at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 moment but this may change in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future. This may also make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application be blocked by Flickr if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker sends abusive requests that violating TOS of Flickr's API.

It is important to stress that this vulnerability alone doesn't give an attacker immediately access to accounts of Flickr users, but being able to send arbitrary requests on behalf of any application brings him much closer to that goal. In order to compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 account of an user, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker needs to capture a 'frob' or an 'auth_token' from that user. He can do that by attacking eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 third party application or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user using techniques such as network sniffing or ARP/DNS spoofing or as simple as phishing. Google may help too, as always.

Additionally, if an application uses PHPFlickr >= 1.3.1, an attacker can trick users of that application to visit arbitrary web sites. The login url accepts an undocumented 'extra' parameter which is passed back by Flickr to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 calling applications after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 users finish authorizing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application. PHPFlickr >= 1.3.1 will automatically treat cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 'extra' parameter as an URL, and redirect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 users to it.


So if users click on a link like this:


http://www.flickr.com/services/auth/?a=pi_key[api_key]permsdelete[padding]&api_key=[api_key]&perms=read&api_sig=[api_sig]&extra=http://evil.com



where api_key belongs to some third party application using PHPFlickr, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y'll be immediately redirected to http://evil.com if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y have already authorized that application. This may lead to phishing or browser exploitation attacks.

You can see how this works by following cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se steps (this may not work anymore if Yahoo! has fixed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issue):

* Authorize Preloadr which is an application that uses PHPFlickr >= 1.3.1. You can do that by access this link:


http://www.flickr.com/services/auth/?api_key=44fefa051fc1c61f5e76f27e620f51d5&extra=/login&perms=write&api_sig=38d39516d896f879d403bd327a932d9e


*Then click on this link:



http://www.flickr.com/services/auth/?a=pi_key44fefa051fc1c61f5e76f27e620f51d5extra/loginpermswrite%80%60%02&api_key=44fefa051fc1c61f5e76f27e620f51d5&extra=http://vnsecurity.net&perms=write&api_sig=a8e6b9704f1da6ae779ad481c4c165a3


would redirect you to http://vnsecurity.net.

This vulnerability may apply for ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Flickr's API libraries and applications as well. Developers often use this 'extra' parameter to implement a dynamic callback mechanism. This may lead to total users' accounts compromise if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developers also pass cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 'frob' cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y acquire from Flickr onto cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 'extra' URL. Some sites include cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original user's request URL as 'extra' value, which allows attackers to get signed login URLs containing arbitrary strings in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 'extra' field.



5.5 Suggested Fixes


This attack could be detected and blocked using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding bytes as signature, so a short term workaround is to deny all API calls containing 0x80 or 0x00. But filtering 0x80 or 0x00 would stop applications from sending requests containing Unicode text, so you may consider our next suggestion.

A long term solution is to switch to some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r secure MAC implementations such as HMAC-SHA1 (see [8]). As most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 programming languages used both in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server and client side to work with web services provide access to HMAC functions, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re isn't a good reason to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message digest algorithms directly to generate a precarious signature. The extension problem can be solved using a secure HMAC implementation but also is important to conserve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 query structure in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signing input string.

As suggested by Alex Sotirov, we want to stress that some sites have a similar API that's not vulnerable to our attack because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y put cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SECRET at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning. Facebook is one example, see http://wiki.developers.facebook.com/index.php/Verifying_The_Signature. Please note that although Facebook signing scheme is not vulnerable to length-extension attack, we do not recommend it because it may be vulnerable to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r known attacks (see [10]).



6. Conclusion

Length-extension attack on MAC implementation based on MD hash construction has been known in crypto academic community as early as 1992 (see [6]). After 17 years, however, we still have a large number of systems vulnerable to this simple attack. What is even more surprising is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that we were cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first to identify this vulnerability in such popular system like Flickr.

Since August 2009 we have been carrying out a research in which we test-run a number of identified practical crypto attacks on random widely-used software systems. To our surprise, most, if not all, can be attacked by one or more of well-known crypto bugs. This case is just one example.

We hope that publishing this vulnerability and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r future results from our research would encourage cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security community in taking a more serious look at crypto bugs in software system which is as pervasive as SQL Injection or XSS in early 2000.

We hope you enjoy reading this advisory as much as we enjoy writing it.



7. References



[1] Cal Henderson et al. Flickr Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication API Spec. Retrieved September 6, 2009, from http://www.flickr.com/services/api/auth.spec.html.

[2] Colin Percival. AWS signature version 1 is insecure. Retrieved September 6, 2009, from http://www.daemonology.net/blog/2008-12.html.

[3] R. Rivest. RFC 1321: The MD5 Message-Digest Algorithm. RSA Data Security, Inc., April 1992.

[4] I.B. Damgård. A design principle for hash functions. In G. Brassard, editor, Advances in Cryptology: Proceedings of CRYPTO ‘89, volume 435 of Lecture Notes in Computer Science, pages 416–427. Springer-Verlag, New York, 1990.

[5] R. Merkle. One way hash functions and DES. In G. Brassard, editor, Advances in Cryptology: Proceedings of CRYPTO ‘89, volume 435 of Lecture Notes in Computer Science, pages 428–446. Springer-Verlag, New York, 1990.

[6] G. Tsudik. Message aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication with one-way hash functions. ACM Computer Communications Review, 22(5):29–38, 1992.

[7] B. Kaliski and M. Robshaw. Message Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication with MD5. RSA Labs' CryptoBytes, Vol. 1 No. 1, Spring 1995.

[8] M. Bellare, R. Canetti, and H. Krawczyk. RFC 2104 HMAC: Keyed-Hashing for Message Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication, February 1997.

[9] H. Travis. Web 2.0 Cryptology, A Study in Failure. OWASP, 2009. Retrieved September 13, 2009, from http://www.subspacefield.org/security/web_20_crypto.pdf.

[10] B. Preneel, P.C. van Oorschot. MDx-MAC and building fast MACs from hash functions. Advances in Cryptology, Lecture Notes in Computer Science 963, D. Coppersmith, Ed., Springer-Verlag, 1995, pp. 1-14.

Comments

Unknown said…
Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 clear and concise write up. This vulnerability has been known for some time, and is specifically addressed in OAuth (which is derived partially from Flickr's approach).

If you'd like to lend your eyes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OAuth Working Group at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IETF, any help identifying potential security problems would be greatly appreciated. Discussions are currently happening on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OAuth WG list, here: https://www.ietf.org/mailman/listinfo/oauth
David Wagner said…
Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very clear explanation! That's incredible that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se services deployed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cryptography in such an obviously broken way. The problems with this type of way for aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticating messages have been known for decades, exactly as you say.
Anonymous said…
Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sharing this website. it is very useful professional knowledge. Great idea you know about company background.
web application development
Anonymous said…
hi! i like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 designs. check out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 template.
Thank you!
More templates easy to download
emma jacob said…
Well I was looking some legal procedure for my case testimonial about Handwriting expert and Handwriting analyst in Google although I have done lot of research and development about Handwriting analysis before suddenly my search stopped me at your blog I really enjoyed reading it. I'm supposed to be somewhere else in a minute but I stuck to reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 story. I love Your Blog……..