Hardening Decade 2022参加記

Posted on Nov 16, 2022

はじめに

11月15、16、19日に渡って開催されたHardening Decade 2022に参加しました。

ハードニング競技会は、基本的に、チームに託されたウェブサイト(例えばEコマースサイト)を、ビジネス目的を踏まえ、降りかかるあらゆる障害や攻撃に対して、考えうる手だてを尽くしてセキュリティ対応を実施しつつ、ビジネス成果が最大化するよう調整する力を競うものです。

この競技会は第一日目のHardening Day、第二日目のAnalysis Day、第三日目のSoftening Dayの三日間で開催されました。また、競技の1ヶ月半前くらいにチーム分けが発表され、各チームは競技までの期間に準備を進めることになります。

競技前の期間

競技の1ヶ月半前くらいにチーム分けが発表された後、チームで一週間に一度ミーティングを行っていました。役割分担をした後、各メンバーがやるべきタスクが割り出され、タスクの進捗確認を行っていました。

私はwebサーバ、Docker、EC-CUBE(競技に用いられるECサイト)の担当になったので、競技当日に参照できるようなチートシートを作成していました。

ミーティングは過去のハードニング競技会参加者の方々が進行してくださり、円滑に進んでいました。また、ミーティングの最初にメンバーが最近あったことを話す期間が設けられており、チームに打ち解けやすいように感じました。

第一日目: Hardening Day

第一日目はHardening Day(競技当日)です。9:00に会場の万国津梁館に集合し、9:40くらいから競技が開始されました。競技開始から1時間は攻撃がこない時間なので、その間にLinuxサーバのユーザのパスワード変更、各種バックアップの取得などを行いました。私はwebサイトが稼働しているサーバ4台の管理を担当していたので、その後はアクセスログを監視したり、脆弱な設定やコードを修正する作業をすることを考えていました。

自分のやらかし

Dockerコンテナが動作しているサーバで脆弱な設定がなされていました。その設定を変更した後にコンテナを再起動すると、コンテナ間通信で名前解決ができないエラーが出ました。そこでだいぶ焦ってしまい、コンテナを一旦削除してまた起動することを考えました。実際コンテナにvolumeが設定されており、重要な部分のデータは永続化されているので、コンテナを削除してもまあ大丈夫だろうという軽い気持ちでした(後で確認すると一部重要volumeが設定されていなかったが)。

しかし、使用されているイメージが予想外の仕様でコンテナ起動時にwebサーバを起動すると、その後にweb管理画面からの操作でソフトウェアのインストールを要するタイプのものでした。競技環境からインターネットには接続できないのでこの時はかなり絶望的な気持ちになりました。一旦落ち着いて、復旧できないかを試してみようという気持ちになり復旧を頑張ることにしました。volumeがとれていない部分ではあったのですが、なんとかvolumeから復旧できないか試したりしました。

結局、自力では無理そうだということがわかり、運営の方に質問をしたところ復旧は不可能だろうという旨の答えが返ってきました。なので、一旦落ち着いてひとつのwebサイトを動作させるのを諦めることにしました。幸い売り上げには直結しないサイトでした(おそらく減点はありましたが…)。

ネットワークトラブル

競技の途中でネットワークトラブルが発生しました。計3時間以上の間、ファイヤウォールと公開サーバ間の通信が断続的に不安定になり、ほとんどサーバ内で作業することができない状態になりました。ネットワークのプロの方が調査をしてくださったところ、停止しているサーバあてにファイヤウォールが大量のARPリクエストを送りつけた結果、L2環境がダウンしたことが原因であることがわかりました。停止しているサーバは実態のわからず、特に使用されていないものだったので停止されていたのですが、どうやら停止するのはあまりよくなかったようです。その後、停止しているサーバを起動して、ARPリクエストに答える状況にすることで復旧できたようです。自分はこのレイヤーのことをあまり理解していないため、何もできなかったことが悔しかったです。L2環境がダウンすると、こちらからは操作が全くできないので、L2、L3の技術やインシデント対応力を身につけることは重要だと身にしみて実感しました。

偉大なるWAF

マーケットプレイスにてバラクーダさんのブリッジ型WAFを購入することができていました。競技終了後に提供していただいたログを見ると、かなりのweb経由での攻撃を止めてくださっていました。実際、個人情報漏洩インシデントなどは発生せず、呼び出しなどはありませんでした。webサーバのアクセスログを監視しているとWAFを回避してくる攻撃が確認できましたが、webサイトを遅延する攻撃などしかなく、影響度の大きい攻撃は確認できませんでした。また、バラクーダさんに依頼するとWAFの検知ルールを追加することができ、その点でも非常に助かりました。製品として提供されているWAFの防御力の高さを実感することになりました。

競技終わり、パーティ

その後、競技は18:00まで行われました。競技開始から8時間ほどほとんど休憩なしに集中モードで取り組んでいたため、かなり疲弊しました。なかなか普段ではそこまで長時間集中することはないので、かなり充実した時間でした。

競技終了後はパーティーが開催されました。名物の泡盛を飲んだり、歌を聞いたり踊ったりしながら楽しい時間を過ごしました。同じチームの方々や他のチーム、企業の方々とも交流を深めることができ、非常に良いパーティでした。

第二日目: Analysis Day

第二日目はAnalysis Day(各チームでの振り返り日)です。各チーム、コワーキングスペースなどに集合してHardening Dayの振り返りを行いました。この際にSoftening Dayの発表資料のドラフトを作成しました。また、チーム内でHardeningの練習用環境欲しいけどそれが出たら対策が出来過ぎそうという話が出ており、自分は帰り際に以下のようなことを考えていました。

来年もHardeningに参加したいと考えているので、その対策も兼ねてこれから作っていきたいと考えています。

第三日目: Softening Day

第三日目はSoftening Day(全体での振り返り日)です。Softening Dayでは各チームのやタスクフォース(連合チームのCISOの集まり)からの発表、攻撃チーム、インフラチームからの発表、表彰式などが行われました。せっかくの良い機会だと思ったので、チーム発表をさせていただきました。

presentation

攻撃チームからの発表はやはり学ぶことが多かったです。しかし、思ったよりも攻撃チームはwebサイトを破壊したり止めたりしていないことがわかりました。セキュリティ対策を実施しつつ、webサイトの運用をすることは簡単ではないということがわかりました。

また、インフラチームからは発生したネットワークトラブルについての説明がありました。どうやら再現性はあるものの、直接的な原因はまだ分かっていないようです。かなり複雑そうな問題なので、来年までに原因を究明していただきたいです。

長時間に渡って発生したネットワークトラブルの影響が大きかったようで、成績は最下位でした(泣)。しかし、バラクーダさんのWAFをしっかり活用していたことを評価していただき、バラクーダ賞をいただきました。アマギフ1万円分ありがとうございます。

おわりに

今回初めてHardeningに参加して、リアルタイムでのインシデント対応の難しさを感じました。また、セキュリティ対策を実施しつつ、webサイトを運用することの難しさも知りました。今回の参加で、Hardeningでどんなことが起きるのか、どのような対策・対応をすれば良いかが大体把握できたので、次回以降の参加に生かしたいと思います。未熟な自分に発表をさせてくださった同じチームのみなさん、運営のみなさん、スポンサーのみなさん、本当にありがとうございました。