# Kali Forms — Contact Form & Drag-and-Drop Builder <= 2.4.28 - Authenticated (Author+) Stored Cross-Site Scripting via Percent-Encoded Form Field Event Handler Property Names

- **ID:** WPSEC-2026-1922
- **Plugin:** Kali Forms — Contact Form & Drag-and-Drop Builder (`kali-forms`), https://wordpress.org/plugins/kali-forms/
- **Affected versions:** from 2.4.27 before 2.4.29
- **Fixed in:** 2.4.29 (Update to 2.4.29 or later.)
- **Severity:** Medium 6.4 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N)
- **Weakness:** CWE-79
- **Usage among sites WPSec scans:** plugin Low, affected versions None seen (as of 2026-10-29)
- **Attack surface analysis:** https://attacksurface.wpsec.com/plugin/kali-forms
- **Fix released:** 2026-10-28
- **Published:** 2026-10-29
- **URL:** https://wpsec.com/vuln/WPSEC-2026-1922/

## Description

The Kali Forms plugin for WordPress is vulnerable to Stored Cross-Site Scripting via form field property names in versions 2.4.27 up to, and including, 2.4.28, due to the guard that blocks JavaScript event-handler properties (onclick, other on* handlers and the Button clickAction) for users without the unfiltered_html capability checking the submitted property name instead of the name as it is stored. sanitize_text_field() later removes percent-encoded octets from that name. A name that only becomes a handler after this step is therefore saved, and the form is then allowed to output it. This makes it possible for authenticated attackers with author-level access and above to inject arbitrary web scripts into published forms that execute whenever a user views the form.

## References

- https://wpsec.com/vuln/WPSEC-2026-1922/
- https://plugins.svn.wordpress.org/kali-forms/tags/2.4.29/
- https://wordpress.org/plugins/kali-forms/

Source: WPSec, https://wpsec.com/vuln/WPSEC-2026-1922/

License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Free to use, share and adapt, also commercially, if you credit WPSec and link to this advisory.
