さくらインターネットのサーバ管理画面の認証用Cookieは認証してから3年たっても有効な件

結局、何も改善されてはいない。 ガンプラーウィルス対策のお願い? サーバのパスワードの変更? 安全なWebサイトの作り方改訂第4版? むなしいね。 レンタルサーバそのものの管理画面のセキュリティがこんななんだから、それを使う側がなにやったって無駄だよ。

ことの発端は「さくらインターネットの会員メニュー画面のセッション情報はログアウトしても1年たっても消えない件」という、筆者が2007年に書いた記事にさかのぼる。そして詳細はその一週間後のさくらインターネットの社長自身のブログで実にこと細かにつづられることになった。

焦点となった認証用Cookieは、いわゆる一般的なWebアプリのセッション維持Cookieと比べると構造や設計が(悪い意味でなく)異なる、という点で恥ずかしながら筆者には誤解があった。 そして結局のところ、その認証用Cookieの値に含めた認証日時に対するサーバ側での有効期間をどの程度の長さにするかの問題である、という帰着点を得たはずだ。(※Set-CookieヘッダのExpire属性の話ではないので勘違いしないように) この点については社長ブログでは次の1行にまとめられている。

現在の有効期限を今より短くしないといけないページがあるのかもしれない(コンパネ等)

さて、このとき、当の社長が筆者へメールを寄せている。メールを公開してもよいとのことだったので、3年後のいま、その一部を公開しよう。

(中略)以上のとおり、相当に長い期間が経過した後にクッキーが利用できるのでは ないかという指摘については、クッキー自体に改ざん不可能な形で発行日が含まれており、そのチェックが行われているために、実際にはいつまでも利用できるわけではないということをご理解頂ければと思います。 もちろん、ページ毎に設定されている有効期限については、人によってさまざまな考えがあると思いますので、こちらについては熟慮を続けていければと思います。

そろそろツッコミを入れるべき時だろう。「いまより短く」?「熟慮を続けて」? 「短く」とか「熟慮」とかじゃなくて、「有効期限なんてない/認証用Cookieにその認証時刻も暗号化されて格納されているけどそんなもの見てない/熟慮する気はまるでない」の間違いだったのではないでしょうか。

少なくとも、古い認証用Cookieを使って会員メニューに入ってから契約しているサーバーのコントロールパネルのファイルマネージャ(エクスプローラっぽいやつ)の画面にたどり着いてファイルを削除または編集するまでの一連の流れを見ると、そうとしか思えない。再現手順は3年前の記事と同じで、次のとおり。

  1. さくらインターネットのユーザーの契約情報などを見る画面において、ログインする。
  2. cookie情報を参照し、secure.sakura.ad.jpドメインで発行されている「SID」というCookieに格納されている値をメモ帳かなんかにコピペして保存しておく。
  3. 画面右上の「ログアウト」ボタンを押す。念のためブラウザ内のすべてのCookie情報を削除し、さらにブラウザを閉じる。
  4. 30分または24時間または3日または3年待つ。どれでも結果は同じ。
  5. 待った後、再びメニューの画面にアクセスする。IDとパスワードの入力を促す画面が出ることを確認する。そこで、Cookie情報を手作業で追加、編集する。具体的に言うと、上でメモっておいた値をSIDというCookie名で保存する。ドメインはsecure.sakura.ad.jp、パスは/、secureフラグはオンにして、期限は適当に1年後くらいの日時にしておく。
  6. その状態で改めてメニューの画面にアクセスする。IDやパスワードを入力してないにもかかわらずログインした状態での画面が現れる。
  7. 「サーバーの解約」をしようとすると、パスワードの再入力画面が現れる。どうやらそういう画面では認証用Cookieの値に仕込まれた時刻情報をちゃんとチェックしているようだ。
  8. しかし、「サーバー設定」を押すと、素直にサーバーコントロールパネルの画面に遷移する。 そして「ファイルマネージャ」にアクセスすれば、エクスプローラーライクな管理画面に遷移する。ファイルの表示も削除も編集も自由自在。

なお、「会員情報」のページからパスワードを変更しても、同じ手順が可能だ。つまり、認証用Cookie(値はまとめて暗号化されている)の中には、パスワードそのものの情報は含まれておらず「ID(会員番号?)とその認証が成功した日時」の情報が入っており、それだけで判断されるようになっているわけだ。

それから、「Cookieの中身をコピペして保存するような手法まで気にしろというのか」という話をする者は、問題点をまるで理解していない。

少し話を変えて、わかりやすい事例を挙げよう。最近、ガンプラーというコンピュータウィルスが猛威を振るっているそうだ。 その亜種は、「「FFFTP」のパスワードが“Gumblar”ウイルスにより抜き取られる問題が発生 (Internet Watch 2010/1)」 といった悪さをする。 なんにせよ、特定のFTPソフトがOSのレジストリに書き込んでいる情報を狙ってパスワードを盗み取るくらいだ。 特定のレンタルサーバ会社を狙ってブラウザのCookie情報を盗み取るようなことが、より難しいとも突飛なアイデアだとも思えないし、そういう亜種の出現もそう遠い未来ではなかろう。

一般論としては、WebサイトのCookieを盗まれることはめちゃくちゃに危機的と言えるほどの脅威ではない。Cookieの情報というものはあくまでも「一時的」な意味合いのものがほとんどだからだ。

ただしそれは、Cookieの値としてのセッションIDないしはそれに類する認証情報の、「いつ発行したか」の値をちゃんとチェックしかつ古い認証情報をはじくという仕様がWebサイト側に実装されていれば、の話である。

また、例えばFTPのパスワードであれば、盗まれたと気づいた段階で慌てて別の安全なPCからパスワードを変更にかかればよいかもしれないが、前述のとおり、さくらインターネットの認証用Cookieは、パスワードを変更した後でもそれ以前に発行されたCookieさえ手元にあれば認証を通過できてしまう。少なくともサーバーのコントロールパネルやファイルマネージャ画面までは。 これをどう救えというのだろう。

認証結果の有効期限といったものは、未知の脅威にもなんとか耐えうるための概念であり設計思想だ。 しかし、現状のさくらインターネットのサーバーコントロールパネル機能(にたどり着くまでの認証機能)を見る限り、そういった基本的な設計思想というものが完全に無視されている。 レンタルサーバ会社の社長自身が実に細かく問題点を把握しかつそれを自分のブログで公開し、おっ、社長すげえ、とか一見そう思えたのだが、現状を見るに、実は根本レベルでの理解がまるで欠けていると感じざるを得ない。

有効期限なし(無期限)という実装の問題はもちろん、それをはっきり認識し、かつ、責任者としての自分のブログで問題点を広く公開しつつも、結局はさらに数年も放置するという行動は、ユーザーの利便性のためとかいうトンチンカンな言い訳で済むような次元をはるかに超えている。

トラックバックURL

このエントリーのトラックバックURL:
http://www.ywcafe.net/mt/mt-tb.cgi/1032

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)


画像の中に見える文字を入力してください。