GitHub Advisoryadvisory · PyPI

GHSA-x7c2-7wvg-jpx7 kiwitcms vulnerable to stored XSS via unrestricted files upload

MEDIUM Published 2023-05-22 Modified 2023-06-02 Official page ↗
Aliases
CVE-2023-32686
Ecosystem
PyPI
Packages
kiwitcms
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Weaknesses
CWE-434, CWE-79
Reviewed
2023-05-22

Affected packages

• PyPI kiwitcms: < 12.3 → fixed in 12.3

Description

Impact Kiwi TCMS allows users to upload attachments to test plans, test cases, etc. Earlier versions of Kiwi TCMS had introduced upload validators in order to prevent potentially dangerous files from being uploaded, see GHSA-fwcf-753v-fgcj and Content-Security-Policy definition to prevent cross-site-scripting attacks, see GHSA-2wcr-87wf-cf9j. The upload validation checks were not robust enough which left the possibility of an attacker to circumvent them and upload a potentially dangerous file. Exploting this flaw a combination of files could be uploaded so that they work together to circumvent the existing Content-Security-Policy and allow execution of arbitrary JavaScript in the browser. Patches • File upload validation code has been improved • Kiwi TCMS will now force `Content-Type: text/plain` when serving uploaded files Workarounds 1) Force the Content-Type header via a custom Django middleware, see `ExtraHeadersMiddleware` in https://github.com/kiwitcms/Kiwi/blob/master/tcms/core/middleware.py#L23 and/or 2) Force the Content-Type header via Nginx overrides, see `location /uploads/` in https://github.com/kiwitcms/Kiwi/blob/master/etc/nginx.conf References Disclosed by Antonio Spataro and ek1ng. Additional credits to Ahmed Rabeaa Mosa.

Related

Alias · CVE (1)

  • CVE-2023-32686 Kiwi TCMS is an open source test management system for both manual and automated testing. vulnerability

Weakness · CWE (2)

  • CWE-434 Unrestricted Upload of File with Dangerous Type weakness
  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness

References