Webセキュリティ入門:HTTP・Cookie・脆弱性
なぜWebサービスは攻撃されるのか
この回でやること
攻撃者の動機と、Webサービスが狙われやすい理由を整理します。
- 読む 約 7 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
Webサービスは、公開した瞬間から世界中のどこからでも到達できる場所に置かれます。この回では、そこに向かってくる側の動機と、Webという形の性質を結びつけます。
読み終えるころには、自分のサービスが攻撃の対象になる筋道を、動機と性質の両方から説明できるようになります。
攻撃には目的がある
攻撃は、技術力を誇示するためだけに行われるものではありません。ほとんどには目的があります。
- お金。決済情報や個人情報の売却、不正な送金、身代金の要求
- データそのもの。他社の顧客名簿、未公開の資料、認証情報
- 踏み台。別の標的を攻撃するための出発点として、あなたのサーバーを使う
- 妨害。競合や特定の主張のためにサービスを止める
このうち「踏み台」と「妨害」は、あなたのサービスの価値とは無関係に成立します。小さなサービスでも、動いているサーバーと使えるアカウントがあれば、それ自体が価値になります。
規模は防御にならない
「小さいから狙われない」が成り立たない理由は、攻撃の多くが人ではなく機械によって行われるためです。
インターネットに公開されたアドレスは、公開した直後から自動的に走査されます。走査する側は、どの会社のどんなサービスかを見ていません。見ているのは「既知の弱点を持つソフトウェアが動いているか」だけです。狙って選ばれたのではなく、条件に合ったから引っかかるという順番になります。
攻撃者があなたを選んだのではなく、機械が条件に合うものを拾い、そのあとで人が中身を見る。この順番を理解すると、無名であることが対策にならない理由が分かります。
Webサービスという形の性質
Webサービスには、狙われやすくなる性質がいくつもあります。
常に開いている。 24時間、世界中のどこからでも到達できます。営業時間も、入り口の物理的な鍵もありません。
入り口が多い。 画面の数だけURLがあり、その裏にAPIがあります。ログイン、検索、投稿、ファイル送信。それぞれが入力を受け取る場所です。
入力を受け取ることが仕事。 使ってもらうには入力を受け付けなければなりません。受け取る以上、想定していない値も届きます。
部品でできている。 フレームワーク、ライブラリ、実行環境、データベース。自分が書いていないコードが大量に動いています。そのどれかに弱点が見つかれば、同じ部品を使う全サービスがまとめて対象になります。
完全に防ぐことはできない
ここまでを踏まえると、目指す状態が変わります。
攻撃をゼロにするのではなく、起きたときに被害を小さくし、気づけるようにすることが現実的な目標です。入り口を減らし、届いた入力を疑い、権限を分け、記録を残す。ひとつが破られても次で止まる形にしておきます。
前回学んだリスクの考え方が、ここで効いてきます。すべてを同じ強さで守るのではなく、失って困るものから順に手を入れます。