CVE-2025-12667

6.4 MEDIUM

📋 TL;DR

The GitHub Gist Shortcode Plugin for WordPress has a stored cross-site scripting vulnerability that allows authenticated attackers with Contributor-level access or higher to inject malicious scripts into website pages. These scripts execute whenever users view the compromised pages, potentially stealing credentials or performing unauthorized actions. All WordPress sites using this plugin version 0.2 or earlier are affected.

💻 Affected Systems

Products:
  • GitHub Gist Shortcode Plugin for WordPress
Versions: All versions up to and including 0.2
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin enabled. Contributor-level access or higher is needed to exploit.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal administrator credentials, redirect users to malicious sites, deface websites, or perform actions on behalf of authenticated users, potentially leading to complete site compromise.

🟠

Likely Case

Attackers with contributor access inject malicious scripts that steal user session cookies or credentials, leading to account takeover and further privilege escalation within the WordPress site.

🟢

If Mitigated

With proper user access controls and content review processes, the impact is limited to potential defacement of specific pages containing the malicious shortcode.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access but is technically simple once access is obtained. The vulnerability is well-documented in security advisories.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.3 or later

Vendor Advisory: https://wordpress.org/plugins/github-gist-shortcode/

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find 'GitHub Gist Shortcode' and check if update is available. 4. Click 'Update Now' if update is available. 5. If no update appears, manually download version 0.3+ from WordPress plugin repository and replace the plugin files.

🔧 Temporary Workarounds

Remove Contributor-level access

all

Temporarily remove Contributor role access from untrusted users until patch is applied

Disable plugin

all

Deactivate the GitHub Gist Shortcode plugin if Gist functionality is not critical

🧯 If You Can't Patch

  • Implement strict user access controls and review all content from Contributor-level users
  • Add web application firewall rules to block XSS payloads in the 'id' parameter

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel → Plugins → Installed Plugins → GitHub Gist Shortcode version. If version is 0.2 or earlier, you are vulnerable.

Check Version:

wp plugin list --name='github-gist-shortcode' --field=version (if WP-CLI installed)

Verify Fix Applied:

After updating, verify plugin version shows 0.3 or later in WordPress admin plugins page.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to post editing endpoints with suspicious 'id' parameter values containing script tags or JavaScript

Network Indicators:

  • Outbound connections to suspicious domains from pages containing Gist shortcodes

SIEM Query:

source="wordpress" AND (uri_path="/wp-admin/post.php" OR uri_path="/wp-admin/admin-ajax.php") AND (param_name="id" AND param_value MATCHES "<script|javascript:")

🔗 References

📤 Share & Export