NFLabs. エンジニアブログ

セキュリティやソフトウェア開発に関する情報を発信する技術者向けのブログです。

MINI Hardening4.4に参加してきました。

はじめに

皆様こんにちは、NFLabs.の飯田、北村、西村、番場です!

私たち社員4名 + 1名で2022年4月23日に開催されたMINI Hardening #4.4に参加してきました。結果は2位でした!(1位とは非常に僅差でした、、( ノД`)シクシク…)
本記事はMINI Hardening #4.4の参加レポートとなります。

 MINI Hardeningとは

Hardeningとは、参加者が脆弱性が数多く潜むビジネスシステム(ECサイトなど)の担当者となり、サイトの改ざんやサーバへの侵入など、次々と発生するインシデントへの対応や、システムの堅牢化などを実際に体験できる競技形式のイベントです。

競技はチーム対抗で行われ、単なる技術のみならず、売り上げや関係機関との連携力などを競うこととなります。

WASForum様が主催する本家Hardeningでは、本番1,2か月前からチームビルディングなどの事前準備を行い、競技本番は2日間に渡って実施されます。

一方、MINI Hardeningは「セキュリティインシデントをカジュアルに体験!」のコンセプト通り、競技本番から振り返りまでを半日程度で体験可能なイベントとなっています。

今回我々が参加したMINI Hardeningのバージョン 4のテーマは「ソーシャルゲーム」となっており、サーバをサイバー攻撃から守る必要があるほか、ゲームのチート行為を対策する必要があるなど、幅広いスキルが要求される(=どんなスキルを持っていても活躍できる)シナリオでした。

 なぜ参加したのか?

Mini Hardeningのコンセプトである「セキュリティインシデントをカジュアルに体験」したかったから!という解答が主体的かつ望ましい気がしますが、、実際は弊社の先輩社員の方に勧められて参加する運びとなりました。

Hardeningについて※業務で扱う者/扱わない者が有志で集い、今回のMini Hardening 4.4 に参加する同期チームが完成したのはいいものの、今回の大会に向けて準備する時間を当てられず、各々のスキル頼みとなってしまったのは反省です。

※NFLabsの研修の一部としてHardeningのような演習を取り入れており、先日のエヌ・ティ・ティ・コミュニケーションズ株式会社のTechWorkshopのプログラムでも実施しました。ご興味のある方は以下をご覧ください。

engineers.ntt.com

 参加メンバー

1チーム5名程度で参加可能とのことでしたので、NFLabsの同期社員4名に、NTTコミュニケーションズ社員1名を加えた5名で参加しました。

我々の他に3チームが参加しており、計4チームで競技を行いました。

 競技の流れ

 タイムライン

connpassに記載されたタイムラインを引用します。

時間 内容
10:00 会場受付開始
11:00 - 13:00 ハードニング競技(前半)
13:00 - 13:45 休憩(環境を閉めます)
13:45 - 16:45 ハードニング競技(後半)
16:45 - 17:00 休憩
17:00 - 18:00 競技の振り返り・解説
18:00 - 18:30 表彰・インタビュー
18:30 終了

 チーム分けと実際に行った対応

競技開始前は、『サーバをサイバー攻撃から守る』『ゲームをチート行為から守る』
の2グループに分かれました。その後各チーム内で「守るためには何をすればいいんだろーね」と想像を膨らませながら、開始を待っていました。

開始直後は、環境へアクセスをしながら各環境内がどういう構成を担っているのかを確認していて平穏な時間を過ごしました。

