RoRの脆弱性を攻撃する

RoRの脆弱性を攻撃する

未対策のRoRに表示された「新しく有効なセッションID」を別マシン上のWebブラウザから、URLベースのセッションIDとしてリクエスト してみる。すると、RoRはまったく異なるマシンのWebブラウザからのリクエストであるにも関わらず新しいセッションIDを発行せず、既存のHTTP セッションとして取り扱ってしまう。

何故、このような事が起こったか簡単に解説しよう。

大規模な組織や携帯などでは、利用するプロキシサーバがリクエストごとに異なるのは普通のことだ。このため、当然別のIPアドレスからのリクエ ストであっても「セッションIDが同じ」であれば「リクエストしてきたWebブラウザも同じ」ものとして取り扱わなければならないのだ。RoR開発者も当 然このような構成を知っているに違いない。

では実際の攻撃は、どのように行われるのだろうか。原理としては、未初期化のセッションIDには新しくセッションIDを発行しているにも関わらず、セッションIDの固定化攻撃が可能になるということになる。理解し辛いかもしれないがわかってしまえば簡単だ。

具体的には、「1)攻撃者が有効なセッションIDを取得する」「2)取得した『有効なセッションID』をURLパラメータとして付加したWeb ページを公開したり、メールで送信する」「3)被害者が攻撃用URLを記載したWebページやメールのリンクをクリックする」の3ステップで攻撃が成功す る。

この脆弱性を使うことで、個人を対象とした場合にはかなり攻撃が行いやすいことが分かる。

なお、有効なセッションIDの取得は自動化できる。例えば、攻撃対象ユーザが攻撃に利用するWebサーバにアクセスした時点でスクリプトを利用すれば、攻撃対象サーバのセッションIDを容易に取得できる。

図3:現実的な脆弱性の攻撃方法
図3:現実的な脆弱性の攻撃方法

脆弱性からアプリケーションを守る

このような古いバージョンのRoRが持つ脆弱性に対処するには、RoR 1.2.6にアップグレードするのが最善の方法だ。しかし、test_controller.rbで設定を変更することでも対応できる。具体的には test_controller.rbに記述された「#session :cookie_only => true」のコメントをはずすことで、URLベースのセッションIDを無効にできる。

実際、RoRはURLベースのセッション管理をデフォルトで無効とすることで、この脆弱性に対処している。万が一、RoR 1.2.6にアップグレードしていない場合は各コントローラで設定するのではなく「config/environment.rb」の中で設定することにな るだろう。

RoR 1.2.6は、RoR 1.2.4で試みたセッションベースURLの無効化に漏れがあった不具合を修正した状態でリリースされたバージョンだ。「RoR 1.2.5まではアップグレートしているので関係ない」と放置していると攻撃される可能性がある。万が一未対策な場合は早急にアップグレードするかアプリ ケーション側で対策することをお勧めする。

なお、セキュリティ上のリスクを考慮してRoR 2.0ではURLベースのセッション管理は初期状態で無効となっている。このためRoR 2.0の場合は今回解説した脆弱性の影響は受けない。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30