-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Advisory ID: SYSS-2019-047 Product: Micro Focus Vibe (formerly Novelle Vibe) Manufacturer: Micro Focus International plc Affected Version(s): 4.0.6 Tested Version(s): 4.0.6 Vulnerability Type: Cross-Site Scripting (CWE-79) Risk Level: Medium Solution Status: Fixed Manufacturer Notification: 2019-11-07 Solution Date: 2020-03-24 Public Disclosure: 2020-03-25 CVE Reference: CVE-2020-9520 Author of Advisory: Dr. Vladimir Bostanov, SySS GmbH ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Overview: Micro Focus Vibe is a web-based team collaboration platform that can serve as a knowledge repository, document management system, project collaboration hub, process automation machine, corporate intranet or extranet [1]. The manufacturer describes the product as follows (see [2]): "Micro Focus Vibe (formerly Novell Vibe) brings people, projects, and processes together in one secure place to enhance team productivity -- no matter where the team is or what devices they use." Due to insufficient server-side validation of user input and client-side rectification of HTML markup, Vibe is vulnerable to stored cross-site scripting (XSS). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vulnerability Details: In Vibe, an uploaded file can be assigned a title that is different from the filename. While HTML markup is not allowed in filenames, it is partially accepted in file titles. This behavior per se already poses a certain security risk, because it can be exploited by an authenticated attacker to inject malicious HTML markup into the title of a file uploaded by the attacker (see our advisory SYSS-2019-046 [3]). User input is, however, subjected to server-side sanitization as a XSS prevention measure. For instance, the following XSS payload when submitted as (a part of) a file's title, is reduced to If, however, the image tag is not closed, the 'onerror' string is not recognized as an HTML attribute. Thus, the following payload Thus, the image tag is closed and, consequently, the JavaScript alert is triggered automatically. An authenticated attacker can exploit this vulnerability to inject malicious JavaScript code into a Vibe website. The injected code is stored permanently on the server and is executed automatically in the context of any authenticated victim visiting the afflicted page. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Proof of Concept (PoC): Since file titles are truncated to 80 characters by Vibe's client-side scripts, the simple method presented above cannot be used to execute arbitrary JavaScript. The following workaround using Vibe's internal client-side function ss_loadJsFile() and the browser's local storage has proved successful in achieving this goal. As a first step, an authenticated attacker uploads a file with, e.g., the following title XSS1) and scripts that use information from the DOM do not work properly. The above example was chosen as a PoC, because it demonstrates how DOM data are exposed by the vulnerability. Potential exploitation scenarios are, however, by no means limited to this kind of credential theft. For instance, in another plausible attack, the attacker could simply replace the whole DOM by a fake Vibe login page prompting the victim to log in again, because of an alleged error. An attacker who is more interested in using the victim's hardware could launch, e.g., a cryptocurrency mining script. Many more different attack scenarios are possible as well. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Solution: Upgrade Vibe to version 4.0.7. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Disclosure Timeline: 2019-10-27: Vulnerability discovered 2019-11-07: Vulnerability reported to manufacturer 2020-03-24: Patch released by manufacturer 2020-03-25: Public disclosure of vulnerability ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ References: [1] WikipediA Article on Novelle Vibe https://en.wikipedia.org/wiki/Novell_Vibe [2] Product website for Micro Focus Vibe https://www.microfocus.com/en-us/products/micro-focus-vibe/overview [3] SySS Security Advisory SYSS-2019-046 HTML Injection in Micro Focus Vibe https://www.syss.de/fileadmin/dokumente/Publikationen/Advisories/SYSS-2019-046.txt [4] SySS Security Advisory SYSS-2019-047 Stored Cross-Site Scripting (XSS) in Micro Focus Vibe https://www.syss.de/fileadmin/dokumente/Publikationen/Advisories/SYSS-2019-047.txt [5] SySS Responsible Disclosure Policy https://www.syss.de/en/news/responsible-disclosure-policy/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Credits: This security vulnerability was found by Dr. Vladimir Bostanov of SySS GmbH. E-Mail: vladimir.bostanov@syss.de Public Key: https://www.syss.de/fileadmin/dokumente/PGPKeys/Vladimir_Bostanov.asc Key ID: 0xA589542B Key Fingerprint: 4989 C59F D54B E926 3A81 E37C A7A9 1848 A589 542B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Disclaimer: The information provided in this security advisory is provided "as is" and without warranty of any kind. Details of this security advisory may be updated in order to provide as accurate information as possible. The latest version of this security advisory is available on the SySS GmbH website. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Copyright: Creative Commons - Attribution (by) - Version 3.0 URL: https://creativecommons.org/licenses/by/3.0/deed.en -----BEGIN PGP SIGNATURE----- iQJOBAEBCgA4FiEESYnFn9VL6SY6geN8p6kYSKWJVCsFAl59+9oaHHZsYWRpbWly LmJvc3Rhbm92QHN5c3MuZGUACgkQp6kYSKWJVCvAnA//UfJ9JSoC5QmOqqWs2/OP 8yiwqArJn8TzBX61G+poEAPx7tKcvyggGRyUNuM4AgWYmBVd5yo9kuCH2+tOE2ve //IxOi+5GweitSWMPA71H/d4Mp/i80KXuv4EljFMhptVakih7lxgckmJK6LHcctt O9RJr2pVqP8cXGK9F+cVDAJkdEN+qK+f+2GLXhUklcNNlTO4b4KfPo2U3dPmUDRE Vbrs2L8JY4+fbXT17ib0WrH/axZdNPCLTd8R07gtJO/tgm0q2Xl/0BoWPZ3zgX63 7gk4BUKENxqvD/BtCBk/X2wuOVmHJ+KHm/FHAkFREHNTf1+aLPG6OONULNqn34rO /DHbAVSmiln1SlybvCaTiIla4Ig/6Siw7eLDAWGxkOL+iAhKe2G5pcQ7NOZfRVFr aUu1ctssodyJe489DXFYvAI3L4c3imiz36Bdstjwt9bcbMQ0uZIlTPXcrf3KlvgL A85rPc2ta8kf+Ry18GFUs0I02PpwXNbQGbedPHPdlymyBn6gyyo9kHA0+5hZLxOB fgFh9VDsgMChcrz7KCVzCPXT+Sb5zEs9ymLp5kgW1kbw5Ijkd6+NzBhak+f+JZFb c7YcNYB1NYi5Bmpyqqc6ZI6CTjKnhFNIsotd9XbIkIt0rr3IiOlXzEZ3x9Ei3xtX 6dirk09CVhZPfoe9O7kUq3g= =cbAp -----END PGP SIGNATURE-----