---
id: CVE-2026-16090
title: >-
  The GamiPress – Gamification plugin to reward points, achievements, badges &
  ranks in WordPress plugin for WordPress is vulnerable to Stored Cross-Site
  Scripting via 'heading_size' Shortcode Attribute in 'gamipress_achievement' in
  all ve…
summary: >-
  The GamiPress – Gamification plugin to reward points, achievements, badges &
  ranks in WordPress plugin for WordPress is vulnerable to Stored Cross-Site
  Scripting via 'heading_size' Shortcode Attribute in 'gamipress_achievement' in
  all ve…
severity: medium
cvss: 6.4
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N'
cwe:
  - CWE-79
published: '2026-08-01'
updated: '2026-08-01'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-16090'
references:
  - url: >-
      https://plugins.trac.wordpress.org/browser/gamipress/tags/7.9.9/includes/filters.php#L542
    label: security@wordfence.com
  - url: >-
      https://plugins.trac.wordpress.org/browser/gamipress/tags/7.9.9/includes/shortcodes/gamipress_achievement.php#L229
    label: security@wordfence.com
  - url: >-
      https://plugins.trac.wordpress.org/changeset?reponame=&old=3619577%40gamipress&new=3619577%40gamipress
    label: security@wordfence.com
  - url: >-
      https://www.wordfence.com/threat-intel/vulnerabilities/id/77727d02-796b-4c5b-ad5d-d1c366760abc?source=cve
    label: security@wordfence.com
tags:
  - nvd
epss: 0.00331
epssPercentile: 0.23767
ingestedAt: '2026-08-02T05:17:48.270Z'
---

## Overview

The GamiPress – Gamification plugin to reward points, achievements, badges & ranks in WordPress plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'heading_size' Shortcode Attribute in 'gamipress_achievement' in all versions up to, and including, 7.9.9.1 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. WordPress save-time wp_kses_post does not neutralize this payload because the injected value is stored inside a shortcode attribute rather than as a raw HTML tag, and is only emitted into HTML at render time without escaping.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
