Interop Tokyo 2022出展レポート

三大脆弱性の一つ消滅の危機!? いやその前に、三大脆弱性って一体何?

シェア ツイート

こんにちは。ブログ担当のもちゃじです。なんと三大脆弱性の一角が崩れようとしている!?との情報を耳にしました。え、脆弱性の一つが無くなる?無くなる!?おお、それはいかん。(いや、良いんです!)

ここのところセキュリティ診断を勉強していたせいか、脆弱性についてもっと知りたいと思いだし、じっくり勉強するつもりでいたのです。いやそんな悠長なこといってられないじゃないかー。脆弱性界に下克上が起こらんとする今、ならばその前に現役で三大を張っているモノどもについて書いておかねば!

ということで、今回は三大脆弱性について書きます。

情報漏洩ニュースのたびに「うちのサイトは大丈夫かな」と心配されていませんか?

脅威に対する「安心」が手に入れば、心配事はなくなります!

三大脆弱性って何がある?

三大脆弱性

  • SQLインジェクション
  • クロスサイトスクリプティング(XSS)
  • クロスサイトリクエストフォージェリ(CSRF)

言えます?

最初、もちゃじは言えないし書けなかったです。セキュリティワードムズカシイアル。とはいえ、Webセキュリティを語る上ではしっかりと押さえておかなければならない三つ。

カタカナ、マケナイ。

ところで、三大○○というのは三つの中で順位がつけられないものだと思っていました。ロックフォール、ゴルゴンゾーラ、スティルトンも、お互い俺が1番と思いながらの三つ巴ですし(三大ブルーチーズの話です)。

でも三大脆弱性はその一角が崩れそうなんですって。下克上か!?失脚か!?「君たちは今日から三大だ!」って誰が決めているんでしょう。ご存じの方いらしたら教えてください。

では順番に見ていきましょう。

1. データベースを不正に操作、SQLインジェクション

Webアプリケーションのデータベースを不正に操作して攻撃されてしまう状態になっていること(脆弱性)、またはそれを利用した攻撃です。

「SQL」はデータベースを操作するための「言語」、「SQL文」はデータベースへの「命令」のこと。データベースにデータの取り出しを要求したり編集操作を行ったりするときに使います。同じような命令が多いので、あらかじめ穴埋め形式の命令文のひな型(SQL文)を作っておく。ユーザーが値を入力すると穴埋めのところに反映され、命令文が完成。データベースは命令文に従い該当の情報を取り出してくれて、画面に表示されます。これが通常。

ところが、その穴埋め部分に想定していない悪意のある情報が入力されても、SQL文が生成・実行されてしまいます。それによりプログラムによってはデータの改ざんや情報漏えい、システムの停止などにもつながる恐れがあるのです。

あな恐ろしや。このように、不正なSQL文を注入(インジェクション)して攻撃できてしまう状態(脆弱性)のことや、それを利用した攻撃をSQLインジェクションといいます。

Webセキュリティ勉強中のもちゃじは、なんか単純な攻撃だなーと思ってしまうのですが、企業の大小問わず被害にあっているところをみるに、Webサイト開発者のセキュリティ知識に委ねられるところを突いてくるのか!と納得しました。

2. 複数のサイトをまたいで攻撃、クロスサイトスクリプティング

次はクロスサイトスクリプティング(XSS)です。

ユーザーがWebページにアクセスすることで不正なスクリプトが実行されてしまう脆弱性のこと、またはそれを利用した攻撃。HTMLを含んだ内容を投稿できる掲示板などで発生するもよう。

例えば不特定多数のユーザーIDとPW情報を入手しようとした場合

  1. 悪意のあるユーザーが、掲示板サイトにいたずらする(罠スクリプトを仕込む)
  2. 掲示板のヘビーユーザーの一人であるもちゃじは、何も知らずにいたずらされた(罠スクリプトが仕込まれた)サイトにアクセスする
  3. 仕込まれた罠スクリプトが実行される。罠サイトが表示される。罠サイトでは、掲示板のログイン画面にそっくりな画面が表示される。罠サイトとは知らず、もちゃじは掲示板用のIDとPWを入力してログインボタンを押してしまう
  4. 通常のログイン後と同じ画面を表示する。もちゃじは罠サイトだったことに気が付かない。この時、罠サイトは掲示板ユーザーのIDとPW情報を取得している
  5. 悪意のあるユーザーは、罠サイトからログイン情報をゲット
  6. 罠サイトで取得したIDとPWを使って、アカウントの乗っ取りなどを行う。また、罠サイトにアクセスした時にウイルス感染させることもある

掲示板を運営している企業は、被害に遭っている(罠スクリプトが仕込まれている)ことに気付かない

サイトをまたいで(クロスサイト)、スクリプトを仕込むからクロスサイトスクリプティング。このやり方でたくさんの人の暗証番号なども入手できてしまうでしょうし、いろいろな悪さが考えられますね。

1番恐ろしいと感じたのは、被害にあっている人が気付かないという点です。スクリプトを仕込まれたのが掲示板のほんの一部分で、他は本物の掲示板なら、それに気付かない。ある一部分が乗っ取られているともいえるのですが、気付かない。げに恐ろしきはXSS。

ただ、少し被害の実現度は低いのかな、とも思います。スクリプトが仕込まれたサイトをクリックさせなければならない分、クリックさせるための信用度が必要(怪しいリンクはクリックしない)ですし、仕込むスクリプトも物理的なスペースの問題で大きなものは仕込めませんし。

比較的簡単な攻撃なのかなと思うものの、足がつきづらいこともあり、こちらも三大脆弱性の一つとされるようです。

3. 他人になりすまして攻撃、クロスサイトリクエストフォージェリ

最後はクロスサイトリクエストフォージェリ(CSRF)。

