Learning cyber security by playing and enjoying CTFs

Cyber Security関係の雑記帳です。表明されているお気持ちなどは全て個人的なものであり、筆者が所属もしくは関係する組織・団体の意向とは一切関係ありません。

良いCTF・悪いCTF・普通のCTF(for CTF Advent Calendar 2023)

 この記事は、CTF Advent Calender 20日目の記事です。

adventar.org

 前日の記事は、Ryusei Ishikawa さんの「TsukuCTF 運営参加記」です。

xryuseix.hatenablog.com

 TsukuCTF はセキュリティ系のハッカソン SecHack365 の修了生が運営する OSINT 中心の CTF で、記者*1は OSINT がかなり苦手なのですが、それでも(OSINTを含めて)十二分に楽しむことができる 良いCTF でした。

※12/20 の時点で、翌日分は埋まっておりませんでした。記事が追加され次第リンク対応します。

1. はじめに

 最初に言い訳ですが、本記事のタイトルは完全に「ネタ」です*2。過去に開催されたCTFに対する「採点」でもなければ、客観を装って自分の価値観を押し付ける類の「説教」*3でもありません。

 一応の格好をつけるならば、「CTFがより親しみやすく、楽しめる競技に発展するための意見表明」ということになりますが、実態としては(ご一読いただくとバレてしまいますが)「あるプレイヤーの個人の価値観に基づくお気持ち表明」です。

 しかしながら、「CTFは運営とプレイヤー(とスポンサー)のみんなで創るものである」という考え方があり、おそらくほとんどのCTFはその考え方に基づいて運営されていると思われます。そして、記者はそれに賛同し、もし今後自分が運営に回るときにはその考え方を尊重しなければならないと思っています。

 そこで本稿では、

  • 👼良い👼 =「これは良かった/真似したい」と思うこと
  • 👿悪い👿 = 「これだけは絶対やめて欲しい/絶対にやるまい」と思うこと
  • 👦普通👦 = 「自分が運営する時これだけはクリアしたい」と思うこと

と定義し、それぞれについて contnt-type okimochi/poem で記すこととします。

2. 👼良いCTF👼 ~「これは良かった/真似したい」と思ったこと~

 ここでは具体的な大会名の言及はしません(・・・と言いながら、具体的にいくつか言及してしまっています。「良い」方なので許してください。以上、2023/12/22 20:30加筆。)が、記者が出場して Writeup を書いている大会のほとんどがここで言う「良いCTF」に該当します。

