情報セキュリティの技術を競うコンテスト「CTF」の問題から情報システムの仕組みやセキュリティを理解する連載。初回は、「攻撃者は機密情報ファイルのURLをどうやって特定したのか?」という問題について解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
近年、テレワークの普及やデジタルトランスフォーメーションの促進により、あらゆる業務が情報システムに移行しつつあります。それらの情報システムを扱う全ての人にとって、セキュリティ知識はなくてはならないものです。一従業員にも容赦なくマルウェアが添付されたメールが届きますし、ささいな操作ミスでも重要な情報が全世界に漏えいする可能性があります。個人のSNS利用が重大なセキュリティ違反を起こす場合もあります。
ところで読者の皆さんは「CTF(Capture The Flag)」をご存じでしょうか? CTFとは、情報セキュリティの技術を競うコンテストです。参加者には情報セキュリティに関する課題が与えられ、課題を解決することで得られる得点を競います。出題される課題のジャンルは「Web」「ネットワーク」「バイナリ解析」「暗号」など幅広く、与えられる課題はクイズやパズルのような形で、つい興味を持って取り組んでみたくなるようなものになっています。一見、遊びのように思われるかもしれませんが、セキュリティ技術を実践的に学ぶことができる場であり、学んだ技術の腕試しの場でもあります。
今やCTFは、人材育成や人材発掘の手段として、世界中の多くの組織や企業に注目されています。筆者が所属する会社も、このような観点でCTFに注目して活用している企業の一つです。全従業員のセキュリティ知識の底上げとセキュリティ人材の育成、発掘を掲げて、社内向けのセキュリティコンテスト(CTF)を2017年から毎年開催しています。
本連載では、このコンテストで出題された問題から毎回一問一答をします。そして、その問題からどのような技術や学びが盛り込まれているのかを解説していきます。連載を通して、情報システムの仕組みやセキュリティを理解し、興味を持っていただけたら幸いです。
早速、コンテストで出題された問題を紹介します。今回は「Web」ジャンルの問題です。なお、以下に書かれた問題文中のURLは架空のものですが、社内向けのコンテスト開催時は有効なURLを用意して出題していました。今回は、試すことはできませんが、解答を考えてみてください。どうしたら秘密の情報を見つけることができるでしょうか?
株式会社H社の2017年度第2四半期の決算情報は、2017年10月30日の15時に開示されることになっています。今回開示する決算情報はかなりの好業績なので、公開されれば株価はかつてない高値がつくのに違いありません。
IR(Investor Relations)担当のYくんは、決算開示の1週間前に決算情報ファイルをWebサーバ上にアップロードしました。開示時間になったら決算情報ファイルへのリンクを公開するつもりです。
なお、昨年(2016年)度の第2四半期決算は2016年10月29日に開示されていて、URLは次の通りです。
http://xxx.xxx.xxx.xxx/kessan/h28/kessan-2q_161029.pdf
(※URLは架空のものなので、アクセスできません)
しかし、決算開示の3日前、H社の株価がなぜかすでに急上昇していたのです。
「もしかして社内にインサイダーが? お、俺じゃないよぉー」と、Yくん。
インサイダーじゃないとしたら、どこかから決算情報が漏れたに違いありません。でもいったいどうやって……。
H社の決算はどうやって漏れたのでしょうか。原因を究明し、決算情報ファイルに書かれている秘密の情報を見つけてください。
この問題に取り組むことで、以下のようなセキュリティに関する知識を学ぶことができます。
前提としてCTFは、その名の通り、「フラグ」を入手することが正解の条件です。フラグは、特定の形式の文字列が多く、今回の場合、「HSCTF{xxx} 」(xxxは問題ごとに割り当てられた任意の文字列)という形式のフラグを見つけることができれば正解となります。
問題文から、目的の決算情報ファイルはWebサーバ上にすでにアップロードされていたことが分かります。ただし、ファイルにアクセスするためのURLは分かりません。しかし、昨年度、同様のファイルを公開したときのURLが分かっています。昨年度のURLは「kessan」「h28」など、何を意味するか分かりやすい単語の組み合わせで作成されています。今年度のファイルも同様の命名規則に従ってURLが決められている可能性が高いと考えます。これらの情報から、今年度のファイルのURLを推測できそうです。
昨年度のURLにある各文字列は、下記表のような意味を持つと推測できます。
URL内の文字列 | 意味 |
---|---|
kessan | 決算 |
h28 | 平成28年 |
2q | 第2四半期(2nd quarter) |
161029 | 2016年10月29日(昨年度の情報開示日) |
このことから、今年度のURLを推測すると、下記のようになります。
http://xxx.xxx.xxx.xxx/kessan/h29/kessan-2q_171030.pdf
(※赤字は昨年度との差異)
なお問題文中には、今年度の開示日が書かれていましたが、現実の場合では推測に使用する正確な日付が公表されていない可能性もあります。このような場合でも、昨年度に近い日付が開示日となることが推測できるので、攻撃側は昨年度開示された10月29日の前後数日分を試してみれば、正解を導けます。
推測したURLをブラウザに入力すると、見事、今年度の決算情報ファイルが表示され、フラグを得ることができました。
なぜこのような情報漏えいが起こってしまったのでしょうか? 原因として、下記の2つが考えられます。
原因
インターネットに公開されたWebサーバ上のWeb公開用のディレクトリに配置したファイルは、誰でも閲覧可能です。それは、リンクがあるかないかによりません。ですから、Webサーバ上のデータは、適切にアクセスを制御しなければなりません。アクセス制御の不備が原因で、Webサーバで扱う個人情報やWebサーバの設定ファイルなどの重要な情報まで閲覧できてしまう可能性もあります。
対策
対策としては以下のようなものが考えられます。
パストラバーサルとは、アクセスしたいファイルやディレクトリのパスを外部から入力できるようなアプリケーションにおいて、不正な文字列を入力して想定外のファイルにアクセスすることです。
また、情報処理推進機構(IPA)が、Webサイトを作成する際に注意すべきポイントをまとめたドキュメント「安全なウェブサイトの作り方 改訂第7版」を公開しています。基本的な事項が網羅されているので、参考にするといいでしょう。
原因
決算情報ファイルやファイルが配置された場所を示すパスには、日付や関連性の高い単語(kessan)などの、誰でも容易に推測できる名前が付けられていました。このような推測可能な文字列をファイル名やパスに使ってしまうと、攻撃者がURLを推測して、リンクを公開していないファイルにもアクセスする可能性があります。
対策
未公開のファイルや、閲覧者を制限したいファイルにアクセスするためのファイル名やパスには、推測が難しいものを使うことをお勧めします。日付や数字の連番、ユーザーID、関連する単語などを避けて、ランダムな文字列を使うことが望ましいでしょう。ただし、これは完全な対策にはならず、前述のアクセス制御の問題があった場合、意図しないファイルの閲覧を許してしまう可能性が残ります。あくまで軽減策として認識する方がいいと思います。
なお、このような推測可能な文字列は、ファイル名に限らず、ユーザーIDやパスワードなどの認証情報、アクセス制御に関わるものについても避けるべきです。ファイルアクセス同様に問題となる可能性があります。
問題は解けたでしょうか? 今回問題となった点の中でも、特にアクセス制御はセキュリティにおいて非常に重要なポイントです。今回のようにインターネットに公開するWebサーバでアクセス制御に不備があると、全世界から攻撃を受けかねません。このような問題が起こらないようにするには、設計、開発、運用といった全ての工程において、セキュリティに配慮して作業することが大切です。
CTFの問題は、攻撃者視点で解く必要があるので、普段のシステム管理者の立場では分かりづらい問題点に気付かせてくれます。興味を持った方は、ぜひ次回の問題にも挑戦してみてくださいね。
Copyright © ITmedia, Inc. All Rights Reserved.