Title: SudoWP Radar
Author: sudowp
Published: <strong>Март 23, 2026-ж.</strong>
Last modified: Март 23, 2026-ж.

---

Плагиндерди издөө

![](https://ps.w.org/sudowp-radar/assets/banner-772x250.png?rev=3489471)

![](https://ps.w.org/sudowp-radar/assets/icon-256x256.png?rev=3489471)

# SudoWP Radar

 Автору [sudowp](https://profiles.wordpress.org/sudowp/)

[Жүктөө](https://downloads.wordpress.org/plugin/sudowp-radar.1.0.1.zip)

 * [Кенен маалымат](https://ky.wordpress.org/plugins/sudowp-radar/#description)
 * [Сын-пикирлер](https://ky.wordpress.org/plugins/sudowp-radar/#reviews)
 *  [Орнотуу](https://ky.wordpress.org/plugins/sudowp-radar/#installation)
 * [Development](https://ky.wordpress.org/plugins/sudowp-radar/#developers)

 [Колдоо](https://wordpress.org/support/plugin/sudowp-radar/)

## Сүрөттөө

SudoWP Radar is a runtime security auditor for the WordPress 6.9 Abilities API. 
It scans every registered ability across all active plugins and themes, applying
a rule engine that detects the vulnerability patterns most likely to be exploited
in production.

**What it audits:**

 * **Open and weak permissions** — abilities with no permission_callback, or one
   that allows any authenticated user through.
 * **Missing or loose input schemas** — abilities that accept unconstrained string
   inputs, creating potential injection vectors for path traversal, SSRF, and similar
   attacks.
 * **REST overexposure** — abilities marked show_in_rest with no or open permission
   control, accessible to unauthenticated callers.
 * **MCP overexposure** — abilities marked meta.mcp.public = true with a weak or
   null permission callback are directly callable by any connected AI agent. Flagged
   as CRITICAL.
 * **Orphaned callbacks** — execute_callbacks that reference functions no longer
   loaded, often left behind by deactivated plugins.
 * **Namespace collisions** — duplicate ability names where the last registration
   silently overwrites the first, potentially downgrading the permission model.

**How it works:**

SudoWP Radar reads the live abilities registry after all plugins and themes have
loaded. It applies static rules to each ability and returns a structured findings
report with severity ratings (Critical, High, Medium, Low) and actionable remediation
guidance. A risk score from 0-100 summarises the overall exposure of the site.

**Security model:**

 * Requires the `radar_run_audit` capability (granted to site administrators by 
   default).
 * All audit requests are nonce-gated. No public-facing endpoints.
 * Audit findings are stored in user meta, not global options.
 * Rate-limited to one audit per 30 seconds per user.

**Optional premium extension (SudoWP Pro):**

The free plugin is a fully functional standalone security auditor. An optional premium
add-on extends it with SudoWP Vulnerability Dataset matching (CVE references, CVSS
scores, patch guidance), scheduled audits with email alerts, multi-site dashboard
aggregation, and report export. None of these are required to use the core auditing
features.

SudoWP Radar is a complement to static analysis tools. It audits the live, runtime
state of your site — what is actually registered and executing — not just what is
declared in code.

### Premium Extension Filters

SudoWP Radar exposes four WordPress filters so a premium plugin can extend
 the 
audit engine without modifying core plugin files.

#### radar_dataset_enabled

Controls whether dataset lookups run during an audit. Return true to activate.

Parameters:
 $enabled (bool) — default false. Returns: bool

Example:

    ```
    add_filter( 'radar_dataset_enabled', function ( bool $enabled ): bool {
        return true; // Enable dataset lookups.
    } );
    ```

#### radar_dataset_findings

Inject Finding objects from a vulnerability dataset for a specific ability.
 Called
once per ability during an audit. Non-Finding return values are stripped.

Parameters:
 $findings (array) — current Finding[] for this ability, default [].
$ability (array) — ability data array from Scanner (name, meta, callbacks, etc.).
Returns: Finding[]

Note: register with accepted_args=2 to receive both parameters.

Example:

    ```
    add_filter(
        'radar_dataset_findings',
        function ( array $findings, array $ability ): array {
            if ( str_starts_with( $ability['name'], 'my-plugin/' ) ) {
                $findings[] = new \SudoWP\Radar\Finding(
                    ability_name:   $ability['name'],
                    severity:       \SudoWP\Radar\Finding::SEVERITY_CRITICAL,
                    vuln_class:     \SudoWP\Radar\Finding::VULN_DATASET_MATCH,
                    message:        'Known vulnerable ability pattern detected (CVE-2026-1234).',
                    recommendation: 'Update my-plugin to version 2.1.0 or later.',
                    is_premium:     true,
                );
            }
            return $findings;
        },
        10,
        2
    );
    ```

#### radar_dataset_status

Override the dataset status array displayed in the admin UI.

Parameters:
 $status (array) — default status with keys: enabled (bool) — false 
in free version. label (string) — UI display string. last_updated (string|null) —
ISO 8601 date or null. total_entries (int) — 0 in free version. Returns: array (
same shape as input)

Example:

    ```
    add_filter( 'radar_dataset_status', function ( array $status ): array {
        return [
            'enabled'       => true,
            'label'         => 'SudoWP Vulnerability Dataset: Connected. 4,821 entries.',
            'last_updated'  => '2026-03-08',
            'total_entries' => 4821,
        ];
    } );
    ```

#### radar_audit_findings

Modify the complete findings array after all rules and dataset lookups have run.

Use this to add cross-ability findings, re-score existing findings, or suppress 
false positives. Called once per full audit run.

Parameters:
 $findings (array) — complete Finding[] from the full audit. $abilities(
array) — all ability data arrays scanned during this audit. Returns: Finding[]

Note: register with accepted_args=2 to receive both parameters.

Example:

    ```
    add_filter(
        'radar_audit_findings',
        function ( array $findings, array $abilities ): array {
            // Example: promote medium findings to high for a high-risk site.
            return array_map( function ( $finding ) {
                if ( $finding->severity === \SudoWP\Radar\Finding::SEVERITY_MEDIUM ) {
                    return new \SudoWP\Radar\Finding(
                        ability_name:   $finding->ability_name,
                        severity:       \SudoWP\Radar\Finding::SEVERITY_HIGH,
                        vuln_class:     $finding->vuln_class,
                        message:        $finding->message,
                        recommendation: $finding->recommendation,
                        context:        $finding->context,
                        is_premium:     $finding->is_premium,
                    );
                }
                return $finding;
            }, $findings );
        },
        10,
        2
    );
    ```

## Орнотуу

 1. Upload the `sudowp-radar` directory to `/wp-content/plugins/`.
 2. Activate the plugin through the Plugins screen in WordPress.
 3. Navigate to Radar in the admin menu.
 4. Click “Run Audit” to scan your site’s registered abilities.

WordPress 6.9 or higher is required. The plugin will display an admin notice and
deactivate gracefully on older versions.

## FAQ.KG

### Does this plugin modify my site?

No. SudoWP Radar is a read-only auditor. It reads the Abilities registry and reports
findings. It does not modify any registered abilities, alter plugin settings, or
write to the database (other than storing the last audit report in your own user
meta).

### What does a “Critical” finding mean?

Critical findings are abilities that any authenticated (or in some cases unauthenticated)
user can execute. These represent the highest risk and should be addressed before
lower severity findings.

### Will this slow down my site?

The audit runs on demand only, triggered by clicking the “Run Audit” button on the
admin page. It does not run automatically and has no effect on front-end performance.

### Is there a REST API?

SudoWP Radar registers a `sudowp-radar/audit` ability via the WP Abilities API, 
allowing MCP-connected AI agents to trigger audits programmatically. REST exposure
is disabled by default.

### What PHP version is required?

PHP 8.1 or higher. The plugin uses constructor property promotion, readonly properties,
and named arguments.

## Сын-пикирлер

There are no reviews for this plugin.

## Contributors & Developers

“SudoWP Radar” is open source software. The following people have contributed to
this plugin.

Мүчөлөрү

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

[Translate “SudoWP Radar” into your language.](https://translate.wordpress.org/projects/wp-plugins/sudowp-radar)

### Interested in development?

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

## Өзгөртүүлөр

#### 1.0.1

 * Security: Added filter output validation to ensure only Finding instances are
   processed.
 * Hardening: Prefixed all constants from RADAR_* to SUDOWP_RADAR_* to prevent namespace
   collisions.

#### 1.0.0

 * Initial release.
 * Scans abilities for open/weak permissions, missing input schemas, REST overexposure,
   MCP overexposure, orphaned callbacks, and namespace collisions.
 * Admin page with Run Audit button and severity-sorted findings list.
 * Risk score from 0-100.
 * Premium dataset stub with four extension filters.
 * Registers `sudowp-radar/audit` ability for MCP agent access.

## Мета

 *  Нуска **1.0.1**
 *  Акыркы жаңыртуу **2 ай мурун**
 *  Активдүү орнотуулар **Fewer than 10**
 *  WordPress нускасы ** 6.9 же андан жогору **
 *  Tested up to **6.9.4**
 *  PHP нускасы ** 8.1 же андан жогору **
 *  Тил
 * [English (US)](https://wordpress.org/plugins/sudowp-radar/)
 * Тег:
 * [abilities-api](https://ky.wordpress.org/plugins/tags/abilities-api/)[audit](https://ky.wordpress.org/plugins/tags/audit/)
   [permissions](https://ky.wordpress.org/plugins/tags/permissions/)[scanner](https://ky.wordpress.org/plugins/tags/scanner/)
   [security](https://ky.wordpress.org/plugins/tags/security/)
 *  [Advanced View](https://ky.wordpress.org/plugins/sudowp-radar/advanced/)

## Рейтинг

Азырынча эч кандай сын-пикир жок.

[Your review](https://wordpress.org/support/plugin/sudowp-radar/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/sudowp-radar/reviews/)

## Мүчөлөрү

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

## Колдоо

Комментарийлер барбы? Жардам керекпи?

 [Колдоо форумун көрүү](https://wordpress.org/support/plugin/sudowp-radar/)