Michael Moritz created TIKA-3054:
------------------------------------

             Summary: Cross-site Scripting (XSS) in 
org.apache.cxf:cxf-rt-transports-http 3.3.2
                 Key: TIKA-3054
                 URL: https://issues.apache.org/jira/browse/TIKA-3054
             Project: Tika
          Issue Type: Bug
    Affects Versions: 1.23
            Reporter: Michael Moritz


This issue has been created automatically by a source code scanner
## Third party component with known security vulnerabilities
ent-search-master/script/vendor_jars > Jars.lock > 
org.apache.cxf:[email protected]
## Overview

[org.apache.cxf:cxf-rt-transports-http](http://cxf.apache.org/index.html) is an 
open source services framework.


Affected versions of this package are vulnerable to Cross-site Scripting (XSS).
By default, Apache CXF creates a /services page containing a listing of the 
available endpoint names and addresses. This webpage is vulnerable to a 
reflected Cross-Site Scripting (XSS) attack, which allows a malicious actor to 
inject javascript into the web page. Please note that the attack exploits a 
feature which is not typically not present in modern browsers, who remove dot 
segments before sending the request. However, Mobile applications may be 
vulnerable.

## Details
A cross-site scripting attack occurs when the attacker tricks a legitimate 
web-based application or site to accept a request as originating from a trusted 
source.

This is done by escaping the context of the web application; the web 
application then delivers that data to its users along with other trusted 
dynamic content, without validating it. The browser unknowingly executes 
malicious script on the client side (through client-side languages; usually 
JavaScript or HTML)  in order to perform actions that are otherwise typically 
blocked by the browser’s Same Origin Policy.

ֿInjecting malicious code is the most prevalent manner by which XSS is 
exploited; for this reason, escaping characters in order to prevent this 
manipulation is the top method for securing code against this vulnerability.

Escaping means that the application is coded to mark key characters, and 
particularly key characters included in user input, to prevent those characters 
from being interpreted in a dangerous context. For example, in HTML, `<` can be 
coded as  `&lt`; and `>` can be coded as `&gt`; in order to be interpreted and 
displayed as themselves in text, while within the code itself, they are used 
for HTML tags. If malicious content is injected into an application that 
escapes special characters and that malicious content uses `<` and `>` as HTML 
tags, those characters are nonetheless not interpreted as HTML tags by the 
browser if they’ve been correctly escaped in the application code and in this 
way the attempted attack is diverted.
 
The most prominent use of XSS is to steal cookies (source: OWASP HttpOnly) and 
hijack user sessions, but XSS exploits have been used to expose sensitive 
information, enable access to privileged services and functionality and deliver 
malware. 

### Types of attacks
There are a few methods by which XSS can be manipulated:

|Type|Origin|Description|
|--|--|--|
|**Stored**|Server|The malicious code is inserted in the application (usually 
as a link) by the attacker. The code is activated every time a user clicks the 
link.|
|**Reflected**|Server|The attacker delivers a malicious link externally from 
the vulnerable web site application to a user. When clicked, malicious code is 
sent to the vulnerable web site, which reflects the attack back to the user’s 
browser.| 
|**DOM-based**|Client|The attacker forces the user’s browser to render a 
malicious page. The data in the page itself delivers the cross-site scripting 
data.|
|**Mutated**| |The attacker injects code that appears safe, but is then 
rewritten and modified by the browser, while parsing the markup. An example is 
rebalancing unclosed quotation marks or even adding quotation marks to unquoted 
parameters.|

### Affected environments
The following environments are susceptible to an XSS attack:

* Web servers
* Application servers
* Web application environments

### How to prevent
This section describes the top best practices designed to specifically protect 
your code: 

* Sanitize data input in an HTTP request before reflecting it back, ensuring 
all data is validated, filtered or escaped before echoing anything back to the 
user, such as the values of query parameters during searches. 
* Convert special characters such as `?`, `&`, `/`, `<`, `>` and spaces to 
their respective HTML or URL encoded equivalents. 
* Give users the option to disable client-side scripts.
* Redirect invalid requests.
* Detect simultaneous logins, including those from two separate IP addresses, 
and invalidate those sessions.
* Use and enforce a Content Security Policy (source: Wikipedia) to disable any 
features that might be manipulated for an XSS attack.
* Read the documentation for any of the libraries referenced in your code to 
understand which elements allow for embedded HTML.

## Remediation

Upgrade `org.apache.cxf:cxf-rt-transports-http` to version 3.2.12, 3.3.5 or 
higher.


## References

- [Apache Security 
Advisory](http://cxf.apache.org/security-advisories.data/CVE-2019-17573.txt.asc?version=1&modificationDate=1579178542000&api=v2)

- [GitHub 
Commit](https://github.com/apache/cxf/commit/a02e96ba1095596bef481919f16a90c5e80a92c8)

- 
[SNYK-JAVA-ORGAPACHECXF-542666](https://snyk.io/vuln/SNYK-JAVA-ORGAPACHECXF-542666)




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to