XSS: What Type of Vuln Is It?
So an interesting question just came up in the office... Is a XSS a local or remote vulnerability. Now before we get into the discussion, let me clarify local and remote for you.
Local Vulnerability: A vulnerability affecting a client, generally you can think of this as falling into two types. Type 1 is physical access required and Type 2 is user interaction required.
Remote Vulnerability: A vulnerability affecting a remotely available service, or something available via that service.
So... Is XSS a local or a remote? I'll tell you that I'm fairly close-minded on this topic, so unless you've got a fairly compelling reason to argue it's a local, I'll most likely disagree. My answer is remote. Why? The XSS exists in a web page. The web page is hosted on a web server and is remotely available. To me that makes sense, I'm not sure that it can really be disagreed with. An argument for XSS being considered a local is that the client is affected... this seems to make sense. You visit a web page and a pop-up containing 'XSS' suddenly shows up but sit down and consider what happens.
- A Web Application is (poorly) developed.
- The Web Application contains a guestbook that allows for XSS in "signatures".
- A Malicious user visits the guestbook. (Page is properly rendered)
- A Malicious user enters <script>alert('pwned by XSS')</script> into the guestbook.
- An unsuspecting user visits the guestbook (Page is properly rendered) and is greated by a 'pwned by XSS' pop-up.
The malicious user has exploited the vulnerability in the webpage. However a secondary exploit has occurred. This exploit results because the trust relationship between the user and the web server has been violated. The JavaScript engine in the users browser processes the JavaScript while rendering the page and the exploitation of the trust relationship then occurs. This however is a secondary impact, following on the initial exploit of the vulnerable web page.
This was actually covered when CVSS v2 was released. I guess even they had issues answering the question initially:
Proposal 8
Proposal 8: Direct and Indirect Impact of Exploitation
Release Date: 6/16/06
Status: Approved by CVSS SIG
Our multi-organization scoring comparison effort has revealed that the scoring of vulnerabilities that potentially have an impact on secondary hosts that access exploited servers, such as cross site scripting (XSS) vulnerabilities, is the cause of a large source of CVSS scoring discrepancies between multiple IT security organizations. For example, some analysts score XSS vulnerabilities with respect to the direct impact on the service, and some score them with respect to the indirect impact on an end user of the service.
In order to make scoring consistent and to focus scoring on the software that is directly vulnerable, the CVSS documentation should be updated to reflect that vulnerabilities should always be scored with respect to the impact on the vulnerable service. For the majority of cases CIA will be scored Confidentiality None, Integrity Partial, and Availability None.
So I'm hoping to spur a discussion here, anyone who feels they have a valid reason to call these local, or wants to discuss whether they are local or remote, or wants to discuss whether or not the impact to the user is the initial impact or a secondary impact.
