はじめに
(サーバを)殺してみろッ!俺は不死身の岩間だ!!!
いせカルを機に、リゼロ見たらレムが可愛すぎて仕事のやる気が起きない岩間です。脳が震えるっ!
さて、冒頭の元ネタをご存知でしょうか?・・・そう!ゴールデンカムイです!
アニメ3期製作決定でファンとしては喜ばしい限りです!FOD契約してないから見れないけど・・・。
ゴールデンカムイと言ったら北海道ですよね。北海道って言ったらHardening II SU ですよね。
と言うわけで、7/3から7/5にかけてHardening II SU に参加してきたので、そのレポートになります!
ちなみに今回は単独での参加ではなく、株式会社Eyes, Japanさんと一緒に応募させていただきました。
チームメンバの選定は運営が決めるため、必ずしも同じチームになるわけではないようですが、幸いにも一緒になることが出来ました。
Hardeningってなに
箇条書きするとこんな感じでしょうか。
- 「衛る技術」の価値を最大化することを目指す、全く新しいセキュリティ・プロジェクト
- 基本的にチーム対抗。脆弱性のあるビジネスシステム(ECサイト)へのハードニング(堅牢化)力の強さを総合的に競うコンペティション
- 評価の基準は、防御技術力のみならず、サイトの運営を維持する総合力、攻撃に対する堅牢化、売り上げの確保、ダウンタイムの最小化、そのためのコミュニケーションスキルのすべてを加味する。
堅牢化を行い、外部からの攻撃を防いでサービスを継続させる点は、Mini Hardening(前回の記事)と同様ですね。
しかし、Hardeningでは、サービス継続に加えてカスタマーの対応や役員への報告、CSIRT連携、マーケットプレイスの活用など技術面以外の対応も求められます。
Miniとの違い
Mini Hardeningとの違いは、主に以下の通りです。
- 競技時間が3時間ではなく8時間
- 1チーム 6~7人。さらに3チームで1つの組織となる「連合」制度
- 役員への報告会
- マーケットプレイスの仕組み
- Hardening CSIRT Association(HCA)の仕組み
- 参加者ミッション(今回初?)
などなど。
特に、連合制度とマーケットプレイス、参加者ミッションは特徴的だったので軽く紹介します。
連合制度
過去のHardeningには参加したことがないのですが、Hardening基本的にはチーム対抗戦で行われます。 前回から連合制度というものが導入されたようで、今回も連合制度が採用されていました。 3チームで1つの連合となり、それぞれ「東」「西」「南」「北」の4つの連合で競い合います。
連合内のチーム同士で協力し合う事が求められる一方で、優勝できるのは1チームだけです。
協力し合っていくのか、最低限の情報共有だけにするのか、といったバランスはチーム毎に結構な違いがありました。
・・・文章だけでみるとLIAR GAMEとか賭博黙示録カイジみたいなのを想像しそうですが、実際にはそんなに殺伐していません。たぶん。
競技中はどのチームもインシデント対応に必死で、連合内の他チームの様子を見ている余裕はなかったため、信頼関係の問題よりも情報共有の仕方が難しいと感じました。
マーケットプレイス
マーケットプレイスとは、外部のサービスや製品を調達できる仮想上の取引場のことです。
Hardeningのマーケットプレイスは、実際の企業や組織が実際のサービスや製品を提供しています。(もちろん架空のサービスもあります)
この仕組みは自分の中では割と衝撃的で、競技とリアルを上手く融合できていて独創的かつ非常に面白い取り組みだと思いました。
提供しているベンダーは、競技環境も直前まで知らされておらず、攻撃シナリオも知らないようです。なので、導入後のトラブルやソフトウェアの相性問題は、現実と同様に発生するためベンダーの方と協力していく必要があり、ベンダー側も自社の導入のしやすさ、使いやすさ、費用対効果が求められるためか、ものすごく献身的な対応をしてくれます。
参加者ミッション
過去参加者に聞いた限りだと、今回初めての試みっぽいです。
前日に配布された資料に記載されていたミッションを達成すると、評価対象になるようです。
「お問い合わせフォームが機能していないのでなんとかすること」や「WebアプリのどこかにXSSがあるから修正すること」といった技術的なミッションや「商品名や商品画像の変更」「商品の魅力を伝える画像の追加」といったマーケティング的な要素が求められるミッションなどもありました。
ハードニング(堅牢化)・・・?とはちょっと違いますが、ビジネスの観点では商品説明や画像は重要ですからね。
準備したこと
私は、競技開始後すぐにバックアップを取れるようにバックアップ用のスクリプトを用意してました。
・・・が、当日はスクリプトが一部動かず、結果手作業でバックアップした場面もありました。
Mini Hardeningでも言える事ですが、初動対応が早ければ早いほど、競技環境の構成の理解に時間を割けるので自動化できるところは、もっと積極的に自動化していきたいですね。
あとは、自分が想像している以上にサーバが多く、それぞれ手作業で接続しにいくのは非効率なため、SSH接続の環境も事前にssh_configなどの準備をしたほうが良かったと思いました。
競技中
無我夢中でした。バックアップを取り終えた後は、サイト構成を確認したかったのですが、RDP接続の不良で15~30分ほど競技環境にアクセスできず・・・。
競技中盤にWAFの設置対応を行い、DNSを切り替えたのですが、クローラが到達できなくなってしまったようで切り戻ししました。ベンダー様の協力もあったのですが、原因が分からず高値で買ったのに活用することができませんでした。悲しみ。
結果
チーム順位は公表されておらず、優勝チームといくつかスポンサー賞がありました。
私のチームは、LAC賞を受賞することができました。法務やコンプライアンスなどの対応が評価されたようです。ほぼチームメンバのおかげで私は殆ど貢献していませんが・・・。
賞品でいただいたビールは、その日に半分飲みました。残りの半分はお持ち帰り。
振り返ってみて
振り返るポイントが多すぎるのですが、まずは初動対応の自動化対応ですね。やることは多いのに時間は限られているため、可能な限り反復処理は自動化したいです。
Mini Hardeningでも感じた事ですが、基本に立ち返ってバックアップやパーミッション、FWといったところをスムーズに設定できるようにしたほうがよいと感じました。
地域貢献
都内ではなく地方で開催されているので、せっかくなら地域に貢献したいです。
開催地は札幌ですが、小樽まで行って美味しいもの食べてきました!
終わりに
前日の資料読み込み、8時間ぶっ通しの競技、発表資料の作成が3日間に濃縮されているため、ものすごーくしんどいですが、相応の経験値となって返ってくる素晴らしい競技でした。
他の競技と違って、現実世界でも起きうる問題を取り入れつつ競技として成り立たせているので、参加したことがない方は是非一度参加してみることをお勧めします。
次参加するときは、絶対勝ちたい!