Webセキュリティ入門:HTTP・Cookie・脆弱性
セキュリティとは何か
この回でやること
守る対象とCIA、脅威・脆弱性・リスクの関係を身近な例から学びます。
- 読む 約 10 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
セキュリティという言葉は、Webサービスを作る人なら毎日のように耳にします。この回では、その言葉の中身を、守る対象と3つの目的、3つの用語で組み立て直します。
読み終えるころには、身近なサービスを例に、CIAと脅威・脆弱性・リスクの関係を説明できるようになります。
セキュリティは何を守るのか
情報セキュリティは、大切な情報や仕組みを、望ましくない出来事から守る取り組みです。最初に考えるべきなのは「どんな攻撃があるか」ではなく、「自分たちは何を守りたいか」です。守る対象を資産(Asset/アセット)と呼びます。
Webサービスなら、利用者の氏名やメールアドレス、パスワードだけが資産ではありません。注文内容や学習記録のようなデータ、正しく計算する機能、必要なときに使える状態、利用者からの信頼も大切な資産です。
資産が違えば、困る出来事も必要な対策も変わります。
たとえば、公開予定の記事が予定より早く見られることと、注文金額が勝手に書き換わることでは、守る目的が異なります。まず資産と「どのような状態を保ちたいか」を言葉にすることが、安全な設計の出発点です。
CIA――守る目的を3つに整理する
セキュリティの基本目的は、CIAと呼ばれる3つの観点で整理できます。米国の情報機関を指す言葉ではなく、次の英単語の頭文字です。
- Confidentiality(コンフィデンシャリティ、機密性):許可された人だけが情報を見られること。別の利用者の住所が表示される問題や、パスワードの漏えいは機密性を損ないます。
- Integrity(インテグリティ、完全性):情報や処理が正しく、許可なく変更されていないこと。注文の数量や金額が勝手に変わる問題は完全性に関係します。
- Availability(アベイラビリティ、可用性):必要な人が必要なときに情報や機能を使えること。障害でサービスが長時間停止すると可用性が損なわれます。
3つは互いに独立しているとは限りません。アカウントを乗っ取られれば、非公開情報を読まれ、記録を書き換えられ、本人が利用できなくなる可能性があります。
一方、すべてを最大限に強くすればよいわけでもありません。厳しすぎる確認で正当な利用者まで使えなくなれば、可用性を下げることがあります。
資産に応じたバランスが必要です。
「誰に見えてよいか」「誰が何を変更してよいか」「いつ、どの程度使えなければならないか」の3つを問い直すと、曖昧だった守る目的が具体的になります。
脅威・脆弱性・リスクの違い
次に、似ている3つの言葉を区別します。
Threat(スレット、脅威)は、資産に悪い影響を与え得る出来事や存在です。第三者による不正操作だけでなく、操作ミス、機器の故障、災害も脅威になり得ます。
Vulnerability(ヴァルネラビリティ、脆弱性)は、脅威につけ込まれる弱点です。アクセス権の確認漏れ、推測しやすいパスワード、更新されていないソフトウェアなどが例です。弱点があるだけで、必ず被害が起きるとは限りません。
Risk(リスク)は、脅威が脆弱性を通じて資産へ影響を与える可能性を、起こりやすさと影響の大きさから捉えたものです。
同じ脆弱性でも、インターネットに公開された重要システムと、外部から到達できない一時的な検証環境とではリスクが異なります。
この区別ができると、「怖そうだから全部禁止する」のではなく、重要な資産に対する大きなリスクから優先して対策できます。対策後も残るリスクを確認し、運用しながら見直すことも大切です。
身近なWebサービスで考える
オンラインショップを例にします。利用者の住所は機密性を保つべき資産です。注文内容や合計金額には完全性が必要で、購入手続きを続けられることには可用性が必要です。
もしブラウザから届いた価格をサーバーがそのまま信用して計算するなら、それは処理上の脆弱性になり得ます。
送信値が意図せず変わる、または許可のない人に変えられるという脅威が弱点と結びつくと、売上や信頼に影響するリスクになります。
守る側は、正しい価格をサーバーが管理し、入力値を検証する、といった対策を検討します。
ここで重要なのは、見た目が正常に動くことと、安全であることは同じではないという点です。通常操作だけでなく、どこから来た値を信頼しているか、権限をどこで確認しているかを設計段階から考えます。
観察は許可された範囲だけで
セキュリティを学ぶと、通信や入力を実際に確かめたくなるかもしれません。しかし、技術的に操作できることは、操作してよいことを意味しません。
観察や検証は、自分が所有する環境、または管理者から対象と方法を明確に許可された演習・検証環境だけで行います。
第三者のWebサービスに無断で特殊な入力を送る、認証を回避しようとする、大量の通信を送る、といった行為はしません。
許可された環境でも、対象、時間、方法、データの扱い、問題が起きたときの連絡先を確認します。
本コースの安全な演習機能はまだ提供していないため、このレッスンでは概念の理解に集中してください。
まとめ
あなたのサービスで、いちばん困るのはどれが損なわれたときですか
決めてみようこの先の回でも使います。あとから変えられます。
読んだことを、オンラインショップの話で組み立ててみます
組み立ててみようオンラインショップでは、注文内容や合計金額に が必要です。ブラウザから届いた価格をサーバーがそのまま信用して計算するなら、それは になり得ます。送信値が許可のない人に変えられるという が弱点と結びつくと、売上や信頼に影響する になります。