Skip to content
CVE-2026-59238 ·
Medium · July 20, 2026

Stored XSS in Pentestify via unsanitized finding images and report client logo

S0
Secur0 CNA
CVE-2026-59238

Description

Stored Cross-site Scripting (CWE-79) in the client-side rendering functions renderPreview(), renderEditor(), and renderAuditData() in js/app.js in Pentestify <1.1.0, which allows a remote, authenticated attacker to execute arbitrary JavaScript in the browser of any user who opens a report, because the values of a finding's images array and a report's client_logo array are interpolated directly into the src attribute of <img> tags via template literals without escaping (for example <img src="${img}">), unlike text fields, which are passed through the application's escapeHTML() helper. An attacker stores a payload such as x" onerror="..." through the REST API (POST /api/reports/{id}/findings); it is persisted unsanitized and executed when any other user, including administrators, views the affected report. This results in the execution of arbitrary JavaScript in the application context in the victim's browser.

Vulnerability type (CWE)

CWE-79: Improper Neutralization of Input During Web Page Generation (Cross-site Scripting)

Affected versions

Pentestify before 1.1.0 (all versions prior to 1.1.0, including 1.0.0). The flaw has been present since before the 1.0.0 release and was fixed in 1.1.0. Default status: unaffected.

Score (CVSS 4.0)

Medium

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:L/SA:N

Solution

Upgrade to version 1.1.0 or higher.

Patch

Commit a058a22

Credits

  • Marcos García (s3ntinl) - finder
  • Mario Álvarez Fernández - analyst and remediation developer
  • Xoán M. Otero Jorge - analyst
  • Secur0 CNA - coordinator Discovery source: External Official record: CVE-2026-59238