WordPress security guide

Your WordPress Site Has a Vulnerability. What Should You Do Next?

Confirm whether your installed version is affected, decide how urgent the issue really is, and choose whether to update, remove, replace, or temporarily reduce the exposure.

First Confirm That Your Site Is Actually Affected

A vulnerability warning does not automatically mean your site has been hacked. It also does not mean every installation of that plugin or theme has the same exposure.

Before deciding what to do, confirm the version and conditions behind the finding.

CheckWhy it matters
Installed versionConfirms whether your exact version falls inside the affected range
Fixed versionTells you whether a normal update already resolves the issue
Required accessShows whether exploitation is unauthenticated or requires a user role
Affected path or featureChecks whether the vulnerable code can actually be reached. A feature being unused in normal operation does not always mean the vulnerable path is inaccessible.
Known exploitationChanges how comfortable you should be waiting
Component still neededDetermines whether updating or simply removing it makes more sense

A plugin that still works normally can still be vulnerable. Vulnerabilities usually create an exploitable condition; they do not necessarily cause visible errors.

Do not assume a vulnerability is harmless just because you do not actively use the affected feature. Verify whether the vulnerable endpoint, file, action, or code path is still reachable.

Inactive is not the same as removed. Deactivating a plugin stops its normal WordPress execution, but the files remain on the server. If you no longer need a vulnerable plugin or theme, remove it rather than leaving unused code installed.
Using SiteFort: the Vulnerability Scanner identifies affected installed versions and provides the vulnerability details needed for triage. Use this guide for the response decision and the Vulnerability Scanner docs for exact SiteFort controls.

Decide How Urgent the Vulnerability Really Is

Severity is useful, but it should not make the whole decision for you. The same CVSS score can represent very different practical risk depending on how the vulnerability can be reached on your site.

Can anyone on the internet exploit it?

An unauthenticated vulnerability deserves particular attention because an attacker does not need an account before attempting it.

What level of access is required?

There is a meaningful difference between a flaw that requires no account, one that requires a Subscriber or customer account, and one that requires Administrator access.

On a WooCommerce, membership, or LMS site, even a vulnerability requiring a low-privilege account may still be widely reachable if public registration is available.

What can successful exploitation achieve?

Look at the actual outcome, not only the score. Examples include:

  • arbitrary file upload
  • remote code execution
  • authentication bypass
  • privilege escalation
  • SQL injection
  • sensitive data exposure
  • stored or reflected cross-site scripting

Is it already being exploited?

If attackers are actively exploiting the vulnerability or reliable exploit code is widely available, waiting becomes much harder to justify.

The CISA Known Exploited Vulnerabilities catalog can tell you whether a CVE is known to be exploited in the wild. EPSS can provide additional context about the likelihood of exploitation.

These are useful signals, but they do not replace checking how the vulnerability applies to your particular WordPress site.

Do not treat the severity label as your site's risk score. Exposure, required privileges, exploit activity, and what the affected feature does can change the real priority considerably.

Update, Remove, or Replace

Once you know the site is affected, choose the cleanest way to remove the vulnerable code or exposure.

SituationPractical response
A fixed version is availableUpdate to the patched version
The component is no longer usedDelete it
No patch exists and the feature can be disabledDisable it temporarily, then remove or replace it
No patch exists but the component is business-criticalReduce the specific exposure and plan a replacement
The plugin or theme appears abandonedReplace it with a maintained alternative
The security update causes a compatibility problemResolve the conflict on staging while temporary mitigation remains in place

Update: the best option when the maintainer has released a compatible fixed version.

Delete: the cleanest response when the component is not being used. There is little value in carrying vulnerable code that provides no site functionality.

Replace: usually the right long-term choice when a plugin or theme is no longer maintained or no fixed version is expected.

Disable: useful for short-term containment, but do not assume that deactivation is always equivalent to removing the vulnerable code.

If the plugin appears abandoned

