Amon2::Util::random_stringの生成する乱数の質に問題があったため、セキュリティ上の問題が発生する可能性があります。
現在のところ重要なセキュリティ修正としては告知されていません。技術的な詳細についてはアップデートが浸透してから公開される予定です。
- Amon2
- Amon2::Plugin::Web::CSRFDefender
- HTTP::Session2
- Amon2 を 6.04 以降にバージョンアップしてください。
- Amon2::Plugin::Web::CSRFDefender を 7.01 以降にバージョンアップしてください。
- HTTP::Session2 を 1.02 以降にバージョンアップしてください。
- [重要] HTTP::Session2::ClientStore を使っている場合は、使用を中止するか、secretを再度生成してください。
ClientStoreはcookie自体にシリアライズされたセッション情報を署名付きで埋め込む方式です。 amon2-setup.pl でアプリケーションの雛形を生成した場合、署名に使われるsecretがAmon2::Util::random_stringによって生成されます。 このsecretが漏洩した場合、改変されたセッションオブジェクトをサーバーに読み込ませることが可能になります。
- セッションハイジャックが可能になります
- アプリケーションの実装や、ロードしているモジュールによっては、任意のコード実行に繋がる可能性があります
推奨される対策
- ClientStoreを使わないでください。代わりにServerStoreを使用してください。
- どうしてもClientStoreを使用しなければならない場合は、安全な乱数生成装置を使ってsecretを再度生成してください。
Amon2::Util::random_stringがCSRF対策に使われるtoken生成に使われているため、他人宛に発行されたCSRF tokenの予測が可能になります。
- アプリケーション実行環境によっては現実的な試行回数でCSRF攻撃が成功する可能性があります。
推奨される対策
- Amon2::Plugin::Web::CSRFDefender をアップデートしてください
子プロセスが親プロセスのseedを引き継いでしまうサーバー上でアプリケーションを実行している場合、CSRF tokenの予測がより容易になります。 こちらも合わせてアップデートを推奨します。参考: http://d.hatena.ne.jp/sfujiwara/20140526/1401083970