「SECCON 2017 x CEDEC CHALLENGE」を開催しました!
8〜9月にかけて、ゲームのクラッキングやチートを扱った競技「SECCON 2017 x CEDEC CHALLENGE」を開催しました。
この競技は実際のセキュリティ診断をモデルに、ゲームの問題点を探し、その対策案を考え、プレゼンテーションにまとめるまでを行うという、少し変わったセキュリティ競技になっています。詳細は告知ページにまとめてあります。
今年も含め、問題ファイル(ゲーム)一式は公開されており、ゲームサーバも稼働していますので、もし興味があればトライしてみてください。
過去の問題ファイル(ゲーム)一式。
「SECCON 2017 x CEDEC CHALLENGE」問題ファイル
「SECCON 2016 x CEDEC CHALLENGE」問題ファイル
「SECCON 2015 x CEDEC CHALLENGE」問題ファイル
今年は43チームの参加があり、その中でもっとも良い資料を作成したチーム「Harekaze」が優勝となりました。そしてHarekazeには9月1日にパシフィコ横浜で行われたCEDEC 2017にて、ゲームの解析手法やセキュリティの問題について解説してもらいました。
Harekazeの資料はCEDECのWebページからダウンロードできます(ログインが必要)。
このコンテストは2015年からスタートし、今年で3回目となりました。毎年若干のルール変更はあるのですが、基本的にはスマートフォンゲームを対象にセキュリティにおける問題点を探す競技になっています。もちろんゲーム(クライアント)は配布されているため、解析を続ければ必ず動作の詳細を知ることができますが、このコンテストではそれに加えて、サーバサイド側にも脆弱性が存在しており、それを利用することでゲームサーバに影響を与えられるようなものも意図して実装されています。
また競技期間は8月1日から8月15日までの2週間ほどで、それだけの期間でどこまでゲームが分析されうるのか、といった点も見所ひとつです。
今年は2016年の優勝者(白木氏)にも問題作成に協力してもらい、また、ゲームエンジンもUnityだけではなく、Cocos2d-x、Unreal Engineを用いたプログラムの分析についても出題し、これまでとは少し違うタイプのコンテストになりました。
問題となるゲームそのものも仕様をかなり現実のものと似せて作っており、ガチャやスタミナ、課金要素といったものも実装しています。もちろんそれはセキュリティ的な観点でも同様で、ゲームはサーバとの通信にSSLを使っていますが、それに加えてゲーム独自でも通信の暗号化を行なっています。なので、通信プロトコルを解析するためにはMiTM(Man-in-the-Middle)をするだけでなく、ゲーム本体のコードを分析する必要もあります。
競技はたった2週間ですが、上位3チームはほとんどゲームサーバとの通信を解析しており、特に対策をしていない(UnityのIL2CPPによる)通常のビルドだけではかなり短期間で通信内容を分析されることが示されました。
もちろんアプリ側でゲームの演算を処理する以上、時間をかければいつか解析されることは容易に想像できます。しかし、それが実際にはどのくらいの期間で行われるのかといった実感としての数値は、このようなイベントを通してでなければあまり認識し難いです。そういう意味で、今回のコンテストにおいて、2週間で3チーム、また1位のチームにおいては数時間で解いたとのことだったので、かなり短期間で解析されることが実感できました。
また優勝チーム「Harekaze」の技術力はもちろんですが、エンジニアリングは環境やツールによっても大きく進歩します。昨今ではゲーム分析に関する情報も多く、ツールも揃っていますので、そういう様々な要因により、以前よりもなおゲームをチートされやすい状況になっていると言えるのかもしれません。
優勝チームの発表の後は、実際にゲームのセキュリティ診断を業務として行っていた株式会社リクルートテクノロジーズの杉山氏に、仕事として診断を行うという視点でゲームセキュリティについて話していただきました。
仕事で診断を行うというのは、エンジニアリング以外にもそもそもどの程度まで問題点を許容するか、どこまでは修正すべきかといった"修正に対する線引き"を見極めることでもあり、ゲーム解析の技術とはまた違った考え方が必要になります。このように実際の競技の参加者と、それを業務にしている人、双方の視点からセキュリティに対する考え方を聞くことができるというのも、このイベントの面白いところだと思います。
さて、このイベントも今年で3年目ですが、競技としても大分煮詰まってきたかなと感じています。来年ももし同じように開催できるならば方向性を少し変えて開催することになるでしょう。例えば最近はapkはもちろん、Unity製アプリを対象としたセキュリティツールも多くリリースされています。そういったものを用いて作られたゲームに対して、同じようなコンテストを開催し、セキュリティツールの性能を実感するといった視点で実施できれば面白いなと考えています。ただゲームを分析するのではなく、何かセキュリティ機能/製品/プラットフォームに守られているものに対してトライしてみるといった競技をやってみたいと思います。
とはいっても、来年の話なのでどうなるかは本当に分かりませんが、今年とは違う、また新しい「何か」に挑戦できればと思います。今後ともよろしくお願い致します。