LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

ラックピープル | 

まさか開発モードで本番稼働していませんよね

開発モードって知っていますか?開発者や運用者の方は比較的知っている方も多いのではないかと思います。ときに、デバックモード、デバックオプションと言ってるものもあります。
9/8に弊社より下記アドバイザリが掲載されました。
LAC Advisory No.120 Apache Strutsにおけるクロスサイトスクリプティングの脆弱性
ざっくりいうと、開発モードのときにXSSの脆弱性があるという内容です。
この情報を目にした時、XSSの脆弱性より開発モードの方が気になったんです。
なぜかって、「開発モードで本番稼働なんて・・・ありえない」と思っていたからです。
でも、いろんな人と話をしていると開発モードのままで稼働しているシステムがあるみたいということなので・・・今回は、開発モードについて触れてみようと思います。

開発モード(デバックモード)とは
まず、開発モードの整理から。
『主に開発者向けの機能で、デバック情報(開発時のエラーなどの詳細情報)を表示させたり、開発効率を上げるツールがあったりと開発時に大変役に立つモード。障害の切り分けや原因の特定もしやすい。また、多くの情報が出るためシステム的にはそれなりに負荷がかかる。』
私なりにまとめてみるとこんな感じになります。
これを読んで、別に動かしていても問題ないのでは?多少の情報が出るぐらい・・・いいじゃん。
と思った方もいるかもしれませんね。だめですよ。
なぜって、悪意のある人にとってはその情報が有益になるからです。また、開発時には開発効率を上げるツールも本番稼働時に使えてしまうと便利な攻撃ツールになることもあり得るんです。

■開発モード(デバックモード)で出力される情報について
では、どんな情報が出力されるのでしょうか。一部ですが紹介してみます。
今回Struts2のアドバイザリが発端ですので、Struts2ともう一つWordPressで説明してみようと思います。

・Struts2の場合
struts.xml内のstruts.devModeをtrueにして稼働させることで開発モードになります。

struts.xml
struts.xml

この状態で特別な操作をしてみると以下のような画面が表示されます。

Struts Problem Report
Struts Problem Report

わかりづらいかもしれませんが、この画面をみると「Struts2を使用していて、プログラムのどの行でどんな障害が発生したのか」という情報がわかるのです。

・WordPressの場合
wp-cong.php内のWP_DEBUGをtrueに設定することで、デバッグモードが有効になります。

wp-cong.php
wp-cong.php

ここでも、何らかの特別な操作をすると以下のような画面が表示されます。
(今回は意図的にプログラム上に障害が起きるようにしてサンプルとして出しています。)

表示画面
表示画面

画面をみると「サーバのディレクトリパス、プログラムのどの行でどんな障害が発生したのか」という情報がこちらも表示されていますね。
また、データベース名なども確認することができています。WordPressを使っていることもわかる人が見ればわかるのです。
どうですか?普通に使用しているとなかなか見ることのない画面だと思います。
開発モードでない場合は、このような画面が現れることはないのです。
開発モードで本番稼働することは、悪意のある人などにシステムの内部情報を収集される可能性を高め、さらなる攻撃に使用される可能性が強めるているのです。
このまま運用してはいけない理由が理解いただけたのではないでしょうか。

■開発モード(デバックモード)で本番稼働してしまう理由
上記で触れた二つの例では、開発者が意図的に変更しなければ開発モードは有効になりません。
それがそのまま本番稼働しているということは、リリース時に開発モードを無効にするのを忘れた可能性があるのではないでしょうか。
また開発環境の中には、インストール時から開発モードが有効になっているものもあります。
これは、知らなければそのまま本番稼働してしまいますから注意が必要ですね。

そして、もしかしたら中には「何かあった時に調査が楽だから」と意図的に開発モードを有効にしている方がいらっしゃるかもしれません。しかし、リスクのある状況を自ら作り出し運用していることを理解して頂ければ、今後そのような選択はしないでしょう。
いい機会です。
稼働しているシステムに「開発モードがあるのか」「無効になっているのか」確認してみるというのはいかがでしょうか。
当たり前のことが意外と出来ていないかもしれません。

この記事は役に立ちましたか?

はい いいえ