技術情報

Hardening 競技会に参加しました(H2021AF)

※この記事は、あくまで私見であり、業務内容と直接関わりがありません。

2021年11月17-20日、27日の会期で開催された、Hardening Project (ハードニングプロジェクト)実行委員会主催によるセキュリティ堅牢化の競技会 Hardening(ハードニング) 2021 Active Fault(略称:H2021AF)に参加しました。

参加応募をした経緯については、こちらに書いてあります。

Hardening 2021 Active Fault開催のお知らせ | Web Application Security Forum

参加された皆さんの記事

(2022/1/3 追記)

ほかの参加者の方が書かれた、素晴らしい記事があります。まずはそちらをご覧ください。

Hardening : 「衛る技術」の価値の最大化

セキュリティの競技会と目にすると、セキュリティ技術の高さを競うように感じられることと思います。

しかし、Hardening 競技会で競うのは、ECサイトの見込み販売額の大きさです。セキュリティによってビジネスを継続させていく・より大きくすることに、焦点が置かれている競技会なのです。

6~7人に分けられた各チームは、用意された競技環境下で、8時間を通して行われる、膨大な量のサイバー攻撃やシステム不具合に対応して、稼働している ECサイト・Webサービスを何とか止めずに維持し続け、見込み販売額をより大きくすることを目指します。

起こるのは、技術的な問題だけではありません。サービスに関するお客様からのお問い合わせへの対応、インシデント発生時の関係各所への報告など、現実に起きた場合に実際に発生しうる内容も行われます。

Hardening Project 2021 | Web Application Security Forum

競技日程

競技会は、6~7人 / 1チームに分けられたチーム戦です。チームの顔合わせを含め、どのようなスケジュールで臨んだのか、競技日程とともに書き出しました。

  1. チーム編成決定 (10/7)
  2. チーム名、リーダー・サブリーダーの決定と報告 (10/14)
  3. 競技会準備 (~競技会当日まで続く)
  4. 前々日・前日の競技情報提供 [ Activation Days ] (11/17, 18)
  5. 競技会当日 [ Hardening Day ] (11/19)
  6. チーム振り返り [ Fault Analysis ] (11/20)
  7. 全チーム振り返り会 [ Softening Day ] (11/27)

以降は、2, 3, 5, 7 に焦点を絞って書いていきます。

取り組んできたこと

チーム名、リーダー・サブリーダーの決定

チームフラグの原点

私は Team01 に割り振られました。Hardening 競技会経験者 3名・未経験者4名、若手とベテランが程よい割合のチームでした。同じチームに、昨年の競技会 (Hardening 2020 H3DX) にて同チームでお世話になった Sさんがいらっしゃいました。何とも心強い。全チーム数は、11。総勢で 70~80人位参加されている計算です。

チーム名は「豆腐オペレーションズ」。堅牢化から逆張り・程遠い言葉のようですが、今は固くない私たちなのですが、いずれ富山の五箇山豆腐みたいに固くなりたいとの願いを込めて命名。

リーダーは、何と私でした。サブリーダーが Sさんとなって、チームが始動しました。

競技会準備

チームビルディング

チーム集合写真(競技会当日撮影)

8時間の競技会をチームで戦うためには、メンバーが気持ちよく競技会に臨めるようにしたいと思っていました。昨年の競技会でのリーダーに型を求めて、それを手本に声掛けやメッセージに心掛けてきました。

そんな中で、メンバーのスキルを互いに確認するスキルマップを書き出してもらいました。けれども、それ以上に有効だったのは、役割としてやりたいこと・やりたくないことを各自書き出してもらったことでした。

「やりたくないこと」を書き出せる雰囲気を作れたのは、素直に嬉しかったですし、せっかくの競技会なので、普段の得意・不得意やスキルの有無は置いておいて、やりたいことをやった方が気持ちよく臨めると思っていました。

何に備えてどうするか

EC サイトを運営し続けるために、サブリーダーが指標にしたのは可用性(システム障害があっても停止させずに稼働し続けること)でした。

「可用性を重視して、過剰なセキュリティ設定をしないようにする/やるべきことをきちんとやる『当たり前のセキュリティ』をやろう」とのサブリーダーの方針を基軸に、「想定される攻撃とその対策」をまとめました。

どういったインシデントが考えられるか、それを防御するためにどうするか。とにかく考えられるものを、まず Google スプレッドシートに書き出していくことにしました。「最初の1時間が勝負」と考えていましたので、書き出した内容について優先順位を決め、その中の何から着手するか(初動対応)決めていくのがよいと考えたためです。

Google スプレッドシートにまとめていった内容は、タスク管理アプリケーション Trello にカードをおこして、それに転記して当日に備えました。

また、当日のインシデント対応の手順を決めておきました。何が起こっているのか画像や文言を入れてカードに起票する → サブリーダーが重要度を判断して対応を依頼する → 各人が対応して完了させていく、という流れです。

競技会当日 [ Hardening Day ]

「最初の 1時間が勝負」とはいえ

「最初の 1時間が勝負」と考えていたので、初動対応に気を付けていました。昨年より予定していたことを進められている実感が、私個人には有りました。追い込まれて指が動かない状況にはなっていないぞ、と思っていたのです、ここまでは

ところがこの先は思っていたように、スムーズにはいきませんでした。初動 60分で終わらせたかった内容は、全て終わるのに午前いっぱいかかったように思います。その間に、さまざまな問題が起きていました。

競技中、インシデントや不審な動きがあると直ぐに対処に入ってしまおうとして起票を忘れたり、起票されたタスクが対応待ちになって滞留したりと、思っているようには動かないことが、チーム内部で起きていました。

チームが機能していた理由