If the maintainer is no longer shipping fixes, the security task is no longer “wait for an update.” It is “remove your dependency on this component.”

  • identify which site functionality depends on it
  • choose a maintained replacement
  • test the migration on staging
  • keep temporary mitigation in place during the transition
  • remove the old component when the replacement is ready
Avoid the common shortcuts. Do not leave an unused vulnerable plugin installed, do not assume deactivation always removes exposure, and do not assume the dashboard warning disappearing means exploitation could not have happened earlier.

When There Is No Patch, Reduce the Specific Exposure

A temporary workaround should interfere with the path the vulnerability needs in order to work. Making unrelated firewall settings stricter does not fix the underlying problem.

Depending on the vulnerability, temporary containment might mean:

  • disabling the affected plugin or feature
  • requiring authentication for an affected endpoint
  • restricting a specific REST or application route
  • blocking direct access to a vulnerable file or action
  • disabling or restricting the affected upload function
  • limiting the feature to trusted administrators
  • temporarily disabling public registration when exploitation requires a low-privilege account

A temporary mitigation should break the exploit path, not simply add unrelated security settings.

For example, if exploitation depends on a publicly accessible plugin endpoint, restricting that endpoint may buy time while you test an update or replacement. Tightening unrelated bot rules does not address the vulnerable path.

A workaround buys time. It does not patch the vulnerable code.

Using SiteFort: Firewall or Hardening controls may be able to reduce exposure while a patch or replacement is being tested. The mitigation should match the affected route, action, account level, or feature rather than applying broad restrictions to the whole site.

If It May Have Been Exploited Already, Treat It as an Incident

Updating a vulnerable plugin closes the vulnerable code path going forward. It does not automatically undo anything an attacker may already have done.

After a serious vulnerability where exploitation is known, suspected, or plausible, review the site for signs of compromise:

  • unexpected administrator or privileged accounts
  • recently modified PHP files
  • executable files in wp-content/uploads/
  • unfamiliar cron jobs or scheduled tasks
  • suspicious database options or injected content
  • web shells, backdoors, or unfamiliar standalone PHP files
  • changes to wp-config.php or other bootstrap files
  • unusual audit-log or web-server activity around the likely exploitation window

Rotate or revoke credentials where there is reason to believe an account, API key, SFTP login, hosting credential, or administrator session may have been exposed.

A patch closes the door. It does not remove someone who already came through it.

If the vulnerability may already have been exploited, continue with the malware findings guide rather than treating the software update as the end of the incident.

If the Security Update Breaks the Site

Compatibility problems are one of the main reasons security updates get postponed. The safer response is to resolve the conflict quickly, not to turn a temporary exception into the permanent configuration.

  1. Take a current backup. Make sure you have a usable rollback point before changing production.
  2. Reproduce the update on staging. Confirm the problem away from live customers or members.
  3. Identify the actual conflict. Check the theme, other plugins, PHP version, custom code, and external integrations.
  4. Fix or replace the conflicting component. Do not assume the security patch itself is the only possible thing that can change.
  5. Patch production. Remove temporary mitigation once the fixed version is safely running.

A checkout or application conflict is a valid reason to test the update carefully. It is not a good reason to leave a known exploitable component exposed indefinitely.

Verify the Vulnerability Is Actually Resolved

Do not stop when the warning disappears from the dashboard.

After updating, removing, or replacing the affected component:

  • confirm the installed version is outside the affected range
  • rerun the vulnerability check
  • confirm unused vulnerable copies are no longer present on disk
  • test the feature affected by the update or replacement
  • remove temporary firewall or access restrictions only when they are no longer needed
  • review logs and malware findings if exploitation was plausible
  • confirm unexpected users, files, scheduled tasks, or database changes were not introduced
  • continue monitoring for unusual activity after the fix

The issue is resolved when the vulnerable code is patched or gone and any sign of prior exploitation has been investigated, not merely when the warning disappears from the dashboard.

Need the exact SiteFort controls? Use the Vulnerability Scanner documentation for finding details, affected versions, refresh behavior, dashboard actions, and scanner configuration.