Symfony
Drupal
脆弱性
Drupal7
Drupal8
DrupalDay 4

2018年のDrupalの脆弱性について振り返る

どーも。ばぁどです。

本記事はDrupal アドベントカレンダーの4日目の記事です。

現在私は、セキュリティエンジニアの卵をやっております。

前職までWebアプリケーション開発を仕事としておりました。

一時期Drupalの開発にも携わっていたので、

今回はセキュリティエンジニアとしての立場からDrupalを見てみようと思い、2018年度に発見されたDrupalのコアの脆弱性について振り返っていきます。


2018年の主なDrupalの脆弱性

2018年12月4日現在、コアに対するクリティカルな脆弱性は6個ありました。


SA-CORE-2018-001

項目
内容

対象のバージョン
7.x-dev, 8.4.-x-dev

日時
2018年2月21日

リスク
Critical

公式URL
https://www.drupal.org/sa-core-2018-001

その他参考情報(日本語)
https://drupal-navi.jp/news/462

http://www.webgogo.jp/news/152

Drupalにおいて、複数の脆弱性の解決が行われました。

いくつかあったのですが興味あったものだけをピックアプしました。

以下がそれぞれの対応項目とCVEの情報。


[ CVE-2017-6926 ]コメント返信フォームからの制限されたコンテンツへのアクセス

サイト
サイトURL

NVD
https://nvd.nist.gov/vuln/detail/CVE-2017-6926

JVN
https://jvndb.jvn.jp/ja/contents/2017/JVNDB-2017-012769.html

Drupal に標準で備わっているコメント機能がキーのようです。

攻撃者がコンテンツにコメントを投稿できる権限を持っていると、許可されていないコンテンツとそのコンテンツのコメントを閲覧することができます。

また、許可されていないコンテンツに対してコメントもできるそうです。

これは情報セキュリティの基本設計モデルであるCIAの機密性と完全性が脅かされる脆弱性ですね。

完全性が侵されるといってもシステムファイルが上書きされるわけではないので若干優先度は下げてもいいかもしれませんが、やはり閲覧を許可されていないコンテンツにアクセスできるのは問題ありです。

またコンテンツへのコメントを許可しないといった対策もできます。

攻撃者がそもそもコメントをすることができなくさせればいいということですね。


[CVE-2017-6927] XSSに対する脆弱性

サイト
サイトURL

NVD
https://nvd.nist.gov/vuln/detail/CVE-2017-6927

JVN
https://jvndb.jvn.jp/ja/contents/2017/JVNDB-2017-012770.html

XSS の脆弱性があるとのこと。

XSSとはページ表示時に、JavaScriptの処理が適切ではなく、スクリプトとして実行されてしまうことです。

JavaScriptがなんでも実行されてしまうので、悪意のあるWebサイトへのリダイレクトなど簡単に仕込むことができますね。

アプリケーションレイヤーでの根本的な対策としては、スクリプトのエスケープを行なった状態でDBに保存することと、ページび描画する際もスクリプトが起動しないように処理を行うことなどが対策としてあげられます。

今回は、Drupalが持つ Drupal.checkPlain()という関数がキーのようです。

このDrupal.checkPlain()という関数がページに描画される前にJavaScriptをエスケープしてくれるようなのですが、全ての注入方法に対して適切には処理をしてくれるわけではないようです。


[CVE-2017-6928]プライベートファイルへアクセスできる危険性

サイト
サイトURL

NVD
https://nvd.nist.gov/vuln/detail/CVE-2017-6928

JVN
https://jvndb.jvn.jp/ja/contents/2017/JVNDB-2017-012750.html

Drupal7に対する脆弱性です。

Drupal上のファイルを不正に取得される恐れがあるとのこと。

Drupal File Systemというものがある。

これを使用している場合、ファイルをダウンロードするときにユーザーの認証が必要なのだが、特定の条件下でこの認証チェックが正常に働かないとのこと。

しかし本脆弱性は一般的なサイト構成、設定では起きないので危険性は低いとのこと。

特定の状況下でしか起こらないとのことなので、CVEのスコアも5.3と他に比べて低く設定されていますね。


[CVE-2017-6929]

サイト
サイトURL

NVD
https://nvd.nist.gov/vuln/detail/CVE-2017-6929

JVN
https://jvndb.jvn.jp/ja/contents/2017/JVNDB-2017-012751.html

jQuery にXSSの脆弱性があるとのこと。

これもDrupal7のみのものです。

jQueryとはJavaScriptのライブラリのことです。

生のJavaScriptで書くと大変な記述を簡略化して書けたり、DOMの操作をしやすくしてくれたりします。

信頼できないドメインへのAjaxリクエストを送ることが可能とのこと。

本脆弱性は特定のコントリビュート、カスタムモジュールが必要なので緩和はされるとのこと。

またDrupal8.4.0の場合は既に対応済みの模様。

またDrupal7の場合でもjQueryを1.4.4にすれば解消済みとのこと。


SA-CORE-2018-002

項目
内容

対象のバージョン
7.x-dev, 8.x-dev

日時
2018年3月28日

リスク
Highly Critical

公式URL
https://www.drupal.org/sa-core-2018-002

NVD
https://nvd.nist.gov/vuln/detail/CVE-2018-7600

JVN
https://jvndb.jvn.jp/ja/contents/2018/JVNDB-2018-003541.html

Drupalを遠隔からコードを実行される危険性があります。

非常に危険な脆弱性であり、公開前に注意喚起が行われ発表時は早急な対応が求められました。

本脆弱性には名前もつけられており「Drupalgeddon2」と呼称がつけられています。

沢山の会社、組織が本脆弱性に関するレポートをあげていますね。

会社名
URL