ユーザーにリンクを踏ませて不正なリクエストを送信させ、意図しない処理が実行されてしまう脆弱性のこと、またはそれを利用した攻撃。あれ、クロスサイトスクリプティングと似ているような?

いえ、似ていますが違います。こちらはクッキーの仕組みを悪用したものです。

例えば

  1. もちゃじが推しのサイトにログインします
  2. 推しサイトのログイン情報として使われるセッションIDがクッキーとしてもちゃじのブラウザに保存されます
  3. 悪意のあるユーザーが「不正なリクエストを送信させるページ」へ誘導するURLを送ってきます。それが「推しの抱き枕はこちらのスペシャルサイトまで!」と書かれたリンクだったら、推しの抱き枕!ってことでもちゃじはおそらくクリックしてしまいます
  4. 案の定クリック。罠サイトへ誘導されてしまいます。(セキュリティの考え方では、この誘導するURLを送ってくる=攻撃の一つと考えます)
  5. 罠サイトは、自動的に推しサイトへ偽の投稿リクエスト(推し批判記事)を送信すると、推しサイトのクッキーも一緒に送られます
  6. 罠サイトは自動的に、本物の推しのサイトへ移動します。もちゃじ、罠サイトにアクセスしたことなんてちっとも気付きません
  7. 推しのサイト側では、リクエストに推しサイトのクッキーがついてきたので、罠サイトの偽の「記事を投稿する」リクエストをもちゃじからと判断し、記事を投稿します

→もちゃじが知らない間に推し批判の記事がアップされてしまう、という流れ

なぜそんなことができてしまうかというと、推しサイトのクッキーはブラウザに保存されているので、そのブラウザで罠サイトを開くと、ブラウザが良かれと思って罠サイトのリクエストでも推しサイトクッキーをつけてしまうからなのです。

これ、ECサイトだったら勝手に商品購入されたりしますよね。生恐ろしや……。

どれが消滅するって?

見てきた脆弱性、全て恐ろしいですね。さすが三大を名乗るだけのことはあります。一体どの脆弱性が消滅するのでしょうか。

それは、クロスサイトリクエストフォージェリです!

クッキー、度量が大きいですよね。推しのサイトで発行されたのに、罠サイトから推しサイトへのリクエストにも使えてしまうなんて。でもそれも今は昔。

今は、推しサイトで発行された推し印クッキーは、推しサイトから送信されるリクエストにしか使えません。罠サイトから推しサイトへのリクエストには使えないんです。

ただ、そうなったのは最近の話なのだそう。サイトを提携しているときは、Aサイトで発行されたクッキーを、BサイトからAサイトへのリクエストにもつけてほしいという、サイト開発者側からの要望もあったとか。2020年に猶予を設けて段階的に禁止するようにして、今はほぼ使えなくなりました。

なので、クッキー問題が解消されんとする今、クロスサイトリクエストフォージェリの脆弱性は消滅に向かっているんです。

次にのし上がってきそうな候補は?

ない!

いや脆弱性の種類はたくさんあるし、1日100万種類以上のマルウェアが新たに生産されているという話もあるし、どれも侮ってはならないものだと思うのですが、三大の一角を任せるほどのものは今のところ見あたらないそうです。(2022年3月現在、ソース 先輩)

ただし、世界情勢が動くとき、ハッカーが暗躍するのもまた事実。サイバー攻撃への警戒は怠ることができないのと同時に、セキュリティ知識と意識を持つことがやはり大事なのだと襟を正す昨今です。知らないだけで被害にあっているかもしれませんしね。

まとめ

今回は三大脆弱性の一つが消滅するかもしれないということで、それぞれの脆弱性の概要を書きました。

  • SQLインジェクション-データベースを不正に操作
  • クロスサイトスクリプティング(XSS)-複数のサイトをまたいで攻撃
  • クロスサイトリクエストフォージェリ(CSRF)-他人になりすまして攻撃

そして、クロスサイトリクエストフォージェリ(CSRF)がクッキーの改善により消滅しようとしていることが分かりました。CSRFにとって代わるような脆弱性も今のところないようですし、今のところ下克上は起きていないようです。CSRFが失脚していっただけのことです。

今回出てきた用語

スクリプトJavaScript、PHP、Perlなどで作ったプログラム。ソースコードを書いて、すぐに実行できるプログラム
クッキーWebサイトを利用した際に保存されるユーザーのアクセス情報。ユーザーごとに割り振られた識別ID、氏名、サイト訪問日時などの情報がブラウザに保存され、次にそのサイトにアクセスした時に、クッキーが同一ユーザーであることを識別します。それによりサイト利用がスムーズに行われる

あなたのWebサイトも、脅威に対する「安心」を手に入れませんか?

ふう、書き終えた

ところで、人間には六つの脆弱性があるそうです(byロバート・チャルディーニ)。

権威、好意、希少性、あと三つ今パッと出てきませんが、それらに対してどうも弱い。ふむふむ。面白いですね。はい、ございますよ、脆弱性沼がここに。

ライター/もちゃじ

IT業界に縁なく秘書畑をさすらい、前職はインドで社長秘書。ほぼ日本語とパッションのみで乗り切ったずうずうしさはスキルの一つか。完全なインドア派ながらたまにふらりと旅に出る。行き場のない母性を持て余し、友人の犬を溺愛するもほえられる。体が硬く、インドでヨガティーチャーに笑われたことに深く傷つく一面も。

ITド素人の私がWebセキュリティについて学び、レベルアップしていく(予定です)様子をお届けします。学びを発信することで、少しでもWebセキュリティに関する「難しそう」というイメージが下がり、苦手意識のある方たちに届いたらうれしいです。

シェア ツイート

カテゴリー

キーワード