カミナシ エンジニアブログ

株式会社カミナシのエンジニアが色々書くブログです

カミナシのセキュリティチャンピオンは誰だ!?「ごーとんカップ 2023」を開催しました

こんにちは、セキュリティエンジニアリングの西川です。

カミナシのエンジニアリングチーム向けにセキュリティ競技会「ごーとんカップ」を開催しました。ごーとんというのはカミナシのヤギのキャラクターです。非常にかわいいですね。

開催のきっかけ

今回の取り組みは取締役CTOの原トリ(以下トリ)と「Hacktoberfest(https://hacktoberfest.com/ )みたいなのしたいよね」という軽いノリから始まったのですが、いわゆるCTFをエンジニアリング向けにやっても意味がないので、あくまでも教育の機会になることを目的としコンテンツを検討していきました。合わせてモチベーションアップのために、参加者特典や優勝者特典でTシャツやステッカーを制作しました。結果的にこれは大正解だったと思います。あるとないとではイベントのクオリティが全然違うと実感しています。

出題コンセプトと感想

今回の取り組みはカミナシにセキュリティ文化を醸成するというミッションの中の一つでもあるため、カミナシで使用している技術スタックを使った問題を基本とし、AWSのシークレット漏洩を模擬した問題やWebサーバーの脆弱性を突く問題、それからTrivy(https://github.com/aquasecurity/trivy)というコンテナイメージやIaCの脆弱性、設定ミスを検出するツールを使った問題など、知っておくとためになるセキュリティに関する内容を出題しています。つまり、すべての問題にコンセプトを持たせて、問題を解いていく過程でセキュリティの知識を得ていくと同時に業務に役立てることができるということを狙っていました。

ですので、推測が必要な問題は出さずに、ひとつひとつ論理的に解けるよう作問にもこだわっています。

参加者もこの日を楽しみにしてくれていて、そのうちの3人はキーボードを持参して気合いの入れ方が他の方とは全然違っていました。ただ、3人とも成績はふるわなかったようです(笑)

そんな話はさておき、出題の狙い通りアンケート結果では、Trivy業務でも使っていきます!というコメントをもらうこともできました。まさに狙い通りで、これぞシフトレフトですね、嘘です。言いたいだけです。

ちなみにすべての問題を西川一人で作問しています。アイデアが溢れすぎて来年の問題もすでに構想ができてしまっています。

今回は全31問で3時間15分という短い時間だったので、参加者は相当ハードだったと思いますが、それでも楽しんで学んでいただけたようでよかったです。

自分自身作問過程で、Go言語でSQLインジェクションって難しいんだなーとか色々と気付きや学びがありました。ただまあ、言語関係なくSQLインジェクションが起きがちな実装というのはあって、Goでも同様にSQLインジェクションが発生することがわかり、無事(?)に、不正に情報が取得できるというシナリオを作ることができました。 実際にエンジニアのみなさんもソースコードを見てSQLインジェクションの脆弱性があることに気付いてくれたようで、こういう実装はいけないんだなという注意喚起になったのではないかと思っています。

表彰と問題解説

競技が終わったあとは表彰を行いました。優勝者には世界で一着しかない、ごーとんカップオリジナルパーカーが進呈されます。めちゃくちゃ格好良くて自分が欲しかったのですが、世界で一着というところが参加者のモチベーションにもつながると思うので我慢しました。

※着用イメージです。

上の写真は最終順位です。CTOのトリが見た目一位なのですが、一応運営メンバーということで、優勝はmanatyさんとなりました。唯一SQLインジェクションの問題を解いていたので文句なしの優勝でした。

そして、問題のコンセプトや解き方、考え方などを解説し、攻撃者仕草みたいなものの話をしました。そういうところで改めて気付きだったり、普段からどんなことに気を付けなければいけないかとか、どういうログが残るのかとか意識してもらうことにより、よりセキュアな環境ができていくことを期待して解説を行いました。

競技環境について

今回環境構築はすべてAWSでEC2インスタンスを粛々と12台ほど立ち上げました。 スコアサーバーにはCTFdを使っていて、EC2とRDSの構成で構築しました。参加者が20名程度とそこまで多くはなかったので、それほど負荷もあがらず捌くことができました。

結局使ったAWSのサービスは、CloudFront, ALB, Route53, EC2 12台, RDS 2台, DynamoDB 2テーブル, S3 1バケットのみでそれぞれ構成としてはシンプルなものでした。 費用の方もだいたい1ヶ月前ぐらいからテスト含めてサーバーを立ち上げていたのですが、free tierのインスタンスを使っていたので、そこまで上がらず $27 ぐらいで済んでいます。

AWS以外ではGitHubを使った問題を出題していますが、そちらは費用が発生していません。

来年以降について

WAFの学習を兼ねた問題も構想としてはあったのですが、一人一人が設定できる形で出題するところまで準備ができなかったのでこれは来年に持ち越しです。

来年はCTF要素だけではなく、Hardening要素も混ぜたいと考えています。もっともっと開発者が楽しみながら学べるコンテンツや機会を作っていきたいと思っています。

ところで、みなさんこの写真をみていただくとわかるのですが、参加者には参加者用のTシャツが配布されていました。しかしながら、運営の私&トリは、どこからどう見てもTシャツをきていません。ごーとんがどこにもいないのです。一体なぜなんでしょうか?

これはトリが、運営用のシャツの発注をするのが遅く、開催日に間に合わないという事態を招いたことが原因です。寂しいぜ。

ということで、大のビール好きの私は終わったあと美味しいお酒を飲んだことは言うまでもありません。カミナシならず、世界中の開発者がセキュリティを意識して開発できるように願いをこめて、これからも活動していきたいと思っていて、公開イベントにしようか?なんて話も出ています。ぜひ、興味がある方はお声がけください!