The update mechanism of the popular Drupal content management system is insecure in several ways, allowing attackers to trick administrators into installing malicious updates.
Researcher Fernando Arnaboldi from security firm IOActive noticed that Drupal will not inform administrators that an update check has failed, for example due to inability to access the update server. Instead, the back-end panel will continue to report that the CMS is up to date, even if it’s not.
This can be a problem, considering that hackers are quick to exploit vulnerabilities in popular content management systems like Drupal, WordPress or Joomla, after they appear. In one case in 2014, users had only a seven-hour window to deploy a critical Drupal patch until attackers started exploiting the vulnerability that it fixed.
After investigating further, Arnaboldi found that the Drupal updates are not performed over HTTPS, which means that the connections are not encrypted and can potentially be hijacked by man-in-the-middle attackers.
The CMS first downloads an XML file from the updates.drupal.org server and checks to see if the version inside it matches the one installed. If the XML file lists a newer version, the CMS will display an alert in the administration panel that an update is available. It will also provide a download link for the new version, which is also obtained from the XML file.
This means that if an attacker is in a position to intercept network traffic between the Drupal website and the Drupal update server, he can serve a rogue XML file with a link pointing to a backdoored version of the CMS, Arnaboldi explained.
Updating Drupal itself is a manual process, so the attacker would have to wait for the administrator to manually download the rogue update and install it.
However, updating individual Drupal modules — extensions to the CMS — is semi-automatic. The administrator only needs to click the download button for a module update and it will be installed automatically.
The process for module updates is also unprotected and can be similarly hijacked. A rogue module update can give the attacker the ability to execute code on the Web server or to access the site’s database, according to Arnaboldi.
A third issue is with the link that allows administrators to manually check for updates, which is vulnerable to cross-site request forgery attacks. This means that if an administrator visits an attacker-controlled website, that website can silently force his browser to trigger repeated update checks for the Drupal installation that he’s logged into.
This is a form of session hijacking and the attack can force the affected website to consume network bandwidth by repeatedly requesting information from updates.drupal.org.
These issues are not yet fixed, so Drupal administrators might want to manually download all updates for Drupal and its modules themselves for the moment, Arnaboldi said in a blog post.