-----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 a 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