11/23-25の3日間、淡路夢舞台国際会議場で開催された、Hardening 2017 Fesに「チーム5 守るのみこと」のメンバーとして参加してきました。この1,2ヶ月でおこったことや、個人的な振り返りを書いてみます(振り返りというよりは、ただの日記になっていますが・・)。公開してはいけない情報は載せていないつもりですが、駄目な箇所があれば、お手数ですがtwitterなどでご連絡ください。どこまで競技について公開していいのか分からないので、若干、抽象的な書き方をしている箇所もあります。

    Hardeningとは

    • チーム対抗でECサイトのセキュリティを強化して(堅牢化・ハードニング)、攻撃者(セキュリティの脅威)から守る競技
    • 技術を競うだけでなく、ビジネスの価値向上(利益を上げる、顧客対応など)も評価のポイントに含まれる

    詳しくは、下記などをご参照ください。

    Hardening Projectで開催する競技は、基本的にチーム対抗で、脆弱性のあるECサイトへのハードニング(堅牢化)力の強さを総合的に競うコンペティションの形をとります。競技内容は、セキュリティを扱う人が貢献する、現実的な問題をどのように扱って頂くかに焦点があてられます。参加チームは、StarBED内に構築された、仮想のネットワーク環境で競技します。

    via Hardening Project 2017 | Web Application Security Forum - WASForum

    Hardening競技は、基本的にチーム対抗で、託された問題のある脆弱なウェブサイト(例えばEコマースサイト)を、決められた比較的短い時間であらゆる手だてを尽くして堅牢化し、同時にビジネスとして売り上げなど成果が最大化するよう調整する力を競うものです。

    via 募集要項 Hardening 2017 Fes | Web Application Security Forum - WASForum

    参加申し込み (~2017/10/03)

    2017/5/6に開催された078 Hardeningでは最下位だったので、リベンジも兼ねてその時の一部メンバー + 知り合いで申し込みました。自分の過去の参加歴としては、ミニハードニングが078で1回のみ、本戦は今回が初になります。

    選考結果発表 (2017/10/06)

    昼過ぎくらいから選考結果が発表されました。一緒に申し込んだ人から選考に落ちたというLINEが来たので、自分も落ちたのかなと思っていましたが、メールを見ても選考結果が届いておらず。でも、チームで申し込んでるから一人落ちたら全員、落ちているだろうと考えていたら、14時26分頃にメールが届きました。 メールの内容は、下記の通り。

    • 競技参加者に選ばれた
    • チームメンバーの発表
    • リーダーの選定とチーム名を決定して10/17までに報告
    • 宿泊施設の手配をしましょう

    選考に通ったのは嬉しかったのですが知り合いと一緒に参加することしか頭になかったので、「知らない人とチームを組まなきゃいけないのか・・・・・」というのが、その時の素直な気持ちです。(応募時に、「誰かとチームで申し込むなら、独自で決めたチームタグを記載してください」という記載を勘違いしていて、単に運営がチームとして認識するだけであって、チームメンバーの一部だけが受かることもあるということが分かっていなかった)。
    結局、自分以外の一緒に応募した人は全員選考に落ちた結果となりました(twitterを見ると倍率は5倍だったらしいので、受かってラッキーだったなと思います)。

    リーダー・チーム名の決定 (2017/10/06~)

    運営からのメールが届いた後、メールで自己紹介や宿泊施設の予約をどうするかなどについて、話が始まりました。 チーム5は7人メンバーですが、4人は共通の知り合い、自分を含めた3人はメンバーを誰も知らないという状況でした(後日、一部のメンバーは勉強会で会ったことがあると分かりましたが、この時は全く気付かず)。メールでやりとりをするのが段々しんどくなってきたので、通常のコミュニケーションはSlackに移行しています(見返すと10/7の夜にはチャンネルが作成されていた。)。
    チーム名は、各自少なくとも1つ候補を出したうえで投票で決定。リーダーはチャレンジしたい人がやりましょうということで、立候補で決まりました。
    リーダーの提案でメンバーは名前ではなくあだ名を付けて呼ぶようにしたことは、オフラインで合う機会が少なかった割に(全員が揃ったのは競技当日だった)皆が仲良くなれた一因だったかなと思っています。

    Hardening 2017 fes 競技者顔合わせ会@大阪 (2017/10/26)

    チーム名・リーダーが決まった後、顔合わせはどうしましょう?という話になって、顔合わせ会に参加することになりました。一部のメンバーだけでしたが初めてメンバーと対面。他のチームの状況も何となく把握しました。
    過去の参加者の方の話から、チームの目標や当日の担当決め、持参物の確認などを決めていかなきゃなと思い、このあたりからBacklogに登録する議題が増えています。当日のLTなどの内容は別記事で書いたので、そちらを参照。

    しおりの配布 (2017/11/14)

    競技当日のタイムテーブルや、マーケットプレイスなどの情報が載っているしおりが展開されました。(参照)

    競技前日まで (~2017/11/22)

    メンバーとのやりとりはSlackのみでオフラインの打ち合わせはやっていません。設定手順や気になる話題などをBacklogのwikiに書き込んだり、スプレッドシートに当日、必要な持ち物を書き出したりしてました。事情によりメンバーが1名参加できなくなったので、6名で参加することに。

    競技前日 (2017/11/22)

    システム構成などの情報が前日に届く、という話を聞いていたのでメールを待っていたけど、なかなか来ず。いつ届くんだろうとやきもきしていたら、18時14分頃にメールで競技資料が配布されました。
    チーム5は前泊組が2名、当日の朝にバス移動が4名という状況だったので、各々が資料を読み込んで気になることはSlackやBacklogに書き込んでいました(前泊組はホテルで読み合わせをやっていた)。配られた資料内容については公開できないので詳しいことは言えませんが、資料が届いて、さぁ読むぞ!と思ってページを開いたら小さいフォントでびっしりと文章が書かれているのを見て読む気が萎えたのは自分だけではないと思う(何かしらヒントが隠されているんだろうなとは思ったので 、ちゃんと読んだけども)。

    Hardening Day (2017/11/23)

    始発のバスに乗るために5時ぐらいに起床。起きてSlackを見たら、メンバーの人が資料に隠されていたブログのURLを夜中に発見していた。(Softening DayのYoutubeにURLが載っていたから記載してもOKのはず)。

    6時20分三宮発のバスに乗って、当日移動組の4人は淡路夢舞台国際会議場へ。
    7時過ぎに現地へ到着して、前泊組と合流。競技開始の2時間前に初めて全員と顔合わせです。そのまま、開場まで初動対応やそれぞれのタスク確認など打ち合わせをしていました。

    競技開始

    自分のことについて書くと(反省点ばかりですが)

    • 技術チームの全体管理というのが自分の役割であったが、対応方針決めたりとかは全然できていない(自分のスキル不足で、どう対応するべきかが思いつかなかったので指示できない)。ただ、メンバー間のコミュニケーションはわりと取れていたので今、誰が何をしているか何となく把握できていたのは078 hardeningの時と比べてもマシになった気がする。
    • 事前の打ち合わせで各々の役割確認したのに自分がやるべきことをできておらず、WEBサーバーが1台復旧できない状況になった(そのあと復旧するために余計なお金を払う羽目になった)
    • 事前に調べておいたconfigの設定を投入したら、クローラーからの通信をブロックしているようで、売上が上がらなくなった(どの設定で引っかかったか分からなかったので、結局設定をもとに戻した)
    • 根本原因が分からず、とりあえずのインシデント対応が多かった。
    競技終了?

    9時間の競技時間が終わって、もうこれで終わりかと思っていたら「朝活やります!」ということで翌日に2時間、延長戦があることが発表されました。が、競技終了時点でドメインアカウントがロックされていたり、Wordpressにログインできなくなっていたり、etc... 。他にも今日、購入したMP(マーケットプレイス)は明日も使えるの?など。2時間の延長は分かったけど、細かいルールについては特に説明がないまま、懇親会へ。

    Firming Day (2017/11/24)

    朝はチームメンバー皆で一緒に朝ごはんを食べて、そのあと作戦会議。朝活の2時間がどんなルールになるのか分からないけども、やれることをやろうということで体制の変更や対応方針を決めて、2日目の競技へ挑みました。
    。。。。が、突然に人事異動が発表されて皆、「えっ?」となる。社長(チームのリーダー)を残して、他のメンバーは別のチームに移動(人事異動)。事前にこうしよう!とか決めたことは実施できずに、チーム6の社長のもとに異動となりました。
    引き継ぎ資料からチーム6がやっていたこと・設定内容を理解するのに少し時間が掛かってしまいましたが、チーム5のやりかたで任せてもらえたので作業はやりやすかったです。反省点を挙げると、問題が発生した経緯を確認せずに結果だけから判断して、解決までに時間をかけてしまったことが失敗だったなと思っています。

    Softening Day (2017/11/25)

    Youtubeにあがっているので、内容は動画から確認出来ます。

    振り返り・感想など

    • (実際に設定できたかどうかは置いといて)どうやってセキュアな設定にするか?というのは事前に考えていたけど、システム構成の把握とか状況の確認(サービス、ログなど)・監視など、考慮するべき点はもっとあったなと思います。事前配布された資料だけで環境を何となく理解した気になっていて、自分の目でもっと状況確認しておくべきだった。
    • 技術的なスキルが足りない点は挙げるとキリがないので、イチから勉強し直そうと思います。
    • 漠然とした理由で日々の仕事をこなすのではなく、誇れるような仕事をする。

    振り返り会 (2017/12/14,18)

    ハードニングの参加者も、参加できなかった人も、皆で振り返り会やりますよ~ということで、大阪・東京で開催されるらしいです。

    Ref.

    最後に

    チームメンバー、運営に携わっている方々、マーケットプレイスなど、このイベントに関わっている皆様、有難うございました。とても刺激的て楽しい3日間を過ごせたことは本当に感謝しています。「楽しかった!」で終わるのではなく、少しでも日本のセキュリティに貢献できるようなエンジニアになるために、これからも精進していきたいと思います。