そのホームページ大丈夫? セッション・ハイジャックって何? それは「利用者を識別するための情報を乗っ取る攻撃方法」です!

荒川栄一郎

荒川栄一郎

テーマ:Webサイトのセキュリティ対策

こんにちは!
IT・プログラミング関連講師の荒川栄一郎です。
本日は「セッション・ハイジャック」について記述します。

セキュリティ04

★「セキュリティ」って何?

まず「セッション・ハイジャック」についてお伝えする前に
情報セキュリティについて知る必要がありますので
「セキュリティ」の概要についてお伝えします。

インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。

インターネットに接続するコンピュータを安全に利用するためには
どのような脅威があり、その対策方法などを知っておく必要があります。

セキュリティは
安全」「防護」「保障」などの意味を持つ英単語で
ITの分野では、「情報セキュリティ」のことを指し
コンピュータを安全に利用できるようにすることです。

現在はインターネットを利用して
HP(ホームページ)を閲覧したり
FacebookやTwitterなどのSNS(Social Networking Service)で
情報のやり取りを行うことができますよね。

このようなWebシステムを利用して
●クレジットカード情報
●個人情報
●メールの内容
●ログイン情報
のような情報を簡単に取得することも可能になっていますので
Webシステムの利用者は
いろいろな脅威があることを知っておいたほうがいいと考えます。

また、Webシステムを作成する側は
利用者が安心して利用できるように考慮しなければいけません。

しかし、情報セキュリティ対策は万全だと思っていても
日々いろいろな脅威が発生し、その対策方法が講じられていることも事実です。

★セッション・ハイジャックって何?

インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。

現在では
SNS
オンライン・ショッピング
オンライン予約
などのWebシステムがよく利用されています。

もし
●自分が投稿する内容
●自分がショッピング時に入力する個人情報やクレジットカード情報
が悪意のある攻撃者によって操作・閲覧することができたら
大変なことになるかもしれませんね。

セッション・ハイジャック
利用者を識別するための情報を乗っ取る攻撃方法です。

セッションとは
活動期間」という意味があり
●ログインしてからログアウトするまでの期間
●ショッピングを開始してから終了するまでの期間
のことを表現しています。

この期間でシステム側が知っていなければいけないことは
●その期間の利用者の識別するための情報
●前に行った処理の結果
になります。

利用者を識別するための情報のことを
セッションID」と言います。

セッションIDはWebシステム側が発行し
●ログインしてからログアウトするまでの期間
●ショッピングを開始してから終了するまでの期間
同一人物が操作していることを判断するための情報になります。

前に行った処理の結果を知っていなければいけないのは
例えばショッピングであれば
①商品選択してカートに入れる
②個人情報を入力する
③クレジットカード情報を入力する
のようにページを遷移しながら処理を行っていきます。

②のページに移動した時には
買おうとしている商品情報を記憶していなければいけませんよね。

上記のようなWebシステムを利用する時に
セッションIDの発行や管理に不備がある場合
悪意のある攻撃者にログイン中の利用者のセッションIDを不正に取得され
その利用者になりすましてアクセスされてしまう可能性があります。

この問題を悪用した攻撃手法を
「セッション・ハイジャック」と呼びます。

悪意のある攻撃者は
セッションIDの推測
セッションIDの盗用
セッションIDの固定化
などの手法を用いてセッションIDを取得します。

セッションIDの推測
悪意のある攻撃者が
セッションIDの生成規則を割り出し
有効なセッションIDを推測します。

これにより、利用者本人に成りすますことができます。

セッションIDの盗用
悪意のある攻撃者が
罠を仕掛けたり、ネットワークを盗聴したりし
利用者のセッションIDを盗みます。

これにより、利用者本人に成りすますことができる。

セッションIDの固定化
悪意のある攻撃者が
自分が取得したセッションIDを
利用者本人のセッションIDに送り込みます。

これにより、利用者本人に成りすますことができる。

セッション・ハイジャックに成功すると
悪意のある攻撃者が利用者に成りすまし
全ての操作を不正に行うことができてしまいます。

