Skip to content
This repository was archived by the owner on Aug 8, 2026. It is now read-only.

WP Sudo v3.2.0 — Research Snapshot

Pre-release
Pre-release

Choose a tag to compare

@dknauss dknauss released this 08 Jun 22:01
· 712 commits to main since this release

Versions before 4.9.0 automatically replayed an intercepted request after reauthentication (#322). Do not use this version.

RESEARCH PROTOTYPE ONLY. Do not install on production, public staging, or any site containing real users, credentials, or data. Use only in WordPress Playground or a disposable local test environment.

WP Sudo 3.2.0

Security hardening and release-readiness release for WordPress 7.0.

Playground

Stable release demo:

https://playground.wordpress.net/?blueprint-url=https%3A%2F%2Fraw.githubusercontent.com%2Fdknauss%2FSudo%2Fv3.2.0%2Fblueprint.json

Demo credentials are admin / password; use password again for the WP Sudo reauthentication challenge.

Current main development demo:

https://playground.wordpress.net/?blueprint-url=https%3A%2F%2Fraw.githubusercontent.com%2Fdknauss%2FSudo%2Fmain%2Fblueprint-main.json

Governance and capabilities

  • Adds the sudo_can() helper and fine-grained governance capabilities for WP Sudo administration.
  • Adds the Settings > Sudo Access tab for role/user grants and revocations, with gated grant/revoke actions and audit hooks.
  • Maps WP Sudo capability checks into WordPress capability checks for external tools and WP-CLI visibility.
  • Clarifies admin Help and public docs language around authentication vs authorization: Sudo verifies the account holder is still present; WordPress and target handlers still decide whether the user is allowed to perform the action.

Security hardening

  • Hardens 2FA lockout behavior so password success cannot clear counters before second-factor success.
  • Adds WPGraphQL request classification for JSON, GET/form, multipart operations, batches, tokenizer edge cases, and persisted-query fail-safe behavior.
  • Extends REST plugin gating to folder-style plugin slugs.
  • Fails closed on PCRE errors in built-in rules.
  • Gates WP Sudo settings writes on non-interactive surfaces.
  • Gates admin_email / new_admin_email writes on interactive and REST surfaces.
  • Changes IP lockout to ip + user_id to avoid shared-IP administrator DoS.
  • Honors FORCE_SSL_ADMIN for sudo/2FA cookie Secure flags.
  • Hardens REST cookie-vs-App-Password branch selection.
  • Minimizes request stash replay data, including suffix-based secret redaction and rule allowlists.
  • Validates App Password policy UUID ownership and cleans entries on App Password deletion.
  • Adds Site Health visibility when built-in gated actions are accidentally removed by filters.
  • Adds uninstall defense-in-depth while preserving WP-CLI uninstall behavior.

WordPress 7.0 and CI/release hygiene

  • Moves forward CI/local preview lanes from WordPress 7.0-RC1 to 7.0 GA.
  • Refreshes release-status, roadmap, current metrics, and SBOM metadata.
  • Stabilizes E2E challenge fixtures and wp-env helper behavior.
  • Shards the default Chromium Playwright E2E suite across four GitHub Actions runners while preserving the aggregate E2E Tests required check.
  • Includes final dependency and CI-maintenance merges: phpstan/phpstan 2.2.2, vimeo/psalm 6.16.1, codecov/codecov-action 7, actions/checkout 6, actions/github-script 9, and CI MySQL service pull routing through ECR Public.

Validation

Release tag v3.2.0 points to commit a06197f, after all latest Dependabot, CI maintenance, E2E sharding, and auth-boundary Help/docs copy updates were merged.

Original release validation included: composer validate --strict, composer verify:metrics, composer test:unit, composer test:integration, composer analyse, composer analyse:psalm, composer lint, composer audit, composer sbom, git diff --check, and Playwright test listing (61 tests).

Final retag validation included: targeted Admin Help unit coverage, composer test (777 tests, 2220 assertions), composer analyse, composer lint, and git diff --check.