特別講演「ソフトウェアの脆弱性を突かれ攻撃されるまでの一部始終」では、サイバーディフェンス研究所 技術部の岩崎徳明氏が講演を行った。個人的にもバグハントが大好きだという岩崎氏は、多くのWebアプリで発見され、放置される「クロスサイトスクリプティング(XSS)」について掘り下げる。
XSSはWebアプリだけではなく、ソフトウェアにおいても検出されやすい脆弱性だ。しかし、その実態は分かりにくいと岩崎氏は述べる。XSSは受動的な攻撃に悪用されることが多く、その影響もWebアプリの特性によって変化する。そのため、まずは「XSSがどのように攻撃に使われるか」を理解することで、その影響範囲を把握すべきだという。
XSSには幾つかの種類がある。そのうちの1つが、リクエストの中にスクリプトを埋め込み、それを脆弱なWebサーバに送信することでリクエストの送信者に不正なスクリプトを実行させる「反射XSS」だ。岩崎氏は例として、あるログ収集分析ソフトウェアのXSS脆弱性(既に修正済み)を例に取り、その攻撃内容を紹介する。この手法では攻撃者が用意した「スクリプトを組み込んだURL」を用意し、その“わな”に誘導する必要がある。
岩崎氏が発見したのは、ホストヘッダを経由したXSSだ。リクエストのホスト部に埋め込んだスクリプトがそのまま展開されるというXSS脆弱性が存在したが、そのままでは“わな”を作れない。ところが、Internet Explorer 11に固有の挙動を組み合わせることにより、攻撃者の意図するスクリプトを被害者のPCに実行させ、ログ収集分析ソフトウェアのXSS脆弱性を突くことができるようになるという。
Internet Explorer 8以降には「XSSフィルター」が実装されている。単純なXSS攻撃はこれにより防ぐことができるのだ。ところが、攻撃者はこのフィルターをバイパスすることを知っており、今回の攻撃もタグのフィルターをすり抜けるよう細工することで、最終的に「突破」できてしまうという。
XSSは“わな”のURLを踏むことでアラートダイアログが表示されるという記事が多い。そのため、「XSS脆弱性があっても、大した攻撃はできない」と思い込んでいる人もいるかもしれない。実は、XSS脆弱性により、システムから不正に情報を取り出すだけではなく、管理者権限を持つユーザーを勝手に登録することもできる。
岩崎氏がデモを行った2つの事例は、まさにXSS脆弱性の幅広さを示すものだ。1つ目の攻撃手法は“わな”のURLを踏んだ被害者の「セッション情報」を抜き出すもの。被害者のブラウザにXSSを利用してスクリプトを実行させると、セッションIDを盗むことができる。これは「セッションハイジャック」と呼ばれる手法で、セッションIDを利用することで、“なりすまし”が実現できてしまう。
とはいえ、単純な手法だと「セッションハイジャック対策」を行っているシステムには攻撃ができない。クッキーにHttpOnly属性が付与されていれば、セッションIDを盗み出すことはできないからだ。そもそも攻撃者が外部にいる場合は内部にあるログ収集分析ソフトウェアへのアクセスもできない。そこで岩崎氏は、ブラウザの脆弱性を攻撃するフレームワーク「BeEF」を使い、被害者のブラウザを遠隔操作することでこの回避を行う、2つ目の攻撃手法を紹介した。
XSSで挿入したJavaScriptは、同一のオリジンと判断されるため、レスポンスをJavaScriptで取得することが可能になる。リクエストではセッションIDが自動的に送信されるため、被害者PCのブラウザを経由して“なりすまし”によるアクセスを行え、管理者権限を持つ利用者を不正に追加することもできるようになる。
「ソフトウェアのXSSは内部のIPアドレスの特定が必要な上、被害者を“わな”のURLにうまく誘導する必要があるなど、攻撃を成功させるための条件は多い。しかし、成功してしまうと被害者に“なりすまし”た不正操作が可能だ。社会インフラや個人情報を取り扱うシステムなどであれば、その影響は非常に大きい。脆弱性が修正された最新バージョンのソフトウェアを利用をするとともに、WebブラウザやOSも最新のセキュリティアップデートを行うべきだ」(岩崎氏)
Copyright © ITmedia, Inc. All Rights Reserved.