Clickjacking
Template:Use dmy dates Clickjacking (User Interface redress attack, UI redress attack, UI redressing) is a malicious technique of tricking a Web user into clicking on something different from what the user perceives they are clicking on, thus potentially revealing confidential information or taking control of their computer while clicking on seemingly innocuous web pages.<ref>Template:Cite web</ref><ref>*****o</ref><ref>Template:Cite web</ref><ref>Template:Cite web</ref> It is a browser security issue that is a vulnerability across a variety of browsers and platforms. A clickjack takes the form of embedded code or a script that can execute without the user's knowledge, such as clicking on a button that appears to perform another function.<ref>Template:Cite web</ref> The term "clickjacking" was coined by Jeremiah Grossman and Robert Hansen in 2008.<ref>You don't know (click)jack Robert Lemos, October 2008</ref> Clickjacking can be understood as an instance of the confused deputy problem, a term used to describe when a computer is innocently fooled into misusing its authority.<ref>The Confused Deputy rides again!, Tyler Close, October 2008</ref>
Contents
Description
Clickjacking is possible because seemingly harmless features of HTML web pages can be employed to perform unexpected actions.
A clickjacked page tricks a user into performing undesired actions by clicking on a concealed link. On a clickjacked page, the attackers load another page over it in a transparent layer. The users think that they are clicking visible buttons, while they are actually performing actions on the hidden/invisible page. The hidden page may be an authentic page; therefore, the attackers can trick users into performing actions which the users never intended. There is no way of tracing such actions to the attackers later, as the users would have been genuinely authenticated on the hidden page.
Examples
A user might receive an email with a link to a video about a news item, but another webpage, say a product page on Amazon.com, can be "hidden" on top or underneath the "PLAY" button of the news video. The user tries to "play" the video but actually "buys" the product from Amazon. The hacker can only send a single click, so they rely on the fact that the visitor is both logged into Amazon.com and has 1-click ordering enabled.
Other known exploits include:
- Tricking users into enabling their webcam and microphone through Flash (though this has since been fixed since originally reported)Template:Citation needed
- Tricking users into making their social networking profile information publicTemplate:Citation needed
- Making users follow someone on Twitter<ref>Template:Cite web</ref>
- Sharing or liking links on Facebook<ref>Template:Cite web</ref><ref>*****o</ref>
- Getting likes on Facebook fan page<ref>Template:Cite web</ref>
- Clicking Google Adsense ads to generate pay per click revenueTemplate:Citation needed
- Playing YouTube videos to gain views
- Following someone on Facebook
- +1 a website
While technical implementation of these attacks may be challenging due to cross-browser incompatibilities, a number of tools such as BeEF or Metasploit Project offer almost fully automated exploitation of clients on vulnerable websites. Clickjacking may be facilitated by - or may facilitate - other web attacks, such as XSS.<ref>Template:Cite web</ref><ref>Template:Cite web</ref>
Likejacking
Likejacking is a malicious technique of tricking users of a website into "liking"" a Facebook page that they did not intentionally mean to "like".<ref name="Sophos 9783">Template:Cite web</ref> The term "likejacking" came from a comment posted by Corey Ballou in the article How to "Like" Anything on the Web (Safely),<ref name="corey ballou">Template:Cite webTemplate:Dead link</ref> which is one of the first documented postings explaining the possibility of malicious activity regarding Facebook's "like" button.<ref name="readwriteweb likejacking">Template:Cite web</ref>
According to an article in IEEE Spectrum, a solution to likejacking was developed at one of Facebook's hackathons.<ref>Template:Cite web</ref> A "Like" bookmarklet is available that avoids the possibility of likejacking present in the Facebook Like Button.<ref>*****o</ref>
Cursorjacking
Cursorjacking is a UI redressing technique to change the cursor from the location the user perceives, discovered in 2010 by Eddy Bordi, a researcher at Vulnerability.fr,Template:Citation needed Marcus Niemietz demonstrated this with a custom cursor icon, and in 2012 Mario Heiderich by hiding the cursor.<ref name="Kotowicz">Template:Cite web</ref><ref>Template:Cite web</ref>
Jordi Chancel, a researcher at Alternativ-Testing.fr, discovered a cursorjacking vulnerability using Flash, HTML and JavaScript code in Mozilla Firefox on Mac OS X systems (fixed in Firefox 30.0) which can lead to arbitrary code execution and webcam spying.<ref>Template:Cite web</ref>
A second CursorJacking vulnerability was again discovered by Jordi Chancel in Mozilla Firefox on Mac OS X systems (fixed in Firefox 37.0) using once again Flash, HTML and JavaScript code which can lead also to the spying of the webcam and the execution of a malicious addon allowing the execution of a malware on the computer of the trapped user.<ref>Template:Cite web</ref>
Password manager attack
A 2014 paper from researcher at the Carnegie Mellon University found that whilst browsers refuse to autofill if the protocol on the current login page is different from the protocol at the time the password was saved, some password managers would insecurely fill in passwords for the http version of https-saved passwords. Most managers did not protect against iFrame and redirection based attacks and exposed additional passwords where password synchronization had been used between multiple devices.<ref>Template:Cite web</ref>
Prevention
Client-side
NoScript
Protection against clickjacking (including likejacking) can be added to Mozilla Firefox desktop and mobile<ref>Template:Cite web</ref> versions by installing the NoScript add-on: its ClearClick feature, released on 8 October 2008, prevents users from clicking on invisible or "redressed" page elements of embedded documents or applets.<ref>Template:Cite web</ref> According to Google's "Browser Security Handbook" from year 2008, NoScript's ClearClick is "the only freely available product that offers a reasonable degree of protection" against Clickjacking.<ref name="Zalevski">Template:Cite web</ref> Protection from the newer cursorjacking attack was added to NoScript 2.2.8 RC1.<ref name="Kotowicz" />
GuardedID
GuardedID (a commercial product) includes client-side clickjack protection for users of Internet Explorer and Firefox<ref>Template:Cite web</ref> without interfering with the operation of legitimate iFrames. GuardedID clickjack protection forces all frames to become visible.
Gazelle
Gazelle is a Microsoft Research project secure web browser based on IE, that uses an OS-like security model, and has its own limited defenses against clickjacking.<ref>Template:Cite web</ref> In Gazelle, a window of different origin may only draw dynamic content over another window's screen space if the content it draws is opaque.
Server-side
Framekiller
Web site owners can protect their users against UI redressing (frame based clickjacking) on the server side by including a framekiller JavaScript snippet in those pages they do not want to be included inside frames from different sources.<ref name="Zalevski" />
Such JavaScript-based protection, unfortunately, is not always reliable. This is especially true on Internet Explorer,<ref name="Zalevski" /> where this kind of countermeasure can be circumvented "by design" by including the targeted page inside an <IFRAME SECURITY=restricted> element.<ref name="hackademix2">Template:Cite web</ref>
X-Frame-Options
Introduced in 2009 in Internet Explorer 8 was a new HTTP header X-Frame-Options
which offered a partial protection against clickjacking<ref>Template:Cite web</ref><ref>Template:Cite web</ref> and was shortly after adopted by other browsers (Safari,<ref>Template:Cite web</ref> Firefox,<ref>https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header The X-Frame-Options response header — MDC</ref> Chrome,<ref>Template:Cite web</ref> and Opera<ref>Template:Cite web</ref>). The header, when set by website owner, declares its preferred framing policy: values of DENY, SAMEORIGIN, or ALLOW-FROM origin will prevent any framing, framing by external sites, or allow framing only by the specified site, respectively. In addition to that, some advertising sites return a non-standard ALLOWALL value with the intention to allow framing their content on any page (equivalent of not setting X-Frame-Options at all).
In 2013 the X-Frame-Options header has been officially published as RFC 7034,<ref>Template:Cite web</ref> but is not an internet standard. The document is provided for informational purposes only.
Content Security Policy
The frame-ancestors
directive of Content Security Policy (introduced in version 1.1) can allow or disallow embedding of content by potentially hostile pages using iframe, object, etc. This directive obsoletes the X-Frame-Options directive. If a page is served with both headers, the frame-ancestors policy should be preferred by the browser.<ref name="Content Security Policy Level 2">Template:Cite web</ref>—although some popular browsers disobey this requirement.<ref name="Clickjacking Defense Cheat Sheet">
Template:Cite web</ref>
Example frame-ancestors policies:
# Disallow embedding. All iframes etc. will be blank, or contain a browser specific error page. Content-Security-Policy: frame-ancestors 'none' # Allow embedding of [[same-origin policy|own content]] only. Content-Security-Policy: frame-ancestors 'self' # Allow specific origins to embed this content Content-Security-Policy: frame-ancestors example.com wikipedia.org
See also
- Browser security
- Internet security
- Internet safety
- Hacker (computer security)
- Cross-site scripting
- Phishing
- Ghostery
- Social jacking
References
| references-column-width | references-column-count references-column-count-{{#if:1|2}} }} | {{#if: | references-column-width }} }}" style="{{#if: 2 | {{#iferror: {{#ifexpr: 2 > 1 }} | Template:Column-width | Template:Column-count }} | {{#if: | Template:Column-width }} }} list-style-type: {{#switch: | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group}}} | #default = decimal}};"><references group=""></references>
External links
Template:Prone to spam Template:Z148 Template:Scams and confidence tricks Template:Malware