具体的に言うと
●不正な送金
●利用者が意図しない商品購入
●利用者が意図しない退会処理
●パスワードの書き換え
●SNSでの不正閲覧・不正投稿
●非公開の個人情報を不正閲覧
●GmailなどのWebメールを不正閲覧
などが行われてしまう可能性があります。

システム開発側はこのようなシステムを作ると
利用者からクレームがくるでしょうし
多額な賠償請求を迫られる可能性もあるかもしれません。

システム開発側は
必ずセッション・ハイジャック対策を施さなければ
利用者が安心して利用できません。

セッション・ハイジャック対策は
(1)セッションIDを予測困難なものにする。
(2)セッションIDをURLの後ろに付加しない。
(3)HTTPS通信で利用するCookieにはsecure属性を加える。
(4)ログイン成功後に、新しくセッションを開始する。
(5)既存のセッションIDとは別の秘密情報を発行する。
(6)セッションIDを固定値にしない。
(7)Cookieの有効期限を設定する。
などの方法があります。

(1)セッションIDを予測困難なものにする。
最初のセッションIDは「1」、その次は「2」。。。
のように単純なアルゴリズムで生成されている場合
その値は第三者に容易に予測されてしまいます。

セッションIDは
生成アルゴリズムに安全な擬似乱数生成系を用いるなどして
予測困難なものにすることで
セッション・ハイジャックを回避することができます。

(2)セッションIDをURLの後ろに付加しない。
WebブラウザでCookieが利用することができない設定になっていると
セッションIDがURLの後ろに付加して利用されてしまい
セッションIDが丸見え状態になります。

そうなると簡単にセッションIDを取得することができてしまいます。

セッションIDは
Cookieに格納して受け渡しするようにすることで
セッション・ハイジャックを回避することができます。

(3)HTTPS通信で利用するCookieにはsecure属性を加える。
HTTP通信は暗号化された通信が行われません。
HTTP通信によりセッションIDのやり取りをすると
簡単にセッションIDを取得することができます。

Webシステムが発行するCookieには、secure属性という設定項目があり
これが設定されたCookieはHTTPS通信のみで利用され
暗号化されたセッションIDで安全にやり取りが行われます。

HTTPS通信で利用するCookieにはsecure属性を必ず設定することで
セッション・ハイジャックを回避することができます。

(4)ログイン成功後に、新しくセッションを開始する。
ログインする前にセッションIDが発行されていると
セッションIDの固定化攻撃に対して脆弱な場合があります。

ログインを行わせるシステムを作成する場合は
ログインが成功した時点から新しいセッションIDを発行するようにし
また、既存のセッションIDは破棄することで
セッション・ハイジャックを回避することができます。

(5)既存のセッションIDとは別の秘密情報を発行する。
セッションIDは盗まれると大変なことになります。

セッションIDだけでなく別の秘密情報と併用することで
二重、三重の壁を作ることで
セッション・ハイジャックを回避することができます。

(6)セッションIDを固定値にしない。
発行するセッションIDが利用者ごとに固定値である場合
この情報が攻撃者に入手されると、時間の経過に関係なく
いつでも悪意のある攻撃者からセッション・ハイジャックされてしまいます。

セッションIDは
利用者のログインごとに新しく発行し、固定値にしないようにすることで
セッション・ハイジャックを回避することができます。

(7)Cookieの有効期限を設定する。
Cookieは有効期限が過ぎるまでWebブラウザに保持されます。

このため、Webブラウザの脆弱性を悪用するなど
何らかの方法でCookieを盗むことが可能な場合
その時点で保持されていたCookieが盗まれる可能性があります。

その盗まれたCookieの中にセッションIDなどが書き込まれていれば
悪意のある攻撃者からセッション・ハイジャックされてしまいます。

Cookieの有効期限を短い日時に設定し
必要以上の期間、CookieがWebブラウザに保存されないようにしたり
Webブラウザ終了時にCookieを破棄する設定にすることで
セッション・ハイジャックを回避することができます。

Webサイトには様々な脅威が潜んでいますので
常に最悪の事態も想定したりして
対策方法を考慮することが大切だと考えます。

Webサイトを構築する側の人は
Webサイトの利用者が安心して利用できるシステムを作成するように
心掛けなければいけません。

