---
id: "CVE-2026-118057"
kind: "vulnerability"
aliases: ["CVE-2026-118057"]
title: "WordPress Shield Security plugin: stored XSS via REQUEST_URI logging"
severity: "high"
cvss: 7.2
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "self-hosted", "shield-security", "wordpress"]
not_affected_if: ["plugin-not-installed"]
published_at: "2026-10-31T08:16:48+00:00"
first_seen_at: "2026-10-31T08:34:28+00:00"
updated_at: "2026-10-31T08:35:05+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-118057", "first_seen_at": "2026-10-31T08:34:28+00:00"}]
---

# WordPress Shield Security plugin: stored XSS via REQUEST_URI logging

The Shield Security WordPress plugin stores the request URI from unauthenticated visitors and renders it unescaped in an admin traffic table. An attacker can inject scripts that run in the browser of anyone who views that page, such as an administrator.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed plugin version in the WordPress admin plugin list or in the plugin's main file header
- Confirm whether the Shield Security plugin is active on the site
- Look at the plugin's version field for `22.3.2` or earlier

## Fix

- Versions up to and including `22.3.2` are affected; the sources do not state a fixed version

## Timeline

- 2026-10-31T08:34:28+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-118057

## From the sources

The Shield Security – Smart Bot Blocking, Brute-Force Login Protection & File Scanning plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'REQUEST_URI' parameter in all versions up to, and including, 22.3.2 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The hidden 'path' column in ForTraffic.php lacks a client-side render function, so DataTables builds its cell via innerHTML, causing stored HTML in the path value to be parsed into live DOM nodes; a prior partial fix in version 18.5.8 added esc_html() only to the visible 'page' column, leaving the hidden 'path' field unescaped and exploitable through version 22.2.6.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
