セッションハイジャックとは?セッションIDを利用したなりすまし

この記事は約6分で読めます。

セッションハイジャックとは、不正な手段でセッションIDや、Cookieの情報を入手して、本人になりすまして通信をすることです。

このセッションハイジャックでは、Webページにアクセスしたユーザーに他人がなりすますので、ユーザー本人や、Webアプリ内の重要な情報を窃取・漏えいされることや、あるいは他のマルウェアを侵入させてしまうことなどにより、大きな被害や財産的損害を出しかねません。

そこで、セッションハイジャックの原因・事例を検討し、すぐにでもできる予防策について解説します。

セッションハイジャックとは

セッションハイジャックは、ログインからログアウトまでを1セッションとしたときに、セッションを他人に乗っ取られてしまうことを言います。

WebアプリケーションはセッションIDやcookieを使って個人認証を行い、通信しますが、悪意ある者が、不正な手段でセッションIDやCookieの情報を入手、正規のユーザーになりすまして通信を行ってしまうのです。

Webサイト・サーバへの不正アクセスの典型的な手口の一つであり、毎年これによる攻撃とみられる情報漏えい案件が報告され、漏えいされる個人情報の件数も大量になることがあります。

こうした攻撃を可能な限り防止しないと、例えば個人のユーザーがWebショップで購入した際に、ショップのサーバで保存された個人情報、特にクレジットカード情報などの重要情報が流出・悪用される危険が生じます。

この場合、Webショップの運営企業もユーザーに対する損害賠償や、対策費用などの財産的な損害が生じることになりますので、企業が対策をしておくべきポイントの一つです。

セッションとは

セッションとは、Webにアクセスして、ログイン~ログアウトするまでの一連の流れを言います。もっと一般化すると、クライアントからアクセスしたユーザーが、サーバにアクセスし、サーバから退出するまでの通信を1セッションとカウントします。

このサーバへのアクセスを管理することを、セッション管理といいます。
セッションハイジャックによる不正アクセスを防止するには、基本対策として、セッション管理を十分なものにする必要があります。

セッションIDとは

セッションIDとは、サイトにアクセスしたユーザーのセッションを一意に識別するために、付与される情報で、CookieやURLのリクエストパラメータの一部に付与されるものです。

Webページにログインを行うときのIDがセッションIDの典型例です。

セッションハイジャックが発生する原因

セッションハイジャックが発生する原因は、3つあります。セッションIDに問題点があり、窃取されてしまうこと、Webアプリケーションに、セッションIDを窃取可能にするような脆弱性があること、それと、正規のセッションIDを、悪意ある攻撃者が取得し、固定、すなわち、ユーザーに使わせてしまうことです。

セッションIDを窃取される

セッションIDが日付などの類推しやすいものの場合、解析して不正利用されることがあります。また、単純なIDであれば総当たり(ブルートフォース)攻撃で窃取できてしまうのです。

Webアプリケーションの脆弱性

Webアプリケーションに脆弱性があると、これを利用し、クロスサイトスクリプティングなどを仕掛け、Webアプリケーションを改ざん、ユーザーからセッションIDを窃取することができてしまいます。

セッションIDの固定化

セッションIDを攻撃者が都合よく固定してしまうという手口です。セッションフィクセーションとも呼ばれています。

攻撃者が取得した正規のセッションIDをユーザーに使用させ、ログインしたのを確認後、相乗りしてしまう手口です。

セッションハイジャックの事例

セッションハイジャックの事例では、例えばApacheサーバの管理者が短縮URLをクリックしたのが原因で、管理権限が含まれたIDが窃取されてしまった事例や、Twitterに大量の投稿が行われた事例、KADOKAWAのウェブサイト経由で、サーバ内に格納されていた個人情報が流出した事例があります。

クロスサイトスクリプティングによるサイト改ざんから、ブルートフォース攻撃による総当たりでのIDの窃取などといった典型的な一連のセッションハイジャック攻撃が、これらの事例でも観測されています。 

セッションハイジャックの対策とは

セッションハイジャックの対策は、セッション管理の強化を行うことです。URLにセッションIDを含めない、セッション管理ツールを利用する、セッションIDをログイン後変更させる仕組みを作っておく、といった対策が考えられます。

URLにセッションIDを含めない

URLにセッションIDを含めないことが対策の一つとなります。

ブラウザからサーバへのリクエストを記録しているWebログデータで、HTMLのリソースを表示すると、リクエスト元のURLを含んだRefererヘッダが表示されますが、ここからセッションIDの漏えいが考えられます。

URLにセッションIDを含めると、セッションIDが推測されやすくなるため、Cookieを使い、Webアプリケーション側にセッションIDを持たせる管理に変更することにより、この問題を回避することができます。

セッション管理ツールの使用

Webアプリケーション開発ツールやフレームワークに実装されているセッション管理ツールを使用することで、セッションIDが推測可能な状態になってしまうことをある程度回避することができます。

セッション管理ツールを使っておくと

  • セッションIDの桁数が短い
  • セッションIDで使っている文字種別が少ない、もしくは限定的
  • セッションIDの一部にユーザーIDなどの認証情報を使っている
  • セッションIDを発行する乱数生成器に不具合がある

といったIDを推測されやすくなる条件を除去できます。

推測されにくいセッションIDを利用するには、自作ではなく、開発ツールやフレームワークが持っているセッション管理の機能を利用するようにします。

セッションIDの変更

ログイン後に既存のセッションIDを破棄、変更させてユーザーに使わせることも対策になります。ログイン後のセッションIDが攻撃者に分からなくなることになるためです。

セッションIDを変更する前に、同じID を二重に使わせないことも対策になりますので、多重ログインの禁止・IDの変更と、二つの対策を同時に行っておくとより安全です。

WAFによるセッションハイジャック対策

セッションハイジャック対策へのもう一つのアプローチは、WAF(Web Application Firewall)により、クリスサイトスクリプティング攻撃を予防することです。先ほどご説明した通り、クロスサイトスクリプティングは、セッションIDを窃取する手段です。

それをブロックするのがWAFなので、セッションハイジャック対策になります。WAFは、ウェブアプリケーション層で、マルウェアや、不正な通信を検知、通信を遮断することにより、攻撃を防御します。

クロスサイトスクリプティングの攻撃パターンを見分けて、ブロックするのです。

WAFが対応する攻撃パターンは、クロスサイトスクリプティングだけでなく、同様にサイト改ざんや情報漏えいの原因となるSQLインジェクションディレクトリトラバーサル攻撃も検知、予防することができます。

まとめ

セッションハイジャックによる、セッションIDの窃取と、なりすましによるWebサイトの不正アクセスは、大きな被害を出しかねないサイバー攻撃です。

この攻撃の予防には、セッション管理を適切に行うこと、そして、Webアプリケーション層への攻撃をブロックするWAFを使うことの2つのアプローチが有効です。

情報セキュリティ対策サイバー攻撃対策
タイトルとURLをコピーしました