Hiki 0.8.7、任意ファイル削除の危険を修正 15
ストーリー by Acanthopanax
チェックは厳しく 部門より
チェックは厳しく 部門より
tamo 曰く、
Hiki 0.8.0 から 0.8.6 に、任意のファイルを削除させられてしまう脆弱性 が発見され、修正されました。Hiki は Ruby で書かれた Wiki クローンとして、日本を中心に人気を集めています。今回の脆弱性は、セッション ID を管理するためのファイルを削除する際に、ファイル名のチェックが不十分だったことが原因です。ログアウトするときにはセッション ID と同名のファイルが削除されますが、セッション ID(として与えられた文字列)が [0-9a-f] を 16 文字含むことしかチェックされていなかった模様です。0.8.7 では 16 進数 16 文字のみを含むことが確認されます。
というか (スコア:1, 興味深い)
# あまり脅威ではないけど、修正後も「任意のセッションIDファイル」は消せるのか
Re:というか (スコア:3, 興味深い)
# ただし今のRubyには暗号安全な乱数関数が(OpenSSL以外)にないが、その辺の評価方法は知らない
Re:というか (スコア:1, すばらしい洞察)
Re:というか (スコア:0)
Re:というか (スコア:1)
たとえセッションファイルが専用のディレクトリに格納されていたとしても
別のディレクトリのファイルの削除ができてしまうということでは?
#使ってるわけでもソース読んだわけでもないので予測ですが。
LAN内LAN稼働中
セッション管理の機能とかなかったっけ? (スコア:1, 興味深い)
Re:セッション管理の機能とかなかったっけ? (スコア:0)
クッキー盗まれるとか? (スコア:0, おもしろおかしい)
意味がわかりません。 (スコア:0)
> セッション IDが [0-9a-f] を 16 文字含むことしかチェックされていなかった模様です。
これよんでも不具合かはさっぱりわかんね。
[A-F]のチェックが抜けてるから?
Re:意味がわかりません。 (スコア:3, 参考になる)
> これよんでも不具合かはさっぱりわかんね。
「含むこと」がポイントですね。正規表現で /[0-9a-f]{16}/ にマッチするかというチェックしかしてなかったから、
idを「../../../0123456789abcdef/../../../foo/bar/…」みたいな指定をしても有効になってたってことでしょう。
で、正規表現を/^[0-9a-f]{16}$/に変えたと。
Re:意味がわかりません。 (スコア:0)
今まで → 「0123456789abcdef」さえ含まれていれば他にどんなものが含まれていようがおk
修正後 → 「0123456789abcdef」だけで構成されていないとダメ
ってことかな?
対策方法 (スコア:0)
こういう方法はどうですか?
ログアウトボタンが押されたら、そのセッション(cookieで指定された)のセッションオブジェクトを参照して、それが存在すれば、そのセッション用のセッション保管用ファイルのファイル名を導出して、削除する。
Re:対策方法 (スコア:0)
Re:対策方法 (スコア:1)
IP アドレスを控えておいたところで、proxy の裏側や NAT の裏側にいる相手にはさっぱり意味がありませんが。
Re:対策方法 (スコア:0)