ADVENT CALENDAR

ゲーム製作とCTF

By argonism

これは AmusementCreators 2020 アドベントカレンダー の 21 日目の記事です。

はじめに

こんにちは。

今回はCTFはいいぞ&ゲーム製作セキュリティ啓蒙記事を書こうかなと思います。

CTFって何?

教えてWikipedia!

コンピュータセキュリティの分野におけるキャプチャー・ザ・フラッグ(CTF)は、コンピュータセキュリティ技術の競技である。CTFは通常、参加者に対しコンピュータを守る経験に加え、現実の世界で発見されたサイバー攻撃への対処を学ぶ教育手法として企画されている。

cited from Wikipedia

CTFとは、簡単にいうとセキュリティコンテスト的なやつです。参加者は、企画者が用意したプログラムに攻撃を仕掛け、Flagと呼ばれる問題ごとに用意された特定の文字列を奪取することで、ポイントを稼ぎます。最終的に、一番ポイントを稼いだチームが勝者となります。

どんな問題が出るの?

CTFで出題される問題は多岐に渡ります。

またもwikipediaさんに頼ると、

  • リバースエンジニアリング
    Binaryとも呼ばれる。基本的にはシリアルキーのクラッキングなどと同じ技術を用いてフラッグ(旗に相当するファイルの内容)を奪取することで得点となる。
  • Forensics
    HDDやUSBメモリや物理メモリのイメージファイルを解析し、その中からフラッグを奪取することで得点となる。
  • Pwnable
    プログラムの脆弱性を突き、不正侵入・不正昇格をすることで得点となる。 基本的な部分はBinaryと同じ(攻撃対象の解析)だが、脆弱性の発見及び脆弱性を攻略するExploitコードを記述する技術が必要である。 サーバ内のフラッグを奪取することで得点となる。
  • Web
    ウェブアプリケーションの脆弱性を突いて(XSS・SQLインジェクション・OSコマンドインジェクションなど)サーバ内に侵入し、フラッグを奪取することで得点となる。
  • Network
    ネットワークのパケットを解析し、その中からフラッグを奪取することで得点となる。 ネットワークの基礎的な知識と、それぞれのプロトコルに関する深い知識が要求される。
  • Miscellaneous
    上記ジャンルに分類できない、またはセキュリティ関係の雑学やパズルなどの問題が出題される。

という感じです。

いったいこれがどうゲーム製作に関連するのでしょうか。

(セキュリティは任意の分野と関連しそうな気もしますが…)

CTFとゲーム製作

ここまで読むと、ゲーム製作は「チート」対策と関連しそうだなと、勘の良い方は思ったかもしれません。

確かにその通りです。

ゲームをリバースエンジニアリングをして、適当なタイミングでメモリの値を書き換え等行ってしまえば、チートができてしまします。

しかし、ゲーム製作と関連するのはチートだけではありません。

ゲームがサーバーとやりとりするようなゲーム出会った場合、サーバー側でもセキュリティの問題は起こりえます。

他にも、こういう可能性もあります。

鍵付きzip

ゲームのリソースを公開したくないため、ゲームに付属させるリソースは鍵付きzipで圧縮して、 ゲーム内で解凍して使うというシーンがあったとします。

この鍵付きzip、適切に運用できるなら簡単に解読されることはないのですが、 特定の条件が揃った時、鍵を知らなくとも解読されてしまいます。

また、この特定の条件は、ゲーム製作では比較的当てはまりやすいものだといえます。

この脆弱性は、既知平文攻撃と呼ばれるものです。

既知平文攻撃が成立する条件は以下の通りです。 * 暗号化されたzipファイルが手に入っている。 * そのzipファイルのなかに含まれているファイルを持っている。

暗号化されたzipファイルは、暗号化されていますが、そのzipファイルに含まれているファイルのファイル名は知ることができます。

そして、なぜこの条件がゲーム製作では当てはまりやすいのか。

それは、ゲーム製作では「一般に共有されたリソースを使うことが多い」からです。

例えば、フリー素材の画像を使ってゲームを作った場合。

ゲームプレイヤーがゲーム内で使われている画像がフリー素材のものであると気付き、同じフリー素材を手に入れることができた場合、 暗号化されていてもそのゲームのリソースは解読できてしまいます。

このような既知平文攻撃のテクニックは、CTFではよく知られた手法です。

暗号化されているとはいえ、zipを使う際は注意しましょう。

みんなCTFをやろう

CTFは初心者からでも始められます。

CTFは基本的に期間を設けて行われるものですが、常設CTFという、ずっと問題が設置されているものもあります。

プログラミング初心者の方だよという方は、https://ctf.cpaw.site/ からやってみると面白いと思います。

技術力に覚えのある方は、https://ksnctf.sweetduet.info/ で試してみると面白いかもしれません。

以上ゲームにこじつけたCTFやろうね記事でした〜

SHARE THIS POST