Published At:
Updated At:

MBSD Cybersecurity Challenges 2017で優勝した

Writeupイベントレポートコンテストセキュリティ
Revision History
  • Migrate articles from Hatena Blog. (#1615cbe by 8ayac)
  • Remove the Hatena notation. (#b593dec by 8ayac)
  • Modify the image's source path. (#6eb5101 by 8ayac)
  • Revert commits to enable image optimization. (#e1a2610 by 8ayac)

公式ロゴ

先日、MBSD Cybersecurity Challenges 2017というコンテストで優勝しました。
その時のことを色々と書きます。

1. 大会の概要

コンテストの概要を説明しておきます。
詳細はこちらまで。

  • 設定
    • ある会社が運営するオンラインバンキングシステムにセキュリティ上の問題が発生
    • 参加者は、このセキュリティ上の問題を調査するチーム
  • コンテストの目的
    • セキュリティへの興味喚起
    • 現実的な問題へのチャレンジ機会創出
  • 競技の概要
    • 1チーム4名のチーム戦
    • オンラインWebサービスのシステム(Linux VM)とWebアプリケーションのソースコード(PHP)が配布
    • 配布されたシステムに潜む脆弱性を調査
    • 調査内容と検出した脆弱性のレポートを作成し提出
    • 提出したレポートによる1次審査で上位10チームで最終審査
    • 上位10チームは、最終審査会でプレゼンを実施
    • レポート内容とプレゼンで審査の総合点を算出
  • 審査観点
    • 発見した脆弱性の種類と数
    • 脆弱性の再現方法や対策案
    • 脆弱性の再現
    • 脆弱性発見の工夫
  • 大会期間
    • チームエントリー受付
      • 2017年10月10日(火)~11月14日(火)
    • 課題配布
      • 2017年10月16日(月)~11月14日(火)
    • レポート提出期限
      • 2017年11月14日(火)
    • 一次審査結果発表
      • 2017年11月28日(火)
    • 最終審査会
      • 2017年12月13日(水)

大体こんな感じ。

2. 予選(一次審査)のこと

予選では、約一ヶ月の間、ひたすらシステムを攻撃し診断を行いました。
私達のチームは、幾つかの役割に分担して診断を行いました。
筆者は、診断ツールを用いたネットワーク診断・ミドルウェア等のパッケージの診断などを行いました。
最終的には79件の脆弱性を報告し、レポートの枚数は109枚になりました。

工夫した点

工夫した点は、以下の通りです。

  • CVSSv3やCWEなどを用いることによる定量的な評価
  • 潜在的な脆弱性の報告
  • PHPは気合で読む
  • 楽しむ

レポート作成が思っていたより大変でした。
中でも、想定される被害や影響や対策を考えるのが特に大変でした。

3. 本戦(最終審査)のこと

最終審査は、先輩が後進育成などの意味でも、スライド作成から発表までを1年生に任せてくれました。 とても良い経験ができたと思っています。 筆者はチームの中に2人いる1年生でも、暇な方だったので、この件ではよく働こうと頑張りました。

一次審査の結果が発表されたのは、11月28日でしたが、私達のチームは予選は突破すると信じて、予選のレポートを提出してからすぐに本戦のプレゼンの準備に取り掛かりました。
おかげで本番まで約1ヶ月をプレゼンの準備に充てられました。

私達のチームは、発表では他のチームと差別化したいという考えがあり、「実装などの技術的な問題よりも、もっと上流の設計の話とかをする。」という方針が初めから決まっていました。
しかし、そういった上流のことを勉強をしながら作っていたので、早くに取り掛かったにも関わらず、プレゼン用の資料が完成したのは本番の前日でした。

設計などのことは、先輩が色々教えてくれて、とても勉強になりました。
最後の方は、自分でも面白い資料を発見したりして、追い込まれながらも、とても楽しく取り組んでいました。
今回の発表の準備を通して、技術的なことと同じぐらい設計などの勉強もしたいなと思いました。

発表当日は、自分の出番が近づくにつれて緊張しましたが、宇宙のことを考えてみたところ、かなり緊張がほぐれました。
とはいえ緊張しており、終始 "オタク特有の早口" で発表してしまいました。
それでも、前日に完成した割には、よくやったと思っています。

工夫した点

工夫した点は、以下の通りです。

  • 発表の準備に早く取り掛かった(予選突破を信じて)
  • 他のチームとの差別化を考えた内容の選定
  • 緊張を和らげるために宇宙のことを考えた

準備を進めていく中で、勝ちたいという気持ちが強くなっていき、どんどん大変になっていきました。
最終的には、発表点が(確か)1番良かったので、嬉しかった。

4. 発表したスライド

発表したスライドはこちらです。

5. 反省点

反省点は以下の通りです。

  • 発見した脆弱性の精査が追いつかなかったこと
  • どのように精査すべきなのかを知らなかったこと
  • 検証が追いつかなかったこと
  • レポートの進捗状況をチームで共有できなかったこと

最終審査会の後の講評でも、「網羅性が高いが、誤検知が多い」と言われてしまったので、来年の課題だと思います。

6. まとめ

情報セキュリティを極めるには多くの知識と技術が必要であることを学び、肌で感じることができました。

賞品として、「Burp Suite Professional 1年間ライセンス」「三井物産セキュアディレクションでのインターンシップ参加権」「MBSD Cybersecurity Challengesオリジナルステッカー(金)(完全にビックリマンチョコのシール)」「Kindle PaperWhite」「Amazon ギフト券5000円分」などがもらえた。嬉しかったです。(小並感)

7. 感想

全体的に、とても勉強になったコンテストでした。
色々と大変なこともありましたが、とても楽しく取り組むことができました。
自身のセキュリティへの興味は以前より強まったことは間違いありません。

脆弱性の検討をつける手法や、実際に発見する方法など、診断の大まかな流れをなんとなく体験することができてよかったと思います。
とは言え、筆者はセキュリティの仕事をしたことがないので、「現実的な問題へのチャレンジ機会創出」を目的にしているこのコンテストの課題が、どの程度現実的な問題なのかわかりませんでした。
以前から、セキュリティ系のインターンに行ってみたいという気持ちはありましたが、今回のコンテストでそれがとても強くなりました。

来年は、Webアプリの脆弱性についての勉強をもっと本格的にして行こうと思いました。(低レイヤーの勉強もやっていきたいので、どっちに重きを置くかは要検討)
基礎的な学習も怠らず、手を動かしながら色々なことを学んでいこうと思います。
そして、その勉強の成果を来年のこのコンテストでも発揮できるように頑張ります。

今回のコンテストでは、先輩から色々なことを教えてもらいました。
筆者も来年から入ってくる後輩に、色々なことを教えられるように情報セキュリティに対するアンテナを、もっと高く張らなければいけないなと感じました。

個人的には "圧倒的成長" を得るために、このコンテストに参加したのですが、技術的な面以外でもまずまずの成長が得られたと思います。
この先も無限に強くなりたいと思います。

余談

最近「リーダブルコード」読み始めました。