途中お昼休み中には、環境が閉じられているため、分かれていたメンバが集合し進捗についての共有等をしたり、「今後この攻撃が来るんじゃないか」とか話し合っていました(この昼休みの話し合いがこの後,悲劇を生むことになるとは...。゚(゚´Д`゚)゚。)

そして、競技中盤以降になると本格的に「守る」作業が押し寄せてきます。
「○○が△△じゃん」という状態を確認する→対応に時間がかかる→「□□が××~」という状態を新たに確認する→対応に時間がかかる→以下ループ

競技終盤には「もうダメ!終わろう!社長ごめん!」という声が脳内から聞こえた(気がしました)がそれでも最後まで手を動かしていたのはチームメンバがいたからなのかなと思います。(現実、一人でこの対応に追われる世界線があることを想像すると...)

競技終了後は、本演習についての解説が行われました。

解説を聞いてメンバ内で「あれは気づかなかった」「これそーいうことだったのか
」などやり取りしながら競技中についての補完ができました。昼休みの話し合いを元に採点の核になる部分を停止してしまった事はここで明らかになり、皆で見つめあいました、、(伏線回収(-_-)/~~~ピシー!ピシー!)

 得られた知見

カジュアルに体験とは言っても内容は非常に本格的でした。ゲームのチート対策や不正アクセスからいかにして環境を堅牢にして守っていくか、さらにサービスレベルをいかに維持するかといった多くの視点を取り入れており、学びが多かったです。以下、それぞれ(ゲームのチート対策/不正アクセス)について得られた知見を簡単にまとめます。

【ゲームのチート対策】
・そもそもチートを行うとほかの通常ユーザが満足できなくなる。
・他のユーザが満足できるように、チートユーザへの対策とチートを行えなくなるような対策が必要。
・ソースコードをいじるときには、当たり前ですが直接本番環境をいじるのはもってのほか。開発環境でコードが意図通りに動くことを確認したうえでデプロイしないと、ユーザに大きな影響を与える。(チート対策も同様)
・経営的視点からいうと、いかに課金させるかが重要。課金部分をチートされるなんてことはもってのほか。etc..

【不正アクセス】
・会社の運用しているサイトをいじられると、企業の経営そのものに直結する。(個人情報漏洩やサイトの踏み台化など)
・スーパーハッカーが来た時に、全サイトを落とされるような脆弱性を放置してはならない。
・インターネットに公開しているWebアプリケーションの脆弱性周りは、企業への入り口になるので入り口をふさぐことが非常に重要。
・侵入されたとしてどのレイヤーまで侵入されたのかを把握しないと、切り離す部分がわからない。侵入された部分がわからないからと言って、すべてを切り離すのはサービスとして意味がなくなる。判断のスピードと決断力が求められる。 etc..

【両事項に横断する知見】
・セキュリティ対応において、チームワークがいかに大切か。一人がやっているから全責任を負わせるのではなく、皆で対応しているという意識のもと、ほかの担当者にも目を配る。
・相手の意見を尊重する。設定変更の時などに意見が分かれることもあるが、時間がないからと自分の意見を押し通すのではなく、意見を聞く「耳」を持っておくことが重要。 etc..

 感想

筆者自身、Hardening競技に参加するのが初めての経験でしたので、ワクワクしながらも、「どのように攻撃に対応するのだろう」「もう少し、サーバの設定ファイル群を読み込んでおけばよかった、、」と不安でした。当日の説明が終わり、少しの間チーム内で話す時間(チーム内の担当部分のディスカッション)が設けられたのですが、この時信頼できるチームという存在の心強さを感じ、ほっとしたのを覚えています。

実際の競技が始まって、最初は環境への接続から開始しました。RDP接続ができず、SSHポートフォワーディングですべて対応したのもいい思い出です。(いちいち、トンネルを作らないといけなかったので、めちゃくちゃ面倒でした、、)競技内容にはあまり言及できませんが、チーム内で相談しながら「ここはこういう設定だから、こっちにした方がいいのでは?」「急に攻撃きたよ~~(´;ω;`)」だとか、てんやわんやしながらも競技を楽しむことができました。本来のコンセプトである『セキュリティインシデントをカジュアルに体験!』を実現できたと感じています。

 今後の展望

MINI Hardening Project 4.4に参加することで、システム全体を理解することの重要性を改めて気づくことができました。

従来の環境や流行りのDevOps環境などに対する攻撃者側の視点を意識してシステムを守れるような意識を持つきっかけにすることができました。

それぞれの参加メンバーはセキュリティに関わる業務をしていますが、防御側だけでなく攻撃側の視点も重要なことが多くあります。

Hardeningは防御側としての取り組みにはなっていますが、攻撃側の視点を考えた上での対応を行うことが頑強なシステム運用につながるので良い経験を得られたと思います。

今後の展望としては他のHardeningの大会にも積極的に参加し、スキルレベルやセキュリティ意識を向上させ、業務に活かせるように取り組みたいと考えています。(^^)v(^^)v