2.1. 問題が、解いていて楽しいものである👼

 CTF に参加して「良かった・楽しかった」と思う最大の要因はやはり問題セットのクオリティでしょう。まぁそりゃそうだわさ、という話なのですが、ここではその「良さ・楽しさ」について少しだけ掘り下げてみます。

 記者において(解けたかどうかにかかわらず)、過去に「この問題は良かった・楽しかった」と思った問題の共通項はだいたい以下のようなものでした。

  • 最新/トレンドの技術的な要素が問題に反映されている(スキルアップに直結
  • 一見、解けなさそう(セキュア)に見える(解けたとき達成感がある
  • 有償ツールや特殊環境等のスキルとは別のレイヤーでの負担を必要とすることなく解ける(純粋に技術・知識で勝負

 また、(個々の問題ではなく)問題セットに対しては次のような感想を持っています*4

  • 問題量は、1~3チームが全完するくらいが良さげ
  • CTF 初プレイの人でも得意分野では1問以上解けるようになっていると良さげ
  • 各分野で、強い人でも容易には解けない問題が含まれていると良さげ

2.2. 特色が「いい感じに」明確である👼

 特色がない大会はどうしても「つまらなく」感じてしまいますが、その一方で癖の強さを「ゴリ押し」されると辛く感じてしまうのもまた事実です。

 このあたりがとても上手くまとめられている良い例としては、CakeCTF があります。「カジュアルで、初心者から上級者まで楽しめる」というコンセプトのもと、スコアサーバのデザインも🍰で統一されるなど、いい感じに特色が出ています*5

 また、TSG CTF では他の CTF では見られない特徴として、出される問題の分野・難易度・オープンする時刻を予告していますが、スケジュールが立てやすくなるので*6個人的にはこれが大好きです。

2.3. 「寛容」が基本姿勢だが、悪を決して許さない 👼

 趣旨によってプレイヤーの年齢・性別・国籍・所属組織で出場制限をする大会はありますが、競技を盛り上げるためには「出場の条件」が少ないに越したことはありません。実際、多くの大会では出場に関する制約*7は大会の趣旨を実現するための必要最小限度となるよう、きちんと配慮がなされています*8

 その一方で、その間口の広さゆえに「攻撃に使える技術の演習機会や技術そのものを "悪性のハッカー" にも与えてしまう」ことなどが懸念されることもあり、最近では予めプレイヤー・スポンサー・運営が遵守るべき行動規範(コード・オブ・コンダクト)を定めることがスタンダードとなっています。

 記者はこういった姿勢がスコアサーバのルール欄やチャット等で明確にアナウンスされている大会を「良いCTF」であると判断しています。

3. 👿悪いCTF 👿~「これだけは絶対やめて欲しい/絶対にやるまい」と思ったこと~

3.1. 問題の質がひどい(いわゆるエスパー問題やクソ問)👿

 「良いCTF」で書いた内容の裏返しです。悪問が幾つか混ざるのはギリ許せるとして、そういうのがあまりに多いとそれだけで気持ちが萎えてしまいます。

 個人的には、以下のような問題は悪問と考えています。

  • 過大な推測(Guessing)を要する、いわゆるエスパー問題。
  • 答えが自明すぎる問題*9
  • 競技終了間際にオープンされる難易度(得点)が高い問題*10

 あと、当たり前のことですが作問チェックが甘すぎるのはいけません*11

※その昔、正答でフラグが通らず苦情を申し立てたら何のアナウンスもなくシレっと正解扱いになっていた、というのを経験しましたが、モチベーションが落ちまくって実質的に競技放棄をするに至りました*12

3.2. 運営が "逐電" する(!)👿

 運営陣が運営を放棄してドロン。「おいおい、マジかよ!」と思う話ですが、実際に経験しました*13

※プレイヤーは(その是非は置いておくとして)いつでも試合放棄できますが運営(やスポンサー)はそうはいかず、ある意味「非対称的」*14なのですが、これは致し方ないことでしょう。だからこそCTFの運営陣はリスペクトされるべき存在とも思っています。

3.3. 不公平・不公正がある👿

 競技である以上、これは絶対にダメです。競技内のルールは無論のこと、prize を出す場合にも留意が必要でしょう。prize は情勢によって変わり得るもので、回を重ねた大会の場合発展的に増えてゆくのは非常に良いことだと思うのですが、衰退してゆくのは良くないし、「特定の回だけ何もナシ」みたいなのは最悪だと思います*15

 特にマズいのは Closed な大会で発生した場合です。Open な大会では「炎上」による自浄が期待できますが、Closed な大会の場合(特に運営とプレイヤーに上下関係がある場合)は表沙汰にならず、最悪の場合被害を受けたプレイヤーが泣き寝入りとなり「怨み」だけが残ってしまいます*16

4. 👦普通のCTF 👦~「自分が運営する時これだけはクリアたい」と思ったこと~

4.1. 運営、スポンサー、プレイヤーがお互い良好な関係であること👦

 それぞれ立場は異なりますが、お互いに敬意をもって仲良くできる*17のが一番です。

4.2. 競技が公平・公正であること👦

 当たり前すぎる話ですが、気づかないうちに不公平・不公正が入り込まないようチェックを欠かさにようにしたいです。

4.3. 程よく特色を前面に出すこと👦

 あまりにクセが強すぎると「人を選んで」してしまいますが、同じような競技ばかりではつまらないので、程よく特色を出してゆきたいと思います。

4.4. 作問チェックの徹底👦

 これも当たり前の話なのですが、スケジュールが押し気味だと疎かになってしまうので常に心に留め置きたいと思います。

4.5. トラブルに備えた運営👦

 単独運営の場合は手が回らなくなるおそれがあるので、ローリスクな構成を選ぶのが良いかと思います。

 また、よくあるトラブルについては事前に対策を打っておくのが得策でしょう。例えばサーバが落ちて問題が提供できなくなっても、チャット経由で他の提供場所(githubなど)を案内することで競技継続できるよう、準備は周到にしておきたいです*18

5. おわりに

 最後に、CTF 界隈の今後益々の発展を祈念して〆といたします。

 拙文にお付き合いいただきまして、ありがとうございました。

 本記事をお読みいただいた方の「何かの足し」*19になったのであれば、とても嬉しく思います。

*1:この記事では一人称を意図的に「記者」としています。

*2:萩本欽一氏の有名バラエティ番組タイトルのオマージュです。

*3:"お偉いさん" が朝礼とか訓示とかでよくやるやつです。

*4:くどいようですが、あくまで個人の感想です。

*5:来年もきっと開催されるはず(!)ですので、参加したことがない方はぜひ参加してみると良いと思います。

*6:結局計画通りに問題が解けずオジャンになるのですが(苦笑)。

*7:prize を受ける条件については、大会趣旨に鑑み限定的になるケースは多々ありますが、それは全く問題ないと考えます。

*8:例えば学生を奨励する趣旨の大会で、pirze 受領権なしで一般(非学生)も参加可能なものが多数あります。

*9:実質タイピング速度競争となるようなもののことであり、Warmup枠や初心者向けの問題を指しているのではありません。

*10:クイズ番組で、最後の問題にベラボーに高い点数が付与されるようなやつで、「これまでの頑張り」が否定されるので個人的には嫌いです。

*11:多少のミスはつきものですので、きちんとリカバリできていればノーカンなのですが、あまりに程度がひどいとプレイを継続できないほど気力を削がれます。

*12:もしも公的機関が主催の大会で業者が相応の金額で受け負ったものであった場合には、「税金の無駄遣い」という怒りも加わってくるので、大炎上不可避でしょう。

*13:あえて名指しは控えますが、Crypto勢を中心にまだ記憶に新しいところかと思います。この運営陣には、某アニメの碇シンジ君の "あの名台詞" を進呈したいと思います。

*14:基本的に記者は非対称的な物事が嫌いですが、一方で十分な代償のもとで認められるべきものもあると考えています。

*15:そのような場合、遡って授与するべきでしょう。

*16:記者がもしそのような目に遭ったら「闇落ち」不可避です。闇を抜けて光の海へ行くことはなく、星の架け橋も渡ることはないでしょう。

*17:もちろん、「癒着」とは違います。

*18:著名な国内 CTF でも何度かトラブルに遭遇しましたが、運営が見事に捌いており、「運営陣すげー」とリスペクトの気持ちを持つに至っています。

*19:「暇つぶし」も含め、です。