Webサイトを利用する側も
インターネットを利用するシステムには
様々な脅威が潜んでいることを頭に入れておかなければいけません。

ネット社会では
企業だけでなく個人にとっても脅威が潜んでいます。

セキュリティ対策は
しっかりと行う必要がありますね。

★セッション・ハイジャックのまとめ

セッション・ハイジャックって
難しいと思われている方も多々いると思いますが
利用者を識別するための情報を乗っ取る攻撃方法です。

セキュリティ対策という言葉を聞いたことがある方は非常に多いと思いますし
セキュリティを意識している人も非常に多いと思います。

セッション・ハイジャックは
今やPCやスマートフォンでインターネットを利用する上で
潜んでいる脅威だと考えますが
明確に内容や仕組みを理解している人は少ないと思います。

ただセッション・ハイジャックというものは
●利用者を識別するための情報を乗っ取る攻撃方法
●Webサイトの作る側も利用する側も考えなければいけないこと
ということだけでも
このコラムを通じて理解していただけましたら幸いに思います。

セッション・ハイジャックは
利用者を識別するための情報を乗っ取る攻撃方法です。

もしセッション・ハイジャックに興味を持たれたら
少しずつ勉強してみてはいかがでしょうか?

ユーザとしては知る必要がありませんが
少しずつ覚えていくことで、点が線で繋がることも多々あります。
そうなると結構楽しくなるかもしれません。

これからIT業界を目指している人には
知っておいてほしい知識だと思いますが
少しずつ勉強していってほしいと思います。

★セッション・ハイジャックについて学ぶ方法は

セッション・ハイジャックについては
新入社員研修やIT・プログラミング関連の研修で
学ぶことができるようになっています。

【IT・プログラミング研修】
●「Java(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/java_training/java_web/

●「Java(Webアプリ開発 - Spring Framework -)」の詳細情報
https://itlaboj.com/courses/java_training/java_spring/

●「Python(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/python_training/python_web/

●「PHP(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/php_training/php_web/

●「C#(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/cs_training/cs_web/

●「ネットワーク基礎」の詳細情報
https://itlaboj.com/courses/it_training/network_kiso/

★「セッション・ハイジャック」習得に必要なもの

セッション・ハイジャックの内容は基本的に座学になりますが
Webアプリケーションの知識や構築方法を学んだ後に行う内容ですので
それぞれのプログラミング言語のセットアップなどが必要になります。

また、このコースは
リアルでもオンラインでも受講することが可能です。

オンラインで受講される人は
「Zoom」が利用できる環境があればいいと考えます。

このコースはシステム開発に直結する話ではあり
SEやプログラマになるための必要な内容になります。

みんなが楽しみながらWebサイトの脅威・対策方法の知識を習得してほしいと思いますし
将来のIT技術者を研修や動画コンテンツを通じて
育成していきたいと考えています。

私は日本全国に多くのIT技術者を育成できる研修を目指していきたいです。
そして一人でも多くの受講者に受講してもらい理解してもらえる研修を行いたいと思っています。

リンクをコピーしました

Mybestpro Members

荒川栄一郎
専門家

荒川栄一郎(IT・プログラミング関連)

IT研究所株式会社

JavaやPythonをはじめ、プログラミングやITに関する講座を40以上用意。講師歴は約30年で、企業研修から個人までオリジナルのテキストで分かりやすく教えています。オンライン講習にも対応。

荒川栄一郎プロは朝日新聞が厳正なる審査をした登録専門家です

関連するコラム

プロのおすすめするコラム

コラムテーマ

コラム一覧に戻る

プロのインタビューを読む

初心者から業務で使う人までプログラミングを教える専門家

  1. マイベストプロ TOP
  2. マイベストプロ東京
  3. 東京のスクール・習い事
  4. 東京のパソコン教室・スクール・講座
  5. 荒川栄一郎
  6. コラム一覧
  7. そのホームページ大丈夫? セッション・ハイジャックって何? それは「利用者を識別するための情報を乗っ取る攻撃方法」です!

荒川栄一郎プロへの仕事の相談・依頼

仕事の相談・依頼