Opened 2 years ago

Closed 8 months ago

Last modified 8 months ago

#16740 closed defect (bug) (fixed)

Calling wpmu_delete_blog with $blog_id delete all database tables

Reported by: mblanc Owned by:
Priority: normal Milestone: 3.3
Component: Multisite Version: 3.1
Severity: major Keywords:
Cc:

Description

When calling the wpmu_delete_blog function with a blog_id of 1, get_blog_prefix called by this function returns a dangerous (for the delete purpose) prefix (i.e. 'wp\_%', assuming the installation prefix was 'wp_').

Since tables returned by "SHOW TABLES LIKE 'wp\_%'" are deleted, all the Wordpress tables are destroyed.

Of course, the backoffice doesn't allow an admin to delete the blog 1, but it might be a safe idea to prevent this by checking that $blog_id passed to wpmu_delete_blog is never 0 or 1 since any plugin can call it with a wrong parameter.

Attachments (2)

wpmu_delete_blog.patch (355 bytes) - added by mblanc 2 years ago.
Crude small fix actually running here
16740.patch (484 bytes) - added by hakre 2 years ago.
Mind the vartype (%d is used later on)

Download all attachments as: .zip

Change History (10)

  • Component changed from Security to Network Admin

Sounds like a good idea.

PS: We call the backoffice the admin area. ;)

  • Component changed from Network Admin to Multisite

mblanc2 years ago

Crude small fix actually running here

It take note for 'Admin area'. Too much SPIP probably ;)

hakre2 years ago

Mind the vartype (%d is used later on)

Thanks for reporting the issue, patch added to ensure the vartype of $blog_id is integer while performing the same check as in wpmu_delete_blog.patch.

  • Keywords has-patch added; needs-patch removed

comment:6   ryan2 years ago

Older MU installs will have a wp_1_* prefix for blog ID 1. These patches would prevent deleting that blog even though it isn't dangerous. Probably not worth caring about, however.

  • Keywords has-patch removed
  • Milestone Awaiting Review deleted
  • Resolution set to fixed
  • Status changed from new to closed

fixed in [19038]

  • Milestone set to 3.3
Note: See TracTickets for help on using tickets.