JPCERTコーディネーションセンター(JPCERT/CC)より、Apsaly の
脆弱性に関する連絡がありました。勧告に従い、以下の通り、掲示します。
| 識別番号: | JVN#71138390 |
| 公開日: | 2010.10.21 |
| 該当版: | Apsaly 3.70 〜 1.20 |
| 脅威: | 偽装ファイルの実行の可能性 |
| 対策: | Apsaly 3.74 以降に更新等 |
Apsaly のメニューバーの「ツール」下にある「外部プログラム集」内には、 いろいろな項目があります。そのうちの「エクスプローラ」を選ぶと、 Windows の「エクスプローラ」が起動されます。また、同様に、「電卓」を選ぶと、 Windows の「電卓」が起動されます。
これらの起動では、それぞれ、explorer と calc という名前のファイルが 実行されるようになっています。この実行ファイルは、絶対パスで指定されていないので、 所定の幾つかのディレクトリーから検索されて、最初に見つかったものが採用されます。
そもそも、「エクスプローラ」と「電卓」の実行ファイルは、Windows の システムディレクトリーに格納されています。ところが、この起動の際には、 その格納ディレクトリーよりも、カレントディレクトリーのほうが先に検索されます。 そのため、もし、カレントディレクトリーに、それと同じ名前の偽装ファイルがあると、 その偽装ファイルのほうが実行されてしまいます。 これが、今回指摘された脆弱性です。
ちなみに、このような原理に基づく脆弱性は、Apsaly 以外でも、外部プログラムを 起動するソフトなら、充分に有り得ますので、ご注意ください。
なお、カレントディレクトリーに偽装ファイルを、どのようにして忍ばせるかと いう問題もありますが、これは、Apsaly 側の不備ではないのと、悪意の利用を防ぐ ために、ここではその詳細に触れません。
本脆弱性を解消するには、実行対象のファイルの指定を、絶対パスに変えます。 そうすれば、その場所が1箇所に限定されるので、もはや、 カレントディレクトリーから偽装ファイルが実行される余地はなくなります。
この対策は、Apsaly 3.74 で行なわれています。 そのため、Apsaly をそれ以降のバージョンに更新して頂ければ、この脆弱性は解消されます。 なお、Apsaly 3.74 では、この脆弱性だけでなく、作者自身が発見した同種の別の脆弱性も 根本的に解消されています。これに関しては、後述します。
現在お使いのバージョンをどうしても更新できない場合には、次のようにします。 但し、これは、この脆弱性を回避するだけものです。
「外部プログラム集」から実行される項目は、Apsaly がインストールされている フォルダ内にある XcmdList.ctx という名前のテキストファイルに記述されています。 そのため、本脆弱性の解消は、このファイル内の下記の2行を書き換えるだけで済みます。
≪修正前≫なお、ここでは、各区切りの空白に、全角の空白を使っていますが、 実際には、TAB コードにする必要があります。また、 Windows98 では、環境変数の %SystemRoot% が使えないので、 この部分を、実際の絶対パスに置き換える必要があります。
今回ご指定頂いた脆弱性に関連して、他にも同種の脆弱性がないか、作者自身でも調査しました ところ、次のような脆弱性が存在することが分かりました。
カレントディレクトリーに、CMD.EXE( Windows98 では、COMMAND.COM )という名前の
偽装ファイルを置いて、「外部プログラム集」内の
・ファイル一覧(dir)
・選択部を昇順ソート
・選択部を降順ソート
のどれかを実行すると、この偽装ファイルが実行されてしまいます。
この脆弱性を解消するには、Apsaly を最新版に更新するか、 または、XcmdList.ctx というテキストファイル内の下記の3行を書き換えます。
≪修正前≫なお、ここでは、各区切りの空白に、全角の空白を使っていますが、 実際には、TAB コードにする必要があります。