Archive for the ‘ Web security exploits ’ Category

Cross-site request forgery

Cross-site request forgery, also known as one click attack or session riding and abbreviated as CSRF (Sea-Surf) or XSRF, is a kind of malicious exploit of websites. Although this type of attack has similarities to cross-site scripting (XSS), cross-site scripting requires the attacker to inject unauthorized code into a website, while cross-site request forgery merely transmits unauthorized commands from a user the website trusts.

Example and characteristics

The attack works by including a link or script in a page that accesses a site to which the user is known to have authenticated. For example, one user, Bob, might be browsing a chat forum where another user, Alice, has posted a message with an image that links to Bob’s bank. Suppose that, as the URL for the image tag, Alice has crafted a URL that submits a withdrawal form on Bob’s bank’s website. If Bob’s bank keeps his authentication information in a cookie, and if the cookie hasn’t expired, then Bob’s browser’s attempt to load the image will submit the withdrawal form with his cookie, thus authorizing a transaction without Bob’s approval.

A cross-site request forgery is a confused deputy attack against a Web browser. The deputy in the bank example is Bob’s Web browser which is confused into misusing Bob’s authority at Alice’s direction.

The following characteristics are common to CSRF:

  • Involve sites that rely on a user’s identity
  • Exploit the site’s trust in that identity
  • Trick the user’s browser into sending HTTP requests to a target site
  • Involve HTTP requests that have side effects

At risk are web applications that perform actions based on input from trusted and authenticated users without requiring the user to authorize the specific action. A user that is authenticated by a cookie saved in his web browser could unknowingly send an HTTP request to a site that trusts him and thereby cause an unwanted action.

CSRF attacks using images are often made from Internet forums, where users are allowed to post images but not JavaScript.

Here is an example of an attack on Digg. Here is another example of an attack on Amazon.com, and one on Google’s Adsense.

Prevention

For the web site, switching from a persistent authentication method (e.g. a cookie or HTTP authentication) to a transient authentication method (e.g. a hidden field provided on every form) will help prevent these attacks. A similar approach is to include a secret, user-specific token in forms that is verified in addition to the cookie.

An alternate method is to “double submit” cookies. This method only works with Ajax based requests, but it can be applied as a global fix without needing to alter a large number of forms. If an authentication cookie is read using JavaScript before the post is made, the stricter (and more correct) cross-domain rules will be applied. If the server requires requests to contain the value of the authentication cookie in the body of POST requests or the URL of GET requests, then the request must have come from a trusted domain, since other domains are unable to read cookies from the trusting domain. On the other hand, this method forces users to enable JavaScript, negating the only way a user has to prevent most Cross-site scripting vulnerabilities from being exploited.

Contrary to popular belief, using POST instead of GET does not offer sufficient protection. JavaScript can be used to forge POST requests with ease. Nonetheless, requests that cause side effects should always use POST.[1] Also, POST does not leave a trail of variable data in webserver and proxy server logs, while GET does leave such a trail. It is still clearly best to use POST when coding in a defense-in-depth approach.

Another approach is to check the HTTP Referer header to see if the request is coming from an authorized page. Unfortunately, this technique may not work reliably, since browsers sometimes omit the Referer header because of a user’s privacy settings or because the Referer is a secure https page.

Although cross-site request forgery defenses typically require modifying the web application, individual users can help protect their accounts at poorly designed sites by logging off the site before visiting another, or clearing their browser’s cookies at the end of each browser session.[2]

Effects

This attack relies on a few assumptions:

  • The attacker has knowledge of sites the victim has current authentication on (more common on web forums, where this attack is most common)
  • The attacker’s “target site” has persistent authentication cookies, or the victim has a current session cookie
  • The “target site” doesn’t have secondary authentication for actions

While having potential for harm, the effect is mitigated by the attackers need to “know his audience” such that he attacks a small familiar community of victims, or a more common “target site” has poorly implemented authentication systems (for instance, if a common book reseller offers ‘instant’ purchases without re-authentication).

References

  1. ^ RFC 2616 9.1.1
  2. ^ Dark Reading, CSRF Vulnerability: A Sleeping Giant, accessed 2006-10-18

This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia.

Cross-site cooking

Cookie-cookingIn cross-site cooking, the attacker exploits a browser bug to send an invalid cookie to a server.

Cross-site cooking is a type of browser exploit which allows a site attacker to set a cookie for a browser into the cookie domain of another site server.

Cross-site cooking can be used to perform session fixation attacks, as a malicious site can fixate the session identifier cookie of another site.

Other attack scenarios may also possible, for example: attacker may know of a security vulnerability in server, which is exploitable using a cookie. But if this security vulnerability requires e.g. an administrator password which attacker does not know, cross-site cooking could be used to fool innocent users to unintentionally perform the attack.

Cross site. Cross-site cooking is similar in concept to cross-site scripting, cross-site request forgery, cross-site tracing, cross-zone scripting etc., in which that it involves the ability to move data or code between different web sites (or in some cases, between e-mail / instant messages and sites). These problems are linked to the fact that web browser is a shared platform for different information / applications / sites. Only logical security boundaries maintained by browsers ensures that one site cannot corrupt or steal data from another. However a browser exploit such as cross-site cooking can be used to move things across the logical security boundaries.

Origins

The name cross-site cooking and concept was not coined by Michal Zalewski in 2006. It was in use much earlier. The name is a mix of cookie and cross-site, attempting to describe the nature of cookies being set across sites.

In Michal Zalewski’s article of 2006, Benjamin Franz was credited for his discovery, who in May 1998 reported a cookie domain related vulnerability to vendors. Benjamin Franz published the vulnerability and discussed it mainly as a way to circumvent “privacy protection” mechanisms in popular browsers. Michal Zalewski concluded that the bug, 8 years later, was still present (unresolved) in some browsers and could be exploited for cross-site cooking. Various remarks such as “vendors [...] certainly are not in a hurry to fix this” was made by Zalewski and others.

Links

  • Cross-Site Cooking article by Michal Zalewski. Details concept, 3 bugs which enables Cross Site Cooking. One of these bugs is the age old bug originally found by Benjamin Franz.

This guide is licensed under the GNU Free Documentation License. It uses material from the Wikipedia.

Browser exploit

A browser exploit is a short piece of code that exploits a software bug in a web browser such that the code makes the browser do something unexpected, including crash, read or write local files, propagate a virus or install spyware. Malicious code may exploit HTML, JavaScript, Images, ActiveX, Java and other internet technologies. HTML alone is harmless (can only crash browser in some cases on vulnerable web browsers), however, in conjunction with malicious ActiveX or Java code, it can potentially freeze or crash a browser, or even crash the computer running that browser.

The term “browser exploit” can also refer to the actual bug in the browser code.

Browser exploits families

Cross Zone Scripting exploits vulnerabilities related to the “zone” concept in some browsers; i.e. a page in “Internet zone” is able to initate execution with “Local Computer”, “Local Intranet” or “Trusted Sites” zone privileges.

This guide is licensed under the GNU Free Documentation License. It uses material from the Wikipedia.

Video: Beef Browser Exploit Framekork on BackTrack