
Drupal uses an open security model, to publish vulnerabilities, issue patches for known vulnerabilities and get independent audit of security issues using third party tools and its vast community. With over 4000s contributed modules, the practices of Drupal.org, with it’s open security model, make it one of the most secure platforms to do business online and leverage community contribution toward a secure platform.
For the average Drupal site all that needs to be done is to keep its modules up-to-date and also the Drupal core version, which as of this writing is Drupal 6.12 and 5.18. Some deployments of Drupal have massive changes to the core, which should be an expecption managed by the client (that engages in the development effort, understands risks and alternatives) – that if changes are made to the core or to a contributed module, then there is an strategy in place to test the site for various security issues, independently of Drupal.
Nate at Lulabot makes an interesting article that compares two software approaches to security – open and closed reporting of security. The independent Security advisory reporting site Secunia, for Drupal has 80 reports, while ExpressionEngine has 1, over a three year period. Secunia specifically states "The statistics provided should NOT be used to compare the overall security of products against one another."
In his article, Nate shows three vulnerabilities - a simple XSS attack, unauthorized deletion of private message files, and allowing of arbitrary code execution (dangerous enough that he e-mailed the developers at ExpressionEngine directly). Unsurprisingly, none of these issues were reported to Secunia.
Drupal believes in an open security policy. Because all the source code is available at all times, attempting to cover-up security problems by discreetly slipping it into an update isn't viable, because all the changes between versions can be tracked. The fixing of the bug usually happens through a special security process, where the security team is notified via e-mail. The problem is fixed in the source code, then an announcement is made as quickly as possible that an update needs to be applied.
This explains the 80+ vulnerabilities listed by Secunia on Drupal, because every security problem is handled in a public manner. Websites running insecure versions of modules are notified via the Update Status module, strongly encouraging administrators to update the module as soon as possible.
While there is nothing wrong with discreetly fixing bugs, doing so can make it more difficult to find the exact exploit. Since most web applications are delivered in a parsable scripting language (such as Perl, Python, PHP, JavaScript, ASP, etc.) the full source code of these applications is available to anyone that has ever installs the software. It only takes a single, well-informed user (hacker) to read through the code, and expose potential threats. The "security by obscurity" approach, while always dangerous, has even less effectiveness when the source code is readily available.
Dries in his blog makes the case for how every module maintainer can become responsible for managing their own security issues and publishing their own security advisories. By distributing the workload, we scale the security team to work within any size community, and we move the security team -- and Drupal's security model -- to the next level.
Here are list of 10 things to ensure a secure, scalable deployment:
Overall, Drupal is one of the best secure CMS for the web. If Barack Obama is using it for recovery.gov which is a US government site, it does give this argument a rest, in my opinion.
I have never ever places a
I have never ever places a drupal site online with hacked core. It makes the upgrade path completely useless, so I make sure my core stays clean.
I've only had a module update fail once, and that was because I had overridden a theming function and they changed it's name... took like 10 mins to find
so yea... don't hack core and updates will be a walk in the park :)
nice article btw
Security
Always a hot toppic when doin' business with the government. Drupal is indeed vulnerable when being open source; but also very flexible when problems occur. And in this model a security bug or failure is rapidly fixed and patched in seconds. Good awareness.
Actually, you should NEVER change core...
You wrote "Some deployments of Drupal have massive changes to the core", "that if changes are made to the core or to a contributed module, then there is an strategy in place to test the site for various security issues,"
It's considered extremely bad practice to change anything in core Drupal. It's also almost never necessary if you know what you are doing. (You can almost always write custom module code to avoid it) In Drupal, hacking core is considered to be equal to killing kittens: don't do it. No, really, DO NOT DO IT. Developers who do hack core need to learn better Drupal skills.
Changing contributed modules is often not needed either (occasions do arise, rarely). When you do, the concern about security is an issue, but no more than so writing a custom module: you wrote it, and if it breaks into 2 pieces, you need to fix it. If you needed to patch it, you should be contributing the patch back on drupal.org for others to review and hopefully approve and/or find issues with...
good collection
thank your for this list
Sure
No problem, you welcome!