XSS in suggestion box
Hi everybody
recently we have found that when creating a user, Nuxeo allows you to set some fields like firstName or lastName with HTML code. See examples below:
curl -X POST -H "Content-Type: application/json" -u Administrator:Administrator -d '{ "entity-type": "user", "id":"xssuser", "properties":{"username":"xssuser", "email":"xss@athento.com", "lastName":"XSS attack!", "firstName":"<script>alert(\"You have been hacked!\");</script>", "password":"xsspasswd" } }' http://localhost:8080/nuxeo/api/v1/user
will result in the following situation
It is also possible to include the same fields in the creation-user form vía UI.
When you try to search the user using the suggestion box (on the top-right corner of the page) you'll get the following message:
If you load the default search page and your compromising documents (users in this case) is included in the results page, the script code is also executed.
The same happens when you change dc:title field or any field listed in the search layout.
¿Is it any bugfix around this?
Thanks,
Hi,
The problem with the results in the top-right search box for a compromised user name (or document title in some situations) is fixed for the next releases and hotfixes (6.0-HF26, 7.10-HF04, 8.1). Our internal reference for this is NXP-18833 (the ticket is not yet public).
I couldn't reproduce any issue with the display of a compromised document title in search results. Could you expand on the exact issue? Note that previous XSS issues have been fixed, notably for Nuxeo 6.0-HF20, so you should make sure you test on the latest hotfix release.
About the document issue, these are steps I've followed: 1- create a document comprimising dc:title and dc:description fields 2 - when the document was created (and the URL have been modified), click on the upper search link. 3 - the page layout is broken (I'll attach screenshots).
Not tested with the last hotfixes. Just 6.0-HF01.
Regards,
Just a quick update. We've tested the same scenario with HF25 and got the same result. Users can be created with
<script>alert('hacked!');</script>
as first or last name.