- Affected version
- ALL
If an error occurs during an attempt to read the install-lock.php file, XenForo handles the exception gracefully and returns false, as shown in the code below:
This behavior inadvertently allows anyone to reset the XenForo database by accessing the installation path if the cloud storage provider (e.g., DigitalOcean Spaces, AWS S3) is temporarily unreachable.
A current real-world example is the ongoing DigitalOcean Spaces outage: https://status.digitalocean.com/incidents/jm44h02t22ck.
PHP:
public static function installLockExists()
{
try
{
// If this path doesn't exist, then this will throw an exception. We need to handle this elsewhere.
return \XF::fs()->has('internal-data://install-lock.php');
}
catch (\Exception $e)
{
return false;
}
}
A current real-world example is the ongoing DigitalOcean Spaces outage: https://status.digitalocean.com/incidents/jm44h02t22ck.
XenForo should distinguish between:- The actual absence of the install-lock.php file.
- An inability to access the cloud storage system due to connectivity issues.