WordPress security vulnerabilities: causes and practical fixes

Why WordPress sites get compromised: outdated software, weak credentials, risky plugins, weak hosting, and supply-chain tricks, plus fixes that reduce real risk.

Topics Firewalls & scanners

Lars Koudal

Updated Published

WordPress made publishing easy. Plugins made it flexible. That same flexibility is why vulnerabilities show up so often in real incidents: not because core is uniquely fragile, but because sites run a lot of third-party code and leave known gaps open.

This is a practical map of common causes and what to do about them. Live lookups: WordPress vulnerabilities database. Hardening path: security hardening guide.

Common WordPress security vulnerability themes

Signs a site may already be compromised

  • Cannot log in, or passwords stop working
  • Content, menus, or users changed without a known editor
  • Random redirects or spam injections
  • Browser or Search Console warnings about hacking or phishing
  • Host tickets about malware, spam, or odd CPU/mail traffic
  • Security scanner findings you cannot explain

Cleanup when those show up: WordPress malware removal.

Major causes (and what actually helps)

Outdated WordPress core

Old core releases miss security fixes that are already public. Enable automatic updates for minor/security releases where you can, and schedule major updates after a quick staging check.

Fix: Keep core current. Do not run “vintage” versions because a plugin “likes” them. Replace that plugin instead.

Weak or stolen credentials

Strong code does not save a reused admin password. Brute-force and credential stuffing still work on boring blogs.

Fix: Unique passwords, 2FA, few administrators, and the habits in the login security guide. Use SFTP/SSH keys where possible instead of shared FTP passwords.

How WordPress sites get compromised

Weak hosting and old PHP

Shared neighbors, neglected servers, and unsupported PHP versions expand risk outside the WordPress admin. Hosts that never mention isolation, backups, or patch cadence are a gamble.

Fix: Modern PHP, a host that patches, account isolation when you run multiple sites, and backups you have restored once.

Vulnerable or abandoned plugins and themes

Plugins and themes are independent PHP packages. Many are solid. Some ship bugs. Some stop getting updates while sites keep running them. Industry reports over the years have consistently pointed at extensions (not only core) as a large share of compromises. Treat every install as code you must maintain. Deep dive: plugins as security risks and how to tell if a plugin is secure.

Typical failure modes inside vulnerable plugins:

  • File upload / file manager flaws that write executable PHP
  • SQL injection against the database
  • Cross-site scripting (XSS) that runs in an admin or visitor browser
  • Logic bugs that skip capability checks and let lower-privilege users do admin-only actions

Fix: Install from trusted sources, update promptly, remove unused extensions, and replace abandoned ones. Watch advisories in the vulnerabilities database.

A well-known historical example: older Contact Form 7 releases had a critical unrestricted file upload issue (fixed in later versions). Popularity did not prevent the bug; updating did. The lesson is not “never use forms.” It is “known CVEs require patches, not hope.”

Supply-chain and trojanized packages

Some attacks skip your coding mistakes entirely. They ship a useful-looking plugin or “nulled” theme with a hidden backdoor. Once installed, the payload phones home or creates admin access. See plugin supply chain.

Fix: No nulled premiums. No random ZIP mirrors. Prefer wordpress.org or the vendor site. After any odd install, audit users, cron, and new PHP under uploads.

Why plugins stay a frequent weak point

Anyone can publish PHP that hooks into WordPress. Core gets heavy scrutiny. A niche plugin used by 8,000 sites may not. Reviews on wordpress.org catch a lot of malware, but they do not rewrite every line for secure coding, and they do not maintain the plugin for the author.

Your job as a site owner is narrower: fewer plugins, known sources, current versions, and a plan when a CVE drops.

Many WordPress sites lag on updates

A short defense list that still works

  1. Update core, themes, and plugins on a schedule
  2. Install only from trusted sources; delete the rest from disk
  3. Limit who is Administrator; enable 2FA
  4. Use HTTPS (SSL/TLS) end to end
  5. Restrict risky server behaviors where you can (for example, no PHP execution in uploads)
  6. Rotate salts/keys after a suspected compromise (wp-config.php secret keys)
  7. Run monitoring you will actually review
  8. Keep restore-tested backups

Site-wide checklist: WordPress security checklist. Login surface: login security complete guide.

No stack is unhackable. Most WordPress breaches still come from postponed updates, weak access, and extensions nobody is watching. Close those three and you remove a large share of real-world risk.

Found this useful? Share it.