Multisite: only super admins can enable Allow Private IPs #6
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eric/apprise-wordpress-notifications#6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found in security audit run 3 (2026-10-16,
06d630d), where it was recorded as needs-validation. Decision: subsite admins should not get internal-network reach.Problem
On multisite, a subsite administrator holds
manage_optionsbut not network-level trust. Core denies them plugin install, file editing andunfiltered_html, and core's own fetches of user URLs usewp_safe_remote_*. This plugin still lets them:allow_private_ips = 1.sanitize_settings()atincludes/class-apprise-admin-settings.php:270has no multisite or super-admin check, and coreoptions.phpauthorizes the save with per-sitemanage_options.api_urlat an RFC1918 or link-local address.:811). The web server sends the request there, and the transport error or status code comes back, showing whether the host and port are reachable.The update checker already defers to the main site on multisite (
class-apprise-update-checker.php:166,187). This setting does not.Design
sanitize_settings(), whenis_multisite() && ! is_super_admin(), ignore the submittedallow_private_ipsand keep the stored value.render_allow_private_ips_field(), show the checkbox disabled for those users, with a note that only a network administrator can change it.apprise_notifications_allow_private_ipfilter.is_multisitetrue andis_super_adminfalse,sanitize_settings()keeps the previous value for both'1'and'0'input. Withis_super_admintrue, the submitted value is saved.The verifier's harness
VerifierMultisitePrivateIpTest.php(in the run-3 audit artifacts) already sets up the multisite stubs.