Capture The Flagに参加してみた
はじめに
こんにちは、ONE CAREER CLOUDのバックエンド開発とセキュリティ周りを担当している蟹と申します。
元々Rails中心にバックエンドの開発を行っていたのですが、ここ数ヶ月、一部情シスの役割も担うようになりセキュリティ周りのお仕事にも挑戦中でございます。
そんなおり、CTF(Capture The Flag)に初参加してみたので、そのレポートを上げてみます。「今後CTFに参加してみたいよ〜」といった方への参考になれば幸いです。
CTFって何?
CTFについて「初めて目にしたよ〜」という方もいると思うので、まずはそういった方向けの解説をさせていただきます。既にご存知の方はさっと飛ばして次の章へ!
CTFはCapture The Flagの略で、元々は野外で敵陣に置いた旗(Flag)を取り合う旗取りゲームを指す言葉です。
転じて、エンジニア/セキュリティ界隈では、システムの中に埋め込んだデータ(Flag)をあの手この手で探し当てるゲーム/競技として、CTFという言葉が使われています!
「例えばどんなもの?」というのは、この記事を読んでいただければ感じることができると思います。
今回のCTFはどうだった?
今回は、セキュリティープラットフォームを提供するSnykさん主催のCTFのイベントに参加させていただきました。ありがたいことに弊社サービスの利用者数も堅調に伸びている中、社内的にもセキュリティ対策の重要性が高まっています。そんな折、CTOの田中が日本CTO協会の告知を見かけ、田中や私含め数名での参加に至りました。
出題された課題としては、NoSQLのSQLインジェクションや、ディレクトリトラバーサルなど、イントロダクション含め、計6問の構成となっておりました。
特に今回はSnykさんのイベントということで、Snyk(セキュリティプラットフォーム)を使っての進行でした。
Snykにリポジトリを登録すると、ソースコードをスキャンして、下記画像のようにアプリ内にある脆弱性を教えてくれます!
画像の例では、NoSQL injectionの脆弱性を発見してくれているので、そこを突く攻撃リクエストを送ることで「flag=XXXXX」をGETしていきます!(injection攻撃でのリクエストはPOSTですが)
結果として、自分は最初の1問しか解けず、一緒に参加していたCTOの田中は4問目まで解いていました。(優勝者は余裕で6問完答されていました!すごい!)
「この辺にこんなリクエスト送るんだろうな~」といった攻撃の雰囲気までは知っていたのですが、いざ実際に攻撃を仕掛けるとなると、具体的な書き方や設定(例えばContent-Typeでjsonを指定する必要がある、など)が不明瞭で「正解に辿り着けないな……」といったもどかしさを強く感じました。
こういった知見や感動を得られるのも、CTFのような実践的なイベントならではだと思うので、今回参加してみてよかったです!また、Snykも初めて使ってみたのですが、使い勝手も良く自社プロダクトのコードも読ませてみたくなりました。
終了後、CTOの田中に話を聞くと、「必要な背景知識も多いので、総合力が試されるため、これに勝てるエンジニアは強いと思う。」「またやりたい。できればエンジニアメンバーを巻き込んで、社内でも勝負したい。」と満足気な様子でした。
さいごに
CTFは国内外合わせると週に2件ほど開催されている(CTF TIME参照:https://ctftime.org/calendar/)ようなので、今後も積極的に参加していきたいです!
また、直近ではワンキャリア技術開発部内での社内ISUCONも開催しており、そちらもいずれ記事が出ると思うので、お楽しみに。。
ワンキャリアでは、お仕事はもちろん、一緒にCTFやISUCONなどのイベントに参加してくださる方を募集しています!
▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら
▼カジュアル面談を希望の方はこちら
▼エンジニア求人票
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?