パスワード盗難防止ガイド(2)
パスワード盗難防止ガイド(1)この連載では「FFFTPでアクセスしているFTPサーバーのパスワード」を例とします。で、パスワードをサーバーに送信する段階までを取り上げます。実際にはFTPパスワードは(基本的に)平文でユーザーマシンからサーバーマシンに送られるので、この最中に(パケットキャプチャ等により)通信を覗くというのも「パスワード盗難」の一つの方法であったりする訳ですが、その段階には触れません。自分自身のローカルマシン上での盗難を防ぐことのみを考えます。内容自体はパスワードクラック概論とある程度かぶると思うので読んでない方は先に読んでおいてもらえると助かります。
「FFFTPで〜」と言っても別にコレは他のFTPクライアントであれメーラーであれIEでアクセスしている会員制サイトのパスワードであれ特に話は変わらないので「俺NextFTP使ってるし」とか「そもそもFTP使わないし」という方もどうぞ。
FFFTPで「ホストの設定」にパスワードを打ち込む。

このまま「OK」を押してホストを登録すれば、次回起動時もそのホストは「登録済み」となっている訳です。まぁFFFTPに限らず他のFTPクライアントでも似たようなモノですし、全く別のアプリ(例えばメーラー)でも似たようなモノですよね。
次回起動時もそのホストは「登録済み」となっていると、いうことは、そのホストに関する情報はローカルマシン(要はユーザーが普段使っているマシン)のHDDないしレジストリ内に記録されている。
・・・「当たり前だ」と思うかもしれませんが、「次回起動時も」という語句がなければ上記は確定しません。Windowsアプリというモノは
- exeファイルのダブルクリック等により起動される
- HDD内からプログラム本体が読み込まれる
- HDD内の設定ファイルやレジストリ内の設定項目がメモリーに読み込まれる
- 設定変更時にメモリー内の情報が書き換えられる(この時に設定ファイルやレジストリを書き換えるアプリもある)
- 「×」を押したこと等によりアプリが終了される
- HDD内の設定ファイルやレジストリ内の設定項目に対し書き換えが行われる
- そのアプリが使用していたメモリーが解放される
- メモリー
- HDD
- レジストリ
で、その「次回起動時も生きている」設定が具体的にどこにあるかなんですが、コレは勿論アプリ次第です。FFFTPの場合は、FFFTPプログラムと同じフォルダ内の「ffftp.ini」というファイルが「設定ファイル」となります。このファイルの中にFFFTPの設定(例えば表示フォントとか)やホスト情報・・・つまりパスワードを含む各種情報・・・が記録される訳です。
一般化して書くと
- readmeに「アンインストール方法」が明示されている(「プログラムの追加と削除から消す」「アンインストーラーを使う」等)アプリはレジストリを使用している。ということは設定保存にレジストリを使っている可能性が高い。
- 「アンインストール方法」が明示されていない、もしくは「フォルダごと消せばよい」と明示されているアプリはレジストリを使用していない。ということは設定保存にレジストリを使っていないということで、HDD内に設定ファイルがある可能性が高い。拡張子「ini」や「dat」のファイルがプログラムと同じフォルダに存在するならば、それをテキストエディタで開けば平文で設定が記述されていることが多い。
さて。
FFFTPの場合は、FFFTPプログラムと同じフォルダ内の「ffftp.ini」というファイルが「設定ファイル」となります。これが何を意味しているのか考えてみましょうか。
FFFTPプログラムと同じフォルダ内の「ffftp.ini」というファイル即ち、FFFTPプログラムのパス(HDD内の所在地)が分かれば設定ファイルのパスが分かる。FFFTPプログラムが「C:\Program Files\FFFTP\ffftp.exe」ならば、設定ファイルのパスは「C:\Program Files\FFFTP\ffftp.ini」です。
設定ファイルのパスが分かる「特定の手段によりローカルマシン上の(任意のパスの)ファイル読み取りが可能となる」というセキュリティホールはよくOEやIE周辺で発見されます。
参考: 他力本願堂本舗内「Web Browser ControlのNavigateメソッドがセキュリティーゾーンの制限を迂回するつまり、「設定ファイルのパスが分かる」ということは「そういったセキュリティホールを利用すれば設定ファイルを抜くことが出来る」ということです。もちろん、この話はFFFTP設定ファイルのパスが分からなければ意味がない。FFFTPのインストーラーは
パッチを当てていないIE5.*が持っていたセキュリティホールです。代表的な「ローカルマシン上の(任意のパスの)ファイル読み取りが可能」系のセキュリティホールですね。

という質問を行います。デフォルトではFFFTPフォルダのパスが「C:\Program Files\FFFTP\」。つまり設定ファイルのパスは「C:\Program Files\FFFTP\ffftp.ini」。
- インストールパスを聞かずに固定フォルダにプログラムをインストールするインストーラー
→そのプログラムの設定ファイルパスは全てのユーザーに関して同じ - インストールパスを聞くインストーラー
→大抵のユーザーはデフォルトパス - インストーラーがなく、圧縮ファイルを解凍して使用するタイプのアプリ
→ユーザーによってパスは異なる
今回の結論:
「(パスワードを含めた)設定情報」の記録場所が分かる、ということが「穴」に繋がる場合がある。その「設定情報の記録場所」はソフトの性質や、そのソフトをどのようにインストールしたかによって決まってくる。「ソフトをデフォルトパスにインストールしたかどうか」という程度の微々たる差で、「設定ファイル盗難が簡単か難しいか」が変わってくることもあるのだ。「パスワード盗難に関する耐性」を意識するなら、設定ファイルにパスワードを記録するアプリはデフォルトパス以外でインストールした方が良い(もしくは、パスワードを記録させない方が良い)。
パスワード盗難防止ガイド(3)
パスワード盗難防止ガイド(4)
パスワード盗難防止ガイド(5)
パスワード盗難防止ガイド(6)
パスワード盗難防止ガイド(7)

TrackBack
この記事へのトラックバック