20061030

More thoughts on XSRF

Okay, so I said at one point "cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's nothing new with XSRF." That's true. And I'm not sure if it's a sleeping giant. However, it's not something to not be concerned about.

I haven't looked at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parameters that go across or anything, but I could see this working very well against sites like . The big deal with is that you store your credit card info on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 site so you don't have to continually re-enter it. If it also has a stay-logged in feature, you could make a malicious site (or a blog) with a workflow something like this:

- User views static image, which changes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's address on file
- Javascript with a setTimeout() to create a new Image JS object, whose source is to add an item to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cart.
- Javascript with a setTimeout() to run after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous, with checkout instructions. All of this without using an XmlHttpRequest - since that won't go cross domain.

And yes, doing a DOM call to make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new image tag and load its source from off-domain works.

So why is this so awful? And what can you do to truly protect against it?

It's so awful, because in your own assessments, it doesn't even really require a "stay logged in" feature. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 session timeout is too long, and you can eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r: 1) do persisted HTML injection, or 2) trick cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user into visiting your site while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're still logged in, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n your site may still be vulnerable to it. Fortunately, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are lots of ways to protect against it, like:
- Token passing (put a nonce in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's session, check cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nonce when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y submit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form)
- Require POST, not GET
- CAPTCHA
- Force sensitive operations to require cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's password

The most elegant of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first two because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y work without user interaction. If a bad guy is able to request cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form (in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 token passing example), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y won't be able to get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 token out of what got sent back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user - not without using XmlHttpRequest, which can't go cross-domain. And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second pretty much cures all of it unless you can somehow get it to work with XmlHttpRequest.

But you REALLY need to catch cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se things during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design phase. Shoehorning in CAPTCHA or token passing after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact is very difficult. If you add it early, it's much easier to deal with, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developers begin to adopt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fix as a matter of practice, not as a response to a discovered vulnerability.

0 comments: