Title: TibaCheck — Site Audit
Author: omwamij
Published: <strong>October 19, 2026</strong>
Last modified: October 19, 2026

---

Search plugins

![](https://ps.w.org/tibacheck-site-audit/assets/banner-772x250.png?rev=3755345)

![](https://ps.w.org/tibacheck-site-audit/assets/icon-256x256.png?rev=3755345)

# TibaCheck — Site Audit

 By [omwamij](https://profiles.wordpress.org/omwamij/)

[Download](https://downloads.wordpress.org/plugin/tibacheck-site-audit.0.12.1.zip)

 * [Details](https://wordpress.org/plugins/tibacheck-site-audit/#description)
 * [Reviews](https://wordpress.org/plugins/tibacheck-site-audit/#reviews)
 *  [Installation](https://wordpress.org/plugins/tibacheck-site-audit/#installation)
 * [Development](https://wordpress.org/plugins/tibacheck-site-audit/#developers)

 [Support](https://wordpress.org/support/plugin/tibacheck-site-audit/)

## Description

TibaCheck runs a read-only audit of your site’s configuration and shows you, in 
plain language, what needs attention. Every report leads with two scores — a **Site
Health Score** and a **Security Score** built from checks mapped to the **OWASP 
Top 10 (2021)** — with a full OWASP coverage table showing what was assessed and
what needs an external deep scan:

 * **Software updates** — pending WordPress core, plugin, and theme updates (outdated
   software is the #1 way sites get hacked)
 * **PHP version** — whether your PHP is supported, outdated, or end-of-life
 * **Inactive plugins & themes** — unused code sitting on your site is a favorite
   hiding spot for malware
 * **Backup status** — whether we can confirm this site is backed up at all
 * **User accounts** — every administrator listed by name after each scan, plus 
   a hidden-account test that catches backdoor users invisible to WordPress
 * **Registration safety** — open registration paired with a powerful default role
   is an open door; we flag it
 * **File editor** — whether the wp-admin theme/plugin editor (one stolen password
   away from code execution) is disabled
 * **Debug display** — whether PHP errors are being shown to visitors, leaking server
   internals
 * **Search visibility** — whether the site is accidentally telling Google to stay
   away
 * **SSL / HTTPS** — whether both site URLs are actually configured for encrypted
   traffic
 * **Permalinks** — whether links are readable and search-friendly, or the plain`?
   p=123` default
 * **Autoload size** — how much data loads on every page view, with the biggest 
   offenders named; bloat here is the #1 silent slowdown
 * **Cron health** — whether scheduled tasks (updates, backups, posts) are actually
   firing, or silently stalled
 * **Comment queues** — spam and unmoderated comments piling up in the database
 * **PHP extensions** — whether the extensions WordPress relies on for updates, 
   images, and encryption are present

Plus the **Persistence Pack** — the backdoor hunt most audits skip entirely:

 * **Privilege audit** — accounts whose real power exceeds their role label (a “
   Subscriber” who can actually run the site)
 * **Must-use plugins & drop-ins** — code that runs on every request but never appears
   in your plugin list, listed by name; files matching names commonly installed 
   by WordPress, hosts, or caching tools are called out separately from names we
   cannot recognize
 * **Database triggers** — triggers on account tables can silently recreate a deleted
   backdoor; we inspect the schema
 * **Cron job origins** — scheduled tasks that trace to neither core nor any installed
   plugin or theme are how cleaned infections return
 * **Code in uploads** — executable files inside the media folder, where only images
   and documents belong
 * **Server prepend directives** — auto_prepend_file / auto_append_file run code
   before WordPress even loads; we show you if they’re set
 * **Application passwords** — an inventory of the standing credentials that bypass
   your login screen, with the oldest one’s age

Every report also carries a **Plugins Review** section: every installed plugin grouped
by the job it does — backups, security, SEO, speed, forms, builders, store, analytics,
spam, media, email, languages, utilities — each with a one-line purpose and its 
active/inactive state. When two or more _active_ plugins share a job, the group 
is flagged **repetitive** and a Plugin Overlap check warns: duplicates conflict,
slow the site, and double what you must keep updated. Plugins we don’t recognize
are listed honestly as “not yet categorized” — we never guess what a plugin does.

Every report can also be opened as a **printable client report**: a branded document
with the score cards, every check and its detail, and the plugin and OWASP coverage
summaries — ready to print or save as a PDF for a client. It is generated fresh 
when opened; the plugin stores no full report (only scores, statuses, and time).

**The Watch** keeps an eye on the site between visits: once a week, TibaCheck quietly
re-runs the same read-only audit on its own (using WordPress’s built-in scheduler—
no external calls, nothing phones home). If a check gets worse than the last audit,
or the health score drops by 10 points or more, a notice appears in wp-admin naming
what changed. A manual audit run answers the notice; improving checks never raise
one, and each weekly run reconciles an unanswered notice — problems that recovered
drop off it, problems still active stay on it. Deactivating the plugin stops the
Watch and discards any pending notice (on a multisite network, deactivate on the
site itself to clear that site’s Watch).

A note on honesty: TibaCheck does not claim to “scan for malware” the way signature
scanners do — signatures miss modern, per-site malware, and a scanner runs inside
the very environment an infection can hide from. What it does is audit the places
malware _must_ live, persist, and act: its hiding spots, its survival tricks, and
the accounts it needs. Those it finds, it names.

More checks are on the roadmap: file permissions and deeper performance profiling.

TibaCheck never changes your site’s content or settings — it reports. The only thing
it saves is its own last report (scores and statuses, in its own settings), any 
pending Watch change alert, and the time of the last automatic Watch run, so your
next scan can show whether your scores are rising or falling. Fixing is up to you,
or the care-plan team that handles it every month.

## Screenshots

[⌊One-click audit results with color-coded status pills and a summary bar — passing,
needs attention, and failing at a glance.⌉⌊One-click audit results with color-coded
status pills and a summary bar — passing, needs attention, and failing at a glance
.⌉[

One-click audit results with color-coded status pills and a summary bar — passing,
needs attention, and failing at a glance.

[[

[[

[[

## Installation

 1. Upload the plugin files to `/wp-content/plugins/tibacheck-site-audit`, or install
    through the WordPress plugins screen.
 2. Activate the plugin.
 3. Go to Tools  Site Audit and click **Run Audit**.

## FAQ

### Does the audit change anything on my site?

No. Every check is read-only — TibaCheck never updates, deletes, or modifies your
site. It stores only its own last report (scores and check statuses), any pending
Watch change alert, and the time of the last automatic Watch run, so it can show
your trend on the next run.

### Is the OWASP score a certification?

No. The Security Score maps this plugin’s checks to the OWASP Top 10 (2021) categories
they assess, and the coverage table states plainly which categories a plugin cannot
assess from inside (injection in custom code, insecure design, SSRF, and others).
Those require an external assessment — which is part of the WP Care Plan deep scan.

### What do the statuses mean?

**Pass** — healthy. **Warn** — should be fixed soon. **Fail** — fix now; this is
how sites get hacked or break.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“TibaCheck — Site Audit” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ omwamij ](https://profiles.wordpress.org/omwamij/)

[Translate “TibaCheck — Site Audit” into your language.](https://translate.wordpress.org/projects/wp-plugins/tibacheck-site-audit)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/tibacheck-site-audit/),
check out the [SVN repository](https://plugins.svn.wordpress.org/tibacheck-site-audit/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/tibacheck-site-audit/)
by [RSS](https://plugins.trac.wordpress.org/log/tibacheck-site-audit/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.12.1

 * Fixed (verification re-review of 0.12.0): the Watch notice’s
    score arrow could
   understate a fresh drop. If the score rose while a notice was open and then dropped
   10+ from that higher point, the arrow still started from the notice’s original
   score (an 11-point drop rendered as “85  84”). The arrow now starts from the 
   score the current drop is measured against.

#### 0.12.0

 * NEW: **The Watch** — TibaCheck now re-runs its read-only audit
    automatically
   once a week (WordPress’s built-in scheduler; no external requests). When a check
   gets worse than the previous audit (manual or automatic), or the health score
   drops by 10 points or more, an admin notice names what changed. With no previous
   audit, the first run just sets the baseline. Manual runs clear the notice; deactivation
   stops the Watch.
 * Fixed: the plugin version constant had drifted from the
    release version (it 
   still read 0.9.3 at 0.11.1). Header, constant, and Stable tag are back in agreement.

#### 0.11.1

 * Plugins Review catalog: TibaCheck Pro is now categorized
    (security, scanner 
   role) instead of Not yet categorized, and TibaCheck itself moves from Utilities
   to Security (audit role). Catalog: 169 entries.
 * Fixed a role-model defect the catalog review exposed: the
    security category 
   default role reused the bundle exemption token, so two firewall suites could 
   never be flagged as overlapping. They now can; layered sub-jobs (firewall + two-
   factor + audit + scanner) still do not flag.

#### 0.11.0

 * Client report restyled as a formal audit document: serif
    display type, document-
   control meta table, numbered sections, attestation footer. Same design family
   as the paid report; content and claims unchanged.

#### 0.10.3

 * Client report design refresh: typography scale, grid summary
    cards, styled tables.
   Same design language as the paid report.

#### 0.10.2

 * The client report gains a Back to Site Audit button.

#### 0.10.1

 * Author name aligned to Geoffrey Juma across both plugins.

#### 0.10.0

 * NEW: printable client report. A branded document (score
    cards, every check with
   its detail, plugin and OWASP coverage summaries) opens from the audit page and
   prints or saves to PDF cleanly. It runs the same read-only audit fresh when opened—
   consistent with the plugin’s storage disclosure, no full report is stored.

#### 0.9.3

 * Fixed (from a real Plugin Check run on a live site): the Plugin overlap message
   used unordered translation placeholders (numbered now), and the Application passwords
   lookup no longer uses a meta_query — it reads the indexed usermeta table directly,
   with a “cannot confirm” state if the database does not answer. That run’s only
   other outcome was the proof we wanted: **zero findings on every direct database
   query** in the plugin, Persistence Pack included.

#### 0.9.2

 * Catalog accuracy audit (independent review, per the rule that we classify only
   what we can verify): TibaCheck now **knows itself** — it, Plugin Check, and Essential
   Addons for Elementor (plus its sibling add-on packs) are cataloged, so they no
   longer land in “Not yet categorized.” Corrections from the audit: a dead Asset
   CleanUp key fixed to its real folder name; a phantom Solid Security key replaced
   with the real Pro/current folders; the Matomo connector is no longer misdescribed
   as self-hosted analytics, and Matomo Analytics itself was added; backup tools
   and one-shot migration tools no longer count as the same job; media library/slider
   and membership/profile pairings split so deliberate combinations do not false-
   flag; block libraries are exempt from overlap (additive by design); two purposes
   reworded to drop stale or marketing claims — including our own (“saves nothing
   but its own last report,” matching the readme disclosure).

#### 0.9.1

 * Fixed (independent review of 0.9.0): Plugin overlap now judges by **job = category
   + role**, so layered stacks and components no longer false-flag: a firewall plus
   two-factor plus a login limiter is one security posture; a store plus its payment
   gateways is one store; add-ons (Elementor Pro) and suites (Jetpack) never count
   as duplicates; the utilities drawer is no longer judged at all. The PASS message
   now claims only what was actually judged (recognized active plugins), and if 
   no active plugin is recognized the check says “could not be judged” instead of
   passing. Must-use plugins: the name-only caveat moved into the result message
   itself, the generic `mu-plugin.php` name no longer counts as recognized, and 
   recognized files are listed with their on-disk filenames.

#### 0.9.0

 * New: a **Plugins Review** section in every report — every installed plugin grouped
   by the job it does (backups, security, SEO, speed, forms, builders, store, analytics,
   spam, media, email, languages, utilities) with a one-line purpose and active/
   inactive state, from a curated local catalog of 150+ well-known plugins. A new**
   Plugin overlap** check (the audit now runs twenty-three checks) flags repetitive
   plugins: two or more ACTIVE plugins doing the same job, named. Plugins we do 
   not recognize are listed as “not yet categorized” — never guessed at.
 * Improved: **Must-use plugins & drop-ins** no longer warns on every managed-hosting
   site. Files are now matched by name against the drop-ins WordPress core itself
   defines plus the loader files major managed hosts install (Bluehost/Endurance,
   GoDaddy, Kinsta, Pantheon, WP Engine’s loader): when everything present is recognized,
   the check passes and lists the names — with the plain caveat that matching is
   by file name, not contents, so a familiar name is not proof a file is genuine.
   Anything unrecognized still warns and is named separately, so nothing is hidden.(
   The refinement recorded by the 0.8.0 independent review.)

#### 0.8.1

 * Fixed (independent review of the Persistence Pack): Cron job origins now recognizes
   major plugins whose hook prefixes differ from their folder names (Yoast, MonsterInsights,
   Bluehost, UpdraftPlus, and dozens more) and words its findings as “could not 
   match” instead of overclaiming; Database triggers can no longer report a silent
   all-clear when the database user lacks trigger visibility (privilege probe + 
   Plugin Check annotations added); Code in uploads now stops at its safety cap 
   and reports partial scans honestly instead of passing; Privilege audit fetches
   and caches users in bulk (no per-account query storm on large sites).

#### 0.8.0

 * New: the **Persistence Pack** — seven checks that hunt how malware survives, 
   not just how it gets in: **Privilege audit** (power vs. role labels), **Must-
   use plugins & drop-ins** census, **Database triggers** inspection, **Cron job
   origins**, **Code in uploads**, **Server prepend directives**, and **Application
   passwords** inventory. The audit now runs twenty-two checks, and the OWASP coverage
   grows to six of ten categories (A07 Authentication and A08 Integrity now assessed).
   Includes an honesty note on what in-plugin detection can and cannot prove.

#### 0.7.3

 * Internal: code-comment precision and an explicit date-parse guard in the User
   accounts check (independent review). No behavior change.

#### 0.7.2

 * Smarter User accounts check: on a site whose oldest admin account is itself under
   30 days old, new admin accounts are the founders — the check now passes with 
   a note to eyeball the names instead of raising a false alarm. On older sites 
   a fresh admin account still warns, exactly as before.

#### 0.7.1

 * Fixed (independent review): printing the report now includes both tabs — the 
   hidden tab no longer vanishes from printouts; keyboard focus is visible on the
   tab controls.

#### 0.7.0

 * Improved: the report is now tabbed — **Health Check** and **Security Scan** (
   OWASP-mapped checks plus the Top 10 coverage table) — so a fifteen-check report
   reads in two short views, with attention badges on each tab.

#### 0.6.1

 * Robustness: malformed check results now surface as a visible warning instead 
   of vanishing; score engine hardened against unexpected statuses. (Independent
   review polish — no behavior change.)

#### 0.6.0

 * New: **Site Health Score** and **OWASP Security Score** headline every report,
   with score trends versus your previous run.
 * New: **OWASP Top 10 (2021) coverage table** — each category shows its assessed
   status and basis, or is honestly marked “not assessed” (those need an external
   deep scan).
 * Fixed (independent review): the hidden-account test no longer false-alarms on
   multisite; audit queries are deliberately uncached so a re-run always shows the
   current truth; the runner now survives PHP Errors, not just Exceptions; the updates
   check reports “unknown” instead of a false PASS when WordPress has never checked;
   registration grading follows the network setting on multisite; PHP grades now
   treat 7.4–8.0 as end-of-life; several accuracy and translation fixes.

#### 0.5.2

 * Fixed: the three read-only aggregate queries (user count, autoload size) are 
   now wrapped in a short-lived object cache, per WordPress coding standards — Plugin
   Check runs fully clean again.

#### 0.5.1

 * Improved: results are now ordered by severity — failures first, then warnings,
   then passes — so the report reads in fix-it order.
 * Fixed: autoload size now counts the newer WordPress autoload values (‘on’/’auto’,
   WP 6.6+) as well as the classic ‘yes’, so the total is no longer understated.

#### 0.5.0

 * Four new checks: **Autoload size** (names the biggest offenders), **Cron health**(
   catches silently stalled scheduled tasks), **Comment queues** (spam pile-up),
   and **PHP extensions**. The audit now runs fifteen checks.

#### 0.4.0

 * Six new checks, each chosen because it is something a care plan watches monthly:**
   Registration safety** (FAILs on open registration with an Administrator default
   role), **File editor**, **Debug display**, **Search visibility**, **SSL / HTTPS**,
   and **Permalafety** (FAILs on open registration with an Administrator default
   role), **File editor**, **Debug display**, **Search visibility**, **SSL / HTTPS**,
   and **Permalinks**. The audit now runs eleven checks.

#### 0.3.0

 * New check: **User accounts** — lists every administrator by name after each scan,
   flags admins named “admin”, brand-new admin accounts, and long admin lists, and
   fails loudly if the database holds users that WordPress queries cannot see (the
   hidden-backdoor pattern).

#### 0.2.3

 * Improved: header polish — the brand line “Know what’s wrong before it breaks”
   now leads the page, with a larger title, bigger logo, and a cleaner divider.

#### 0.2.2

 * Improved: branded report header with the TibaCheck logo, the results table in
   a rounded card, and the care-plan message presented as a proper callout panel.

#### 0.2.1

 * Improved: color-coded results — green/amber/red status pills, colored summary
   bar (passing / needs attention / failing), and bold statuses so the report reads
   at a glance.

#### 0.2.0

 * New: inactive plugins & themes check (unused code is attacker territory).
 * New: backup status check (honest heuristic — warns when no backup tool is detected).
 * Fixed: child-theme parents no longer miscounted as inactive themes.

#### 0.1.0

 * Initial release: software-updates check and PHP-version check, Tools  Site Audit
   page.

## Meta

 *  Version **0.12.1**
 *  Last updated **21 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [audit](https://wordpress.org/plugins/tags/audit/)[security](https://wordpress.org/plugins/tags/security/)
   [site health](https://wordpress.org/plugins/tags/site-health/)[updates](https://wordpress.org/plugins/tags/updates/)
 *  [Advanced View](https://wordpress.org/plugins/tibacheck-site-audit/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/tibacheck-site-audit/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/tibacheck-site-audit/reviews/)

## Contributors

 *   [ omwamij ](https://profiles.wordpress.org/omwamij/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/tibacheck-site-audit/)