結果
一次予選通過チームは、以下の12チームです。
2. うまいみず(千葉大学)
4. itsawayaka(静岡大学)
6. P01TERGEIST(名古屋工業大学)
7. GH05TBUSTERS(名古屋工業大学)
10. Guard Penguin(岡山大学)
11. Enduring Pug(岡山大学)
12. Yone-labo(木更津工業高等専門学校)
13. KAGIYA(大阪工業大学)
17. ぽ(東京工業大学)
18. xyu(横浜国立大学)
21. RiST(立命館大学)
25. kobaism(関西大学)
講評
今年は昨年よりも多い16校29チームが参加してくれました。コロナ禍も明けて、すっかり社会も通常運転になり、喜ばしい限りです。代わって世の中を賑わしているのが円安とAIチャットボットです。特に後者は我々にとっても他人事ではありません。簡単なプログラムであればほぼ自動的に書いてくれますし、調べ物にも大変便利です。今回の一次予選の問題のネタも、いろいろとチャットボットに聞いて、紆余曲折を経て行き着いたのですが、私が知らない世界の知識をたくさん教えてくれて、勉強になりました。まあ、直接的にその知識が問題に生かされているところは、結果的にはほとんどないのですが・・・。
さて、一次予選の問題の話に移りますが、今年は宝石商の話を題材にしてみました。最近、ビジネスはどんどんダイナミックに、そして国際的になっていますから、海外で目利きバイヤーが宝石を仕入れてネットで売る、なんていう話ももはや空想ではないと思います。チャットボットによると、宝石の卸売市場は既にオンライン化が始まっていて、鑑定書付きの高価な宝石をネットで販売することが実際に行われているそうですよ。私なんて、服をオンラインで、現物を見ずに買うのも躊躇われるのに(でも身近には、服はもうネットでしか買わない、というオシャレな女性がいたりします)、ましてや高価な宝石なんて!って思います。
その問題の中身ですが、昨年のような管理の緩い店舗の話とは一転して、今度はある程度しっかり運営されている店舗の話に組み上げてみました。宝石は信頼が大事ですからね。バイヤーの目利き力はもちろん、店員やビジネススキーム、システムに至るまで、ちゃんと運用されているような状況が必要でしょう。システムはモール業者がクラウド上にしっかり構築していますし、関係する各個人に対してアカウントも発行されています。ある程度、権限の制御もなされています。そういう中で、いくつか意図的にツッコミどころを用意しておいて、それを正しく直してもらおうという作戦でした。
おっと、ツッコミネタに入る前に、改めて一次予選の狙いについて、話しておきましょう。このコンテストは情報セキュリティに関するコンテストですから、勝つためには技術力は重要な要素です。技術がなければ話にならない、とも言えるでしょう。しかし、CTFを何年かやってわかったことは、技術力だけがある人っていうのは、現場ではあまり役に立たない(いや、役に立つとは限らない、と言うべきでしょう)ということなんですね。技術力は必要だけれども、同時に、ビジネスや社会常識、人間関係等の面でも優れていて妥当な分析や判断ができること、そして何よりも、技術はもっていても悪に手を染めないホワイトハッカーとしての正義感、が必要になります。一次予選では、実際にログを見て何かを発見する、などの技術的なネタは仕込むのが難しいので、技術面はある程度組み込むものの、妥当な分析や判断の力を問う、というのが主旨になります。もちろん、ホワイトハッカーは報告書を適切に書く理系の文章力も必要ですから、そこも一次予選で問うている、ということになります。
今年の問題は、電子モールサイトの中に特殊な店舗を設置するシナリオにしました。特殊な店であるため、通常の電子モールの店舗管理アプリではサポートできず、新規に専用のアプリを設計・実装した状況を考えます。この中で、個人情報漏洩のインシデントが発生します。この問題で問うているのは、情報漏洩の経路をどのようにして絞込み、効率的に対策をするか、その戦略です。まず意識してほしいのは、このインシデントは、本質的には宝石店のインシデントではなく、電子モールのインシデントである点です。Webサイト、アプリともに電子モールの責任の下に構築されています。たまたま宝石店に関する情報のみが漏洩していますが、あくまでも電子モールのインシデントなのです。それを宝石店が自分ごとと捉えて相談したのです。ですから、アドバイスをする際には、まずボールを電子モールに返すこと(もしくは共同で解決にあたる)を勧めて、その上で宝石店の調査も含めて解決策を提案する、という態度になると思います。これを意識できているチームは少数でした。
次に、初動対応です。パスワード変更等の定型的な対応は実施するとして、サービス停止やアカウント停止等の対策に踏み込むには材料が足りていません。(モール全体に影響する可能性があり、実損害が生じますから、慎重な判断が求められます。)ユーザの個人情報へのアクセスを一時的に凍結する程度であれば構いませんが・・・。そういうわけで、具体的な対策を取るためには、漏洩経路を絞り込む必要があります。そこで実施できるはじめの対応が、アクセス権限と漏洩情報のマッチングによる、原因アカウント(特定アカウントからの漏洩であるとすれば、ですが)の絞込みです。これはすぐに実行できます。他方、漏洩したのが著名SNSなので、SNSのアカウントからも漏洩原因となった人を辿れる可能性があります。そうやって、特定アカウントからの漏洩なのかどうかを調べましょう。もしアカウントの特定ができれば、ヒアリングや詳細なログ調査など、可能性が開けてきます。
技術面では、今回は敢えて、データベースのログの確認という実績を出してみました。これで、ログ改ざんによる痕跡除去の可能性はあるものの、まずは相談者を信頼するとして、漏洩経路は正当なアカウントによるアクセスの可能性が高まるわけです。もちろん、サーバに不正侵入してからサービスのスクリプト等をうまく使って正当なアクセスに見せかけて情報を取ることは可能ですが、プログラムの解読が必要になるなど、簡単ではありません。また、SQLインジェクションやクロスサイトスクリプティング等の方法は可能性がほぼなくなったと言って良いでしょう。これでほぼ技術的な探索要素はなくなったかに思えますが、実は、意図的に一つ残していました。それが、アプリへの不正コードの混入です。最近たまに聞く事例ですが、開発時に用いたライブラリに不正コードが混入していて、それをリリースしてしまった可能性はあるでしょう。(ついこの間も、XZ-Utilsにバックドアが仕込まれた件がありましたし・・・。)開発者が悪意を持って不正なアプリを開発した可能性もあります。いずれにしても、アプリからの流出であれば、全てのアカウントの情報が抜かれる可能性がありますから、アカウントが特定できなかった場合の原因の候補になります。
今回の問題はこのように、技術面と人間面の両面から調査方法を絞り込んでもらうこと期待しました。そこに、いくつか小ネタを仕込んだものです。例えば、多要素認証について敢えて言及しないとか、アプリのダウンロード方式の件とか、個人情報へのアクセス権限の不備とか、そういうネタを残しています。毎年参加者チームの皆さんのレベルは上がっていますし、今回は皆さんもAIチャットボットを使えるので、我々もそれを意識して少し難しい問題を意識したつもりです。しかし、というか、やはり、というか、上位のチームはさすがですね。今回もこれらの仕掛けをほぼ網羅してアドバイスを仕上げてきたチームがありました。素晴らしいことです。
今年の戦況ですが、全体的に、考えられる原因のカバー率は、例年に比べて上がったと思いました。昨年も人的な要素の強い問題だったからなのか、AIチャットボットを利用した結果なのか、それとも偶然なのか、それはわかりませんが、レベルは上がったと言って良いでしょう。一方で、SNSサイトに申請して漏洩した人を確認するとか、アプリへの不正コードの混入など、見落としが多い項目もいくつか見られました。実はこれは、私がAIチャットで問い合わせた結果と概ね符号します。私が試した限り、一般論からの典型的なインシデント原因はAIチャットはきっちり指摘してくれますが、ケースに特有の事象はあまり指摘してくれませんでした。つまり、AIチャットの指摘は一般的な浅い指摘にとどまるわけです(あくまでも現在のAIの知能レベルでは、ですが)。そういう意味では、AIチャットはツールとして参考のために使える一方で、本当の実力は各チームの知識と論理的思考力に裏付けられて、各チームの文章に表れると言って良いのだろうと思います。
ボーダーライン周辺は激戦で、我々も迷った末に予選通過チームを決定しました。誰が見ても納得できるラインはどこか、を意識して決めましたが、ボーダー付近のチームはいずれも、少なくとも原因アカウントを絞り込むところまでは見えていたので、必然的に、それ以外の部分で決まることになります。最終的には、原因が列挙できている複数チームの比較において、どのように切り分けて原因を見極めるのかの説明が勝敗を分けることになりました。このとき、どのような初動調査を行うのか、長期的視点からの改善点なども評価に入れさせてもらいました。結果として、原因の列挙、切り分け戦略、モール等の意識も含めたバランス感のあるプレゼン力、初動調査方針、長期的視野からの改善点など、全てがそれなりのレベルで揃ったチームが勝ち抜けたと思います。恐らくこの傾向は、今後の情報危機管理コンテスト一次予選においても変わらないでしょう。ぜひ、今回の参加経験を教訓として、来年にもチャレンジしていただければと思います。
勝ち抜けた12チームの皆様、おめでとうございます。
ぜひ、二次予選も大いに楽しまれてください。
そして、最終予選まで勝ち抜けて、白浜までお越しください!
現地でお待ちしていますよ。
一次予選を勝ち抜けなかったチームの皆様は、お疲れ様でした。
残念ではありましたが、一次予選だけでも、経験になり、楽しめるように心がけたつもりです。
有益な時間を過ごしたと思っていただければ、我々としては大変嬉しく思います。
何回かチャレンジして、今は安定して二次予選に進むようになったチーム(や学校)もありますから、
ぜひ過去問を研究して、来年度にもチャレンジください!
第19回情報危機管理コンテスト一次予選担当
吉廣・藤本