サイボウズ Garoon にディレクトリトラバーサルの脆弱性が発見されました

「サイボウズLive」や「サイボウズOffice」などのグループウェアの開発で知られるサイボウズ社の大企業向けグループウェア「ガルーン(Garooon)」にディレクトリトラバーサルの脆弱性が発見されました。

 

【参考】サイボウズ Garoon におけるディレクトリトラバーサルの脆弱性https://jvn.jp/jp/JVN12583112/index.html

この脆弱性に関して、サイボウズ社からパッチプログラムがリリースされています。

【参考】「Garoon 3.7 / 4.6 パッチプログラム」リリースのお知らせ (2018/9/7)

https://cs.cybozu.co.jp/2018/006717.html

 

パッチの適用が必要なガルーンのバージョンは、

・「Garoon 3」をご利用中で、バージョンが「Garoon 3.5」以降の場合

・「Garoon 4」をご利用中の場合

(「Garoon 3.7 / 4.6 パッチプログラム」リリースのお知らせ, サイボウズ, 2018/09/10より引用)

となっております。該当バージョンのガルーンを使用している方はパッチプログラムを適応しましょう。

 

意外とやっかいなディレクトリトラバーサルの脆弱性

ディレクトリトラバーサルとはシステムのファイルやフォルダの指定をする際に、相対パスなどを使用する事で、本来アクセスしてはいけないファイルやフォルダにアクセスするサイバー攻撃の一つです。

ホームページを閲覧するときにURLを入力することがありますが、パスとはURLで指定する文字列の一部分を表しています。例えば、

http://example.com/dirA/dirB/dirC/index.html

というURLには「/dirA/dirB/dirC/index.html」というパス名が含まれています。これはパス名の一番先頭(左端)が「/」で始まっています。こういうパスを絶対パスといいます。

 

一方、相対パスとは現在自分が存在しているフォルダから見て、相対的に相手のパスを指定する方法です。先ほどのURLを使って説明します。現在はdirCのフォルダのindex.htmlを見ているので、そこから相対的に1つ上のフォルダにあるsecretフォルダにアクセスするとき、相対パスを使って指定すると以下のようになります。

http://example.com/dirA/dirB/dirC/../secret/

これは「/dirC/index.html」に対し、相対パスを使って「/../secret/」と書き換えたものです。

 

このURLを絶対パス指定で書き直せば

http://example.com/dirA/dirB/secret/

となります。相対パスで記述した「../」という文字列は「現在いる位置から一つ上位のフォルダに移動する」ということを表しています。ディレクトリトラバーサルの脆弱性とは、このように相対パス指定を使うことで、本来公開されていないはずのフォルダを参照されてしまう事があるという脆弱性です。

 

ディレクトリトラバーサルの脆弱性は極めてシンプルな問題なのですが、ここで問題となるのは、「相対パス指定そのものが悪者」ではないという点です。

絶対パス指定とか相対パス指定とか、これらはシステムとして初めから用意されている正常な動作です。なので、ディレクトリトラバーサルの脆弱性に対応のために相対パス指定そのものをできなくする、ということはできませんし、やってはいけません。

先ほど「secret」フォルダに相対パスでアクセスする例を紹介しました。「dirBにsecretってフォルダがある事は誰も知らないから大丈夫じゃない?」って思うかもしれませんが、そんなことはありません。例えばWordPressのように有名なCMSは、ユーザーも多くシステムのフォルダ構成も知られてしまっています。もしWordPressにディレクトリトラバーサルの脆弱性が発生したら、悪意のあるユーザーが不正にuploadsフォルダを盗み見する、なんてことも起こるかもしれません。

 

ディレクトリトラバーサルへの対策法

このようにやっかいなディレクトリトラバーサルの脆弱性ですが対策として、

・外部からの相対パスの入力を無効化する

・外部からの入力でファイル名を直接指定しない

・ファイルやフォルダに適切なアクセス権限を設定する

などがあげられます。プログラムによっては、サーバーに存在するファイル名をそのままパラメータとして指定して開く、という機能を持つものがありますが、これはかなり危険です。どうしてもこのような実装が必要な際は、最低でも入力された文字列から「..」や「/」を削除するなどの対策が必要です。

また、ファイルやフォルダに対してアクセス権限を設定することも有効です。サーバーが動作しているOSの多くはUNIX系のOSであり、「読み取り権限」「書き込み権限」「実行権限」と3つの権限を組み合わせて、ファイルやフォルダに指定できます。権限を適切に設定することで、外部からの不正なアクセスがあっても、ファイルやフォルダに対する不正な閲覧や改ざんを防ぐことができます。

 

LINEで送る
Pocket

こんな記事も読まれています