This repository was archived by the owner on Aug 8, 2026. It is now read-only.
WP Sudo 4.5.0 — Session Governance, Admin UX & Security Hardening #151
dknauss
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Recommended security update. 4.5.0 bundles everything landed on
mainsincev4.2.2 — two completed milestones (v4.4.0 Two Factor Lifecycle Bridge and v4.5
Session Governance & Admin UX) plus two backward-compatible security-hardening
fixes. No migration required.
🔒 Security hardening
the acting user to actually hold the promoting authority —
promote_usersforadministrator grants (checked on the target blog) or existing super-admin for
grant_super_admin— in addition to an active sudo session. Sudo isreauthentication, not authorization: a low-privilege account can hold a sudo
session, so requiring the session alone could wave through an escalation
reached via a broken-access-control route. Blocked grants still fire
wp_sudo_escalation_blocked.and the new bulk action) now requires the operator's token-bound sudo session,
not just a live expiry timestamp. A stolen auth cookie — or a second session
without its own sudo — can no longer revoke other users' sessions. Revoking
several sessions in a row no longer forces a re-challenge between them.
✨ Session governance & admin UX
sessions" entry in the Users-list Bulk actions dropdown (filter to the Sudo
Active view, select, apply) — replacing the old toolbar button and its
confirmation interstitial, mirroring core's password-reset bulk action. It
enforces operator token-bound sudo, consumes one rate-limit slot per batch,
skips your own row, and — hardening from external review — runs from a
nonce-verified interceptor with a current-site membership guard, so forged user
IDs can't revoke or probe other sites' sessions on multisite. Site-wide revoke
remains available via
wp sudo revoke --all.shows
session_revokedevents with the reason tag and operator, and givesescalation_blockeda readable "Escalation" label with distinct pill styling.lists each capability on its own line with a human-readable label and a paired
Revoke control — developer-centric slugs move to a hover tooltip and a
screen-reader span instead of prominent run-on text. Each Revoke button gets a
capability-specific accessible name, labels are translatable, and the revoke JS
removes the whole item on success (no stale lingering entry).
the capability it actually scans (
manage_network_optionson multisite) and nolonger false-flags super admins as unable to access Sudo settings.
🔗 Two Factor lifecycle bridge
profile.php/
user-edit.phpprovider lifecycle changes — enabling/disabling a provider,changing the primary provider, and TOTP enrollment/removal — behind an active
sudo session. Unrelated profile saves and normalized no-op resubmissions are
not gated.
🌐 Localization packaging
languages/wp-sudo.pot,the committed release-grade POT template, and documented workflow.
Compatibility
Requires WordPress 6.4+ and PHP 8.2+. No migration required.
Full Changelog: v4.2.2...v4.5.0
This discussion was created from the release WP Sudo 4.5.0 — Session Governance, Admin UX & Security Hardening.
All reactions