三井物産セキュアディレクション株式会社
https://www.mbsd.jp/Whitepaper/CVE-2018-7600.pdf

IPA
https://www.ipa.go.jp/security/ciadr/vul/20180329-drupal.html

IBM
https://www.ibm.com/blogs/tokyo-soc/cve-2018-7600/

JPCERT
https://www.jpcert.or.jp/at/2018/at180012.html

特に三井物産セキュアディレクションさんのPDFが攻撃手法のサンプルまで掲載してくれていて、とても分かり易かったです。

足元に脆弱性のあるバージョンをインストールすれば、実際に脆弱性を確認できますね。

資料によればHTTPリクエストを受け取った時に必ず実行されるメソッド部分に脆弱性があるとのこと。


SA-CORE-2018-003

項目
内容

対象のバージョン
7.x-dev, 8.x-dev

日時
2018年4月18日

リスク
Modelately Critical

公式URL
https://www.drupal.org/sa-core-2018-003

XSSの脆弱性です。

CKEditorというDrupalのモジュールがあるのですが、そのモジュールに脆弱性があるとのこと。

しかし、この脆弱性は後に来るさらなる脆弱性の前兆でしかありませんでした。。。


SA-CORE-2018-004

項目
内容

対象のバージョン
7.x-dev, 8.x-dev

日時
2018年4月25日

リスク
Highly Critical

公式URL
https://www.drupal.org/sa-core-2018-004

その他参考情報(日本語)
http://www.jpcert.or.jp/at/2018/at180019.html

https://www.webgogo.jp/news/157

外部からのコードが実行される可能性。

前回、4月18日に続き発表された脆弱性です。

SA-CORE-2018-002と同じく非常に深刻な脆弱性ということで発表されておりました。

SA-CORE-2018-002に関連するセキュリティアップデートとのこと。

前回の003の脆弱性から立て続けに発表されたので、すごい落胆したのを思い出します(また、脆弱性対応しなきゃなのか・・・という感じで)

またGWに突入する前の大きな花火でしたね。


SA-CORE-2018-005

項目
内容

対象のバージョン
8.5.6 以前の Drupal8

日時
2018年8月1日

リスク
Highly Critical

公式URL
https://www.drupal.org/SA-CORE-2018-005

NVD
https://nvd.nist.gov/vuln/detail/CVE-2018-14773

JVN
https://jvndb.jvn.jp/ja/contents/2018/JVNDB-2018-009237.html

symfony公式
https://symfony.com/blog/cve-2018-14773-remove-support-for-legacy-and-risky-http-headers

Drupal8 が載っているWebフレームワークであるsymfonyの脆弱性になります。

Drupal8から、土台の実装が大きく変わりPHPのWebフレームワークであるsymfonyの上に実装されるようになっています。

そのためDrupal8からはsymfonyの恩恵を受けることができるのと同時に、大元のsymfonyに脆弱性が発見された場合はDrupal側にもパッチが必要になっという流れになります。

symfonyの脆弱性なので、Drupal7などの8より前のバージョンは本脆弱性は存在しません。


SA-CORE-2018-006

項目
内容

対象のバージョン
7.x, 8.x

日時
2018年10月17日

リスク
Modelately Critical

公式URL
https://www.drupal.org/sa-core-2018-006

その他の参考情報(日本語)
https://drupal-navi.jp/news/515

https://annai.co.jp/article/sa-core-2018-006

001と同様にいくつかの脆弱性を修正したようです。

コンテンツ管理機能や、外部URLインジェクションの危険性があったためそれらの修正ですね。


まとめ

2018年のコアに対するクリティカルなDrupalの脆弱性は以上です。

脆弱性情報振り返っていると、当時の記憶と一緒に思い出します←

大事なのは、これらのクリティカルな脆弱性情報が発表された時に、いかに早く適切に対応できるかということ。

脆弱性を放置するということは、攻撃者に利用されてDDosの拠点やWebサイトの改ざんをされる可能性があります。Webページをセキュアに保つことはWebページを運用している人の責任ですね。

決して小さな脆弱性でも放置せずに、まずは影響がないか調査して、影響があれば迅速に対応できるように体制を構築して、用意しておくことが大事です。

また、脆弱性に関しては脆弱性の危険性を判断するために、多種多様な技術的な知見、セキュリティの知見が必要になります。

それらを常に蓄えておかなければ、脆弱性が発表された時に正しく脆弱性を評価できません。

やはり、IT業界は普段からの勉強が大事ですね。

それでは!よきDrupalライフを!


[おまけ]Drupal の脆弱性情報の入手しかた

Drupal公式サイトから情報を入手することができます。

https://www.drupal.org/security

また、最新の脆弱性情報を入手するためにもメールなどで送ってもらうように設定すると気付きやすいです。

もしDrupalで運用しているサイトがある場合は設定しておくと吉です。


1. ユーザーログインを行う(登録していない人は登録から

ログイン画面

Screen Shot 2018-12-02 at 12.24.18.png


2. My Account 画面へ遷移する

My Account 画面(ログイン後のみ遷移可能)

Screen Shot 2018-12-02 at 12.25.53.png


3. Editタブを選択する

Screen Shot 2018-12-02 at 12.27.17.png


4. My Newsletters タブを選択する

Screen Shot 2018-12-02 at 12.28.40.png


5. Security announcements にチェックを入れる

Screen Shot 2018-12-02 at 12.29.47.png


6. 「Save」をクリック

Screen Shot 2018-12-02 at 12.31.22.png

これで脆弱性情報をメールで受け取る準備の完了です。

次回セキュリティに関する何らかの情報があった場合、設定しているメールアドレス宛でセキュリティ情報を受け取ることができます。

以上です!!!!!!バタバタバタバタバタバタバタバタバタへ( 'e')へ