苛立ちや焦りが、チームに漂っていた瞬間はありました。ただ、その中にあって、チームは完璧ではないもの、機能していました。声掛けをして対応を依頼したり、画面の共有をして確認したり、互いに補って動けていました。

チームが機能していたのは、間違いなくサブリーダーの Sさんのおかげです。S さんの対処・判断が優れていたからこそ、私を含めチームメンバーは動けていました。「平時から、インシデントに関する判断・対応をサブリーダーが行う」チームの方針がぶれていなかったこともありますが、それ以上に S さん、そしてチームの皆さんの素晴らしさが輝いていました。

残り 1時間の時点でスコアグラフが見えなくなり、その後は各チームの見えないデッドヒートが続きました。

残り1時間の時点でのスコアグラフ

競技時間を終えて

競技時間終了を前に、指が震えるほど時間に追われて焦っていましたが、提出するものは提出できて、競技終了。あっという間の 8時間でした。「こうしたかった」「ああすればよかった」は残りましたが、不思議と充実感がありました。

この熱量のまま、まず振り返りをしようとチームで決めていたので、振り返り会向けの資料を夜からまとめ始めました。記憶が鮮明な中、メンバーの気付きや発見がいくつも資料に入っていきました。翌日の チーム振り返り [ Fault Analysis ] を前に、よいところまでまとめられました。

その後もファイナル版まで仕上げて提出し、Softening Day を迎えました。

全チーム振り返り会 [ Softening Day ]

Softening Day は、全チームの取り組みを発表しあう振り返り会です。各チームが何に取り組み、どういった気付きや反省があったのか、全参加者を前にプレゼンテーションと質疑応答をします。

昨年 2020 H3DX はフルオンラインだった Softening Day、今年 H2021AF はオンライン・オンサイト(現地)のハイブリット開催でした。万全の感染対策をした上で、前泊して現地入り。これまでオンラインでお会いしていた、さまざまな人に「(直接会うのは)はじめまして」の挨拶から始まりました。

オンサイト会場に行きました

チーム発表(午前)

チームのメンバーとも、やっと直接会えました。皆さんに会えて、本当に嬉しかったですサブリーダーの Sさんとは昨年からのお付き合いなので、尚のこと嬉しく感じました。Softening Day 事前参加登録をされていた、昨年 H3DX で同チームの、リーダーとも会えました。

少し離れてはいるけれど、右隣に昨年のリーダー、左隣に サブリーダーのSさん、テーブルには同じチームのメンバーがいる。もうこれだけで泣きそうでした。

発表の様子(1)
発表の様子(2)

10分間の発表は、本当にあっという間でした。昨年の競技会から一年、いろんな思いで少しずつ歩んできましたが、この発表の瞬間のために一年間があったのではないかと思える素敵な時間でした。

各チームの発表は、本当に素晴らしかったです。事細かに起こっていた事象を振り返り、その対処を説明されるその様子を目の当たりにできて、とても幸せでした。資料の分かりやすさだけでなく発表の仕方も工夫されていて、私も見習いたいと強く感じました。1分当たりのひと笑いって、大事ですね。

Kuromame6 セッション・競技環境説明(午後)

午後は、Hardening Project 実行委員会のセッション。

今回の競技解説を受けながら、どういった活断層 (Active Fault) が潜んでいたのかを知り、まだまだ学ぶことはたくさんあるなと感じました。バックアップって、皆大事だと言うけれど、確かにちゃんと取っていないかもしれない。そういった足元の危うさを、痛切に感じました。

また、特別協賛の NICT(情報通信研究機構)北陸StarBED技術センターで作られている競技環境のすごさ。

競技の仕組み・競技環境構築など、この競技会全体を毎年このクオリティで運営されていることの素晴らしさを感じました。

審査結果発表

Team01 は、見込み販売額で 2位。昨年と同じ順位でした。参加証明書(記名のもの)が手元に届いた時、「このメンバーで戦ったんだなあ」と感じて、順位以上にめちゃくちゃ嬉しかったのです。もう本当に(言葉が整わない)。

また、MP(マーケットプレイス)サービスにてご尽力いただいたバラクーダネットワークスジャパン株式会社さまより、Barracuda 賞を頂戴しました。また、Hardening Project 実行委員会から、欧風カレー ボンディ 2kg・リウボウギフト券 1万円分を頂戴しました。誠にありがとうございました。

Barracuda 賞(ポロシャツ・折りたたみ傘・モバイルバッテリー)
欧風カレー ボンディのカレー

戦いを終えて

参加された方々にお会いできた Softening Day は本当に楽しい、夢のような時間でした。いろんなお話をして、これからも連絡を取り合いたい仲間になれた気がしました。

チームのメンバーとは、Softening Day 後に、全員そろって会えました。戦いを振り返って、皆で互いに笑い楽しい時間を過ごせました。だからこそ、当日帰宅する際に寂しさを感じました。チームの皆さん、また会いましょう、会いたいです。

H2021AF ステッカー

最後に、私自身について。悔しさは今年もありましたが、笑って終えられました。「過去の自分自身」と対峙し、乗り越えられました。それが、ほかの何にも代え難いことでした。

この一年、多くの人にお世話になりました。Hardening Project 実行委員会の皆様はじめ、本競技会に関わった全ての皆さま、ありがとうございました。そして、競技会参加にご協力・ご理解をいただいた弊社の皆さん、何よりに家族に心より感謝しています、ありがとうございました。

※家族は、Softening Day 以降、ニコニコしながら「ネギネギ、チャーシュー!」と言うようになりました。詳しくは、Softening Day の動画を、最後の最後までしっかりご覧ください。

ここはまだ通過点。Hardening は自分ごと、旅は続くよどこまでも。