Drupalは、クロスプラットフォームのオープンソース管理システム(CMS)として人気が高く、インターネット上の膨大な数のサイトで利用されています。

先日、重大なSQLインジェクション脆弱性:Drupal 7 SQLインジェクション(CVE-2014-3704)が発見されました。このSQL脆弱性を悪用すれば、特殊な細工をしたHTTP要求によってデータベースに対してリモートSQLコマンドを実行できます。

皮肉なことに、この脆弱性は、まさにこのような攻撃を防御するDrupalのデータベース抽象化層に存在します。

任意のユーザが攻撃を仕掛けることができ、認証やソーシャルエンジニアリングも必要ありません。脆弱性の悪用には、「name」という名前のHTTPパラメータが使用されます。正常なHTTP POSTリクエストの値は次のようになります。

name=value

エクスプロイトの例は、以下のようになります。

name[0;SQL command;#]=value

このように、値ではなくパラメータ名を操作する点が、ほとんどのSQLインジェクション攻撃と異なる特徴です。Barracuda Web Application Firewallバージョン7.9以降であれば、この攻撃への対策をあっという間に講じることができます。手順としては、[セキュリティポリシー]>[パラメータプロテクション]を選択し、[パラメータ名の検証]を[はい]に設定します。

これにより、既知、未知、今後登場するゼロディSQLインジェクション攻撃すべてに対処することができます。

次に、悪用例を示します。

この脆弱性について

Drupalは、インターネットサイトのおよそ1.9%で使用されており、インターネット全体の上位1万サイトの3.5%、10万サイトの3.2%を占めます。

脆弱性情報データベースであるNVD(National Vulnerability Database)はこの脆弱性の危険度を10とし、「高度な知識を持たないスクリプト初心者でも簡単に悪用できる」としています。

攻撃者は、CMSのデータベースをコントロールすることにより、システムを完全に乗っ取ることができます。システムのユーザは、システムが乗っ取られても、攻撃に気付かないケースがほとんどでしょう。

Drupalは大きな成功を収めたシステムであり、多数の開発者とユーザがコミュニティを形成しています。しかし、HeartbleedやShellShockが示すように、ユーザ数が多いからといって完全に信頼できるセキュリティ機能が存在するわけではありません。

Barracuda Web Application Firewall(WAF)について詳しくはこちらのページをご覧ください。30日間の無料評価もお申し込みいただけます。

※本内容はBarracuda Product Blog 2014年11月3日Barracuda Web Application Firewall: Securing Drupal 7 SQL Injection (CVE-2014-3704)を翻訳したものです。

Neeraj Khandelwal

本稿は、バラクーダネットワークスのWebサイトに掲載されている『バラクーダラボ』12月5日付の記事の転載です。