CVE-2026-84224
Executive Summary
CVE-2026-84224 is a Server-Side Request Forgery (SSRF) vulnerability in the Kirki WordPress plugin affecting all versions before 6.3.2. The plugin fetches a user-supplied URL without validating the destination host, enabling authenticated attackers with editor-level privileges or higher to coerce the WordPress site into issuing HTTP requests against internal, non-public services. Impact is limited to information disclosure through response-based reachability oracles (CVSS 4.1), but in segmented or cloud environments it can expose internal network topology and reachable backend services.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Kirki is a widely deployed WordPress plugin historically used as a Customizer toolkit and now positioned as a site-design/options framework. The vulnerable behavior is a classic SSRF: the plugin accepts a URL from a request, performs a server-side fetch (e.g., to retrieve remote content, verify a resource, or resolve a supplied address), and does not validate the host component of that URL against an allowlist or blocklist before the request is dispatched.
The root cause maps to CWE-918 (Server-Side Request Forgery). The essential defect is the absence of destination-host validation — an attacker-supplied URL is treated as trusted input and passed to the site's outbound HTTP client. Because the request originates from the WordPress server rather than the attacker's machine, it traverses network boundaries the attacker cannot cross directly: loopback interfaces, RFC1918 address space, container-internal service names, and cloud metadata endpoints reachable from the instance.
The CVSS vector CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:N/A:N specifies the exploitation profile precisely:
- AV:N — the vulnerable component is reachable over the network through the WordPress application.
- AC:L — no special conditions beyond a valid authenticated session and a plugin feature that accepts a URL.
- PR:H — the attacker must hold editor-level access or above. Author-level and subscriber-level accounts are insufficient per the NVD description.
- UI:N — no victim interaction is required once the malicious request is submitted.
- S:C — scope is changed. This is the most security-relevant metric: the vulnerable component (the WordPress plugin) is used to affect resources beyond its own security authority (internal services, metadata endpoints, other hosts). This is why the score is non-zero despite limited CIA impact.
- C:L — only a low-confidentiality impact. The description explicitly limits the observable effect to determining which internal services are "live from the response," i.e., a reachability oracle, not full data exfiltration.
- I:N / A:N — no integrity or availability impact is described.
The "S:C" scope change combined with C:L is the defining characteristic of a blind SSRF with a response side channel. Attackers can distinguish live from dead internal targets by observing whether the fetch succeeds, times out, returns a distinct error, or yields different response content/status codes surfaced back to the requesting user. This turns the plugin into an internal port scanner and service-enumeration primitive.
Critically, no function names, class names, REST routes, AJAX actions, or parameter names are provided in the NVD description or CNA title. The exact sink (which internal function performs the fetch) and the source (which request parameter or REST field carries the URL) are not disclosed in the available data. Any claim about specific hooks or endpoints would be fabricated. What can be stated definitively is the vulnerability class (SSRF), the missing control (host validation), the privilege threshold (editor+), and the observable effect (internal reachability disclosure).
Versions below 6.3.2 are affected. No CWE identifier was supplied by the vendor, but CWE-918 is the appropriate classification given the description. No public PoC, exploit code, or Nuclei template is available; EPSS has not been scored by FIRST.org at the time of writing.
Exploitation Scenarios
No public PoC is available; the attack chain below is inferred from the vulnerability class (SSRF via missing host validation) and the constraints stated in the NVD description.
Reconnaissance / target identification. The attacker must first obtain an authenticated WordPress account with editor-level privileges or above. Editors are common on multi-author sites, and credential compromise, insider access, or a separate privilege-escalation vulnerability can satisfy PR:H. Once authenticated, the attacker enumerates plugin features that accept a URL — the NVD description confirms such a feature exists in Kirki before 6.3.2, though the specific UI/REST surface is not named in the available data. The attacker also needs a way to observe the response (success, error, timing, or content), which the description confirms is possible ("tell which of those are live from the response").
Triggering the flaw class. The attacker supplies a URL whose host component points at an internal or otherwise unreachable resource instead of an external one. Because the plugin does not validate the host before fetching, the WordPress server issues the request from its own network position. Classic targets for this flaw class include loopback addresses (127.0.0.1 / ::1), RFC1918 ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), link-local and cloud metadata addresses such as 169.254.169.254, and internal DNS names resolvable only inside the hosting environment (e.g., Docker/Kubernetes service names). The precise URL format required (plain host, scheme, port syntax) depends on the unnamed plugin parameter and is not disclosed.
Payload / execution method. The "payload" is the attacker-supplied URL itself. There is no code injection — the primitive is the server performing the outbound request on the attacker's behalf. Attackers typically automate this into a sweep: iterate candidate internal hosts and ports, submitting one URL per request, and classify each destination as reachable or not based on the response. The description frames this as a liveness/enumeration capability rather than a data-extraction capability, so the realistic execution is methodical internal port scanning and service discovery through the plugin.
Post-exploitation impact. The result is an internal network map derived from the WordPress host's vantage point. The attacker learns which internal services exist, which ports respond, and possibly which responses differ in a way that fingerprints a service. This intelligence supports follow-on attacks: identifying an unauthenticated internal admin panel, a database service, a cache layer, or a metadata endpoint. The description bounds the impact at disclosure of reachability (C:L) and explicitly does not claim data exfiltration, integrity loss, or availability loss, so the vulnerability is best characterized as a high-value intelligence-gathering primitive that materializes into serious risk when chained with other vulnerabilities reachable only from inside the perimeter.
Impact Assessment
The direct technical impact is low-to-moderate: an authenticated editor-level user can determine which internal services are reachable from the WordPress server. CVSS 4.1 reflects the constrained CIA impact (C:L, I:N, A:N) raised by the changed-scope (S:C) condition and gated by high privileges (PR:H).
Business impact depends entirely on deployment context, and can be disproportionate to the score:
- Cloud and containerized hosting. A WordPress instance with access to a cloud instance metadata service (e.g., 169.254.169.254) or internal orchestration APIs turns a low-severity SSRF into a potential stepping stone. The NVD description does not state that metadata credentials are retrievable — only that liveness can be determined — so credential theft should be treated as a plausible escalation path rather than a confirmed outcome.
- Segmented corporate networks. An internal-only WordPress host may sit in a DMZ with reachability into management planes. Reachability disclosure here is reconnaissance that directly enables lateral movement planning.
- Multi-tenant and managed WordPress. On shared infrastructure, editors from one tenant may probe services shared across tenants, with confidentiality boundaries enforced by network segmentation rather than by the application.
Blast radius: every WordPress installation running Kirki below 6.3.2 with at least one editor-level account. Given Kirki's historical install base in the WordPress ecosystem, exposure is potentially broad, though the editor-level prerequisite (PR:H) materially limits the pool of attackers. No CISA KEV listing, no known in-the-wild exploitation, and no EPSS score are available; there is no evidence of active campaigns in the provided data. The absence of integrity and availability impact means business continuity is not directly at risk, but the reconnaissance value of the flaw makes it a meaningful precursor to more damaging attacks.
Detection Guidance
Sigma Rule
title: Kirki WordPress Plugin SSRF - Internal Host URL Fetch Attempt
id: 8f3c1a92-4b7e-4d51-9c2a-0e6d5f7a1b34
status: experimental
description: Detects attempt to abuse the Kirki plugin (<6.3.2) to fetch internal or non-routable URLs by an authenticated editor-level user.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-84224
author: valtersit.com
date: 2026/01/01
tags:
- attack.t1190
- cwe.918
logsource:
product: wordpress
service: web
detection:
selection_plugin:
cs-uri-query|contains:
- 'kirki'
selection_internal_target:
cs-uri-query|re:
- '(?i)(127\.0\.0\.1|localhost|::1)'
- '(?i)169\.254\.169\.254'
- '(?i)10\.\d{1,3}\.\d{1,3}\.\d{1,3}'
- '(?i)192\.168\.\d{1,3}\.\d{1,3}'
- '(?i)172\.(1[6-9]|2[0-9]|3[01])\.\d{1,3}\.\d{1,3}'
condition: selection_plugin and selection_internal_target
falsepositives:
- Legitimate administrator configuring remote content sources using private addresses
level: medium
YARA Rule
rule WP_Kirki_SSRF_CVE_2026_84224
{
meta:
description = "Detects Kirki plugin references associated with SSRF CVE-2026-84224 in WordPress content or logs"
author = "valtersit.com"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-84224"
date = "2026-01-01"
severity = "medium"
strings:
$kirki = "kirki" ascii nocase
$ver_hdr = "Version:" ascii
$m1 = "169.254.169.254" ascii
$m2 = "127.0.0.1" ascii
$ssrf1 = "wp_remote_get" ascii
$ssrf2 = "wp_remote_request" ascii
$ssrf3 = "wp_safe_remote_get" ascii
condition:
filesize < 5MB and
$kirki and
any of ($m*) and
any of ($ssrf*)
}
Suricata IDS Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-84224 Kirki WordPress Plugin SSRF Internal Host Fetch Attempt"; flow:established,to_server; http.method; content:"GET"; http.uri; content:"kirki"; nocase; http.uri; pcre:"/(127\.0\.0\.1|localhost|169\.254\.169\.254|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2[0-9]|3[01])\.\d{1,3}\.\d{1,3})/i"; reference:cve,2026-84224; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-84224; classtype:attempted-recon; sid:202684224; rev:1;)
Elastic Detection
sequence by user.name with maxspan=5m
[http.request where http.request.method == "POST" and url.path contains "kirki"]
[http.request where http.request.method in ("GET","POST") and
(url.query contains "127.0.0.1" or
url.query contains "localhost" or
url.query contains "169.254.169.254" or
url.query regex~ "10\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}" or
url.query regex~ "192\\.168\\.[0-9]{1,3}\\.[0-9]{1,3}" or
url.query regex~ "172\\.(1[6-9]|2[0-9]|3[01])\\.[0-9]{1,3}\\.[0-9]{1,3}")]
Splunk SPL Query
index=web sourcetype=access_combined
| eval uri=urldecode(uri)
| where match(lower(uri), "kirki")
| where match(uri, "(?i)(127\.0\.0\.1|localhost|169\.254\.169\.254|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2[0-9]|3[01])\.\d{1,3}\.\d{1,3})")
| stats count min(_time) as first_seen max(_time) as last_seen values(uri) as uris by src_ip, user
| where count > 1
| sort - count
Wazuh OSSEC Rule
<group name="web,wordpress,ssrf,">
<rule id="100842" level="10">
<if_sid>31100</if_sid>
<url>kirki</url>
<regex type="pcre2">(?i)(127\.0\.0\.1|localhost|169\.254\.169\.254|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2[0-9]|3[01])\.\d{1,3}\.\d{1,3})</regex>
<description>CVE-2026-84224: Possible Kirki WordPress plugin SSRF attempt - internal host URL fetched via plugin</description>
<mitre>
<id>T1190</id>
</mitre>
<group>cve_2026_84224,ssrf,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).
- Immediate mitigations (no patch available):
- Restrict plugin access. Audit which users hold editor-level or higher roles and reduce that population to the minimum necessary. The PR:H prerequisite means the vulnerability cannot be triggered below editor level, so role hygiene is the single most effective control.
- Remove or disable the Kirki plugin if it is not actively required. If it is required, disable any feature that accepts a user- or remote-supplied URL until the fixed version is confirmed.
- Apply network egress controls. Block outbound requests from the WordPress server to loopback, link-local (including 169.254.169.254), and RFC1918 ranges at the host firewall or egress proxy layer. For cloud hosts, enforce IMDSv2 or disable instance metadata where the platform allows it.
- Enforce host allowlisting at the application boundary if the WordPress deployment supports an outbound-request filter (for example, a global HTTP request host allowlist applied site-wide).
- Monitor for the reconnaissance behavior described above. Repeated requests probing internal address space from a single authenticated editor account are the highest-signal indicator.
- Patch / upgrade steps:
- The NVD description identifies version 6.3.2 as the first fixed release. Upgrade Kirki to 6.3.2 or later.
- No vendor advisory, changeset, or commit hash for the fix is present in the provided data; treat version 6.3.2 as the remediation target stated by the CVE description and verify against the official plugin repository before and after upgrading. Because patch confidence is 0/4, confirm the fix independently rather than assuming the version number alone guarantees corrective host validation.
- Following upgrade, re-test the URL-accepting feature with internal targets to confirm the host validation now rejects non-routable and loopback destinations.
- Long-term hardening:
- Treat all plugin-supplied URLs as untrusted input and require host validation (allowlist-based) for any server-side fetch across the WordPress stack.
- Enforce least privilege on WordPress roles; several SSRF-class issues in the ecosystem are gated only by role level.
- Adopt a defense-in-depth posture for SSRF: egress filtering, metadata-service hardening, DNS resolution pinning, and response-content restrictions.
- Maintain a vulnerability management cadence that flags plugins with editor-reachable URL-fetch features as priority inventory items, since their risk is realized whenever role boundaries weaken.
References
- NVD — CVE-2026-84224: https://nvd.nist.gov/vuln/detail/CVE-2026-84224
- NVD CWE-918 (Server-Side Request Forgery): https://cwe.mitre.org/data/definitions/918.html
- MITRE ATT&CK T1190 — Exploit Public-Facing Application: https://attack.mitre.org/techniques/T1190/
- OWASP — Server-Side Request Forgery Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html
- FIRST.org EPSS (score not yet assigned for this CVE): https://www.first.org/epss/
No CISA KEV listing exists for this CVE. No public PoC, exploit code, or Nuclei template is available. No threat actor campaigns or exploit-in-the-wild evidence were identified in the provided data.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.