サイト内の現在位置

Hardening 2020 Business Objectives参加記

NECセキュリティブログ

2020年2月7日

NECセキュリティ技術センターの郡です。2020年1月24,25日に、沖縄県名護市にて開催されたHardening 2020 Business Objectivesに参加してきました。今回はこのHardening Projectについてお伝えします。

Hardening Projectとは

Hardening Projectは非営利団体WASForumによって2011年に発足したプロジェクトです。このプロジェクトによるセキュリティの競技会として、堅牢化を競い合うイベントが2012年より開催されています。
今回はHardening 2020 Business Objectivesと題して沖縄県名護市が舞台になりました。上期、下期に各1回ずつ開催されており、前回は北海道にて行われています。

競技会場の万国津梁館。「世界の架け橋」という意味があり2000年の九州・沖縄サミットが開催された由緒ある会場です。

Hardeningイベントの特徴

Hardeningイベントの最大の特徴は、チーム単位で実際にECサイトを稼働させながら堅牢化を行い、運営による攻撃から資産を守る必要があるという点です。

ECサイトはNICTより提供された仮想環境StarBED内で動作しており、商品を購入する役割はクローラーが担当しています。そのため、攻撃や設定ミスによってECサイトの運営に支障が発生した場合、クローラーの巡回が失敗します。
ECサイトは稼働時間(クローラー巡回成功時間)を基準として売上が変動するため、各チームは堅牢化を実施しつつ、サイトの売上の最大化を狙わなくてはなりません。
売上がチームの基本得点となるため、サイト停止は得点減少に直結します。このようにHardeningではサイトの「可用性」維持が非常に大きなウェイトを占めています。

この他に少し変わった要素として、セキュリティベンダさんがマーケットプレイスとして出店しているサービスを購入することが可能です。
人材派遣やWAF、IPS/IDS等のサービスを購入して、堅牢化を委託できます。この際、ECサイトの売上より代金が支払われるため、チームの状況をよく確認して決断する必要があります。
さらにマーケットプレイスは購入可能チーム数に上限が設定されているサービスもあり、上限突破の場合は他チームの金額を予想してオークション形式で購入金額を決定しなくてはなりません。

Hardening 事前準備

Hardeningの競技は、本番数ヶ月前に発表されるチーム編成の時からスタートすると言えます。
チーム名やチームリーダーの決定は運営より指示がありますが、基本的にそれ以外の行動は各チームに委ねられます。
私が参加したチームでは、チャットを基本とした会話を行いつつ、ビデオ会議によって隔週ペースくらいで会議を行いました。会議で行った準備例は以下の通りです。

  • 自身の職歴や経歴等を自己紹介
  • スキルシートを作成
  • 当日の役割分担を決定
  • 当日のスタート時作業の決定
  • マーケットプレイスから購入するサービスの相談
  • etc...

ちなみに、ECサイトのネットワーク構成や、細かいルールは競技前日の夕方に配布されるため、細部まで決めきることは不可能です。

競技前日は、チームリーダーが事前に予約してくれたお店で配布資料の読み合わせと最終決定を行いました。前日に配布される資料は非常に大量なうえ、競技中何度も見返すことになるため、ここでの意識合わせは非常に重要です。

競技本番 Hardening Day

Hardening競技は、堅牢化を行う1日目のHardening Dayと各チームによって行われる振り返り発表会+運営の攻撃ネタばらしを行う2日目のSoftening Dayに分かれています。1日目の堅牢化は8時間行われ、この間はお昼を除いてノンストップで作業を行わなくてはなりません。ちなみに今回のHardeningでは、ミッションという形で強制的にお昼を会場外で食べるよう指示されていました。

全国から集まった熱意のある方々が9チームに分かれて「衛る力」を競い合いました。

競技開始後はパスワードの変更や各種バックアップといった基本的な対策からスタートしました。しかし、稼働しているマシンの多さや会場が物理的に2つに分かれていたことも影響して、作業は思ったよりはかどりませんでした。
私達のチームは事前の打ち合わせで決めていた開始時作業を完了出来ず、また、マーケットプレイスも狙っていたサービス2つのうち1つが購入出来ないなど、スタートダッシュに失敗してしまい、お昼の時点では9チーム中6位と出遅れてしまいました。

しかし、その後はサイトの監視や復旧を徹底的に行なったため、徐々に点数が伸びはじめました。
インシデントや障害の原因調査を競技時間中に行うことはほとんど出来ないため、判明した穴を塞いで復旧を繰り返しつつ、サイトコンテンツの追加や変更を行い、クローラーの巡回頻度を上げるよう努める作戦です。
この作戦が上手く機能し、午後2時あたりから売上による得点が1位になり、何とか逃げ切りたい状態に持っていけました。

EC-CUBEの管理画面から在庫数を補充出来ない現象や、勝手に90%OFFにされてしまう攻撃等が発生しましたが、POSTリクエストのサイズ上限が原因と見抜いたメンバーが素早くPHPの設定を変更したり、監視メンバーが90%OFFに速攻で気付いて修正してくれました。

しかし、終了2時間前あたりでサイト改変によるクレジットカード情報流出のインシデントが発生し、一部のサイト閉鎖を余儀なくされました。
このインシデント発生時にはチームリーダーと他1名が呼び出され、運営委託元から叱責を受けながら対応を約束させられました。しかもこの場面が会場に中継されるという恐ろしい出来事も発生しています。
インシデント発生サイトはDBが結局復旧できず、焦りが募る中、2位のチームに猛追されている状態で競技終了となりました。

スコアボードは競技終了1時間前くらいから参照できなくなる上に、売上得点にファインプレーによる加算やペナルティによる減算が計算された点数が最終的な結果となります。逃げ切れたのか、追い抜かれたのか、確信がない状態で明日に向けた資料作成に取り掛かることになりました。

競技終了後、チームメンバーで再び集合し、各自の活動記録や感想を簡単にまとめたスライドを作成しました。
この際、購入したマーケットプレイスから送付されたレポートを参照していましたが、ランサムウェアと思わしきマルウェアがブロックされていたことが判明しました。この攻撃を受けていた場合一発アウトだった可能性が高いので、自分たちでは手が回らない部分をお任せできたのは非常に助かりました。

資料は郡が発表することになったため、一旦ホテルに持ち帰って勝手に自分が発表しやすいように変更しました。

競技中は常に各チームのスコアが表示されていました。

Softening Day

2日目のSoftening Dayでは、各チームの発表がチームナンバー順に行われます。ここでは匿名による質問フォームが用意されており、他チームのメンバーも疑問点を内緒で質問できます。

この後、運営からの解説やHardening開催の苦労話が披露され、各チームのファインプレーや珍プレーの紹介が挟まり、最終順位の発表となりました。
私達のチームは個々の技術点は顧客対応点の2位を除いて平凡以下の結果でしたが、基本得点の売上を非常に稼いでいたことが決め手となり、グランプリを受賞することができました。

サイトの堅牢化と維持をチーム一丸となって行えた結果が表れたと考えています。チームメンバーのみなさん、ありがとうございました。

Hardening 2020 Business Objectives グランプリを受賞

Hardeningで気をつけるべき点

今後Hardeningに参加したい、するという人に向けて、競技の参考になりそうな点をいくつか紹介します。

  • 基本的な対策の徹底
    「基本的な対策は行われているだろう」という思い込みは危険です。PUTメソッドの制限やCMSに不要なユーザやインストーラーが残っていないかといった基本的な対策を忘れないでください。Hardeningは基本的な設定を徹底的に行うのが鉄則です。
  • 脆弱性回避手法の確認
    サイトの運営を維持する必要があるため、脆弱性対策はパッチによる修正ではなく、運用による回避が求められます。今回の例ではPHP-FPMの脆弱性(CVE-2019-11043)を突いたと思われる攻撃が発生しました。修正バージョンが公開されていますが、設定値の変更で対処する必要があります。
  • 顧客からのメールに注意
    顧客メールに注意してください。現実のインシデント発生時にもありがちですが、バグの報告や何らかの改ざんの兆候はカスタマーサービス宛にメールが送られてくることが多いです。Hardeningも例外ではなく、顧客担当宛にインシデントを示唆する内容のメールが送られてきます。
  • 死活監視のみではなく、サイトの内容の監視も
    監視を怠らないでください。サービスの死活監視はもちろんですが、細かくサイトのチェックを行っていないとサイトの改ざんに気づけない可能性があります。今回発生した90%off設定はその最たる例で、サイト自体は正常に稼働していますが、売上得点が大きく影響を受けました。
  • 資料は細部まで読み込む
    資料をしっかりと読み込んでください。私たちのチームも読み落としや読み違いがあり、混乱してしまった場面がありました。再起動設定がされていないなど、可用性に関わる記載も多いです。また、資料に不整合が存在している可能性も存在しています。
  • 計画は柔軟性を重視
    綿密に計画を立てすぎないように注意してください。開始後すぐは構成の把握や接続のテスト等に意外と時間を取られてしまうことに加えて、障害やインシデント対応に追われるため、事前に立てた計画は思っているより実行できません。
  • マーケットプレイスの活用
    自分たちでは手が回らないor苦手な範囲を委託するのは時間に追われる本競技では非常に有効です。自分たちで対策や復旧を行う自信がない部分は、外部の手を借りて堅牢化しましょう。手が回らない部分が存在しているのは精神衛生上もよろしくないです。

おわりに

実はHardeningの競技はYouTubeにてライブ中継が行われているため、競技の様子を画面越しに確認することが可能です。また2日目のSoftening Dayは動画がアップロードされているので、どんな雰囲気か確かめたい方は覗いてみてください。
Hardening ProjectではHARDENING宣言と題して賛同者を募集しております。関心のある方は参考リンクより内容を確認していただき、ぜひフォームよりご賛同ください。

参考リンク

WASForum (new windowhttps://wasforum.jp/)
Hardening 2020 Business Objectives - Softening Day
(new windowhttps://www.youtube.com/watch?v=6JDNs_OnMYo)

執筆者プロフィール

郡 義弘(こおり よしひろ)
セキュリティ技術センター インテリジェンスチーム

脅威情報の収集や展開、活用法の検討とともに、PSIRTとして脆弱性ハンドリングに従事。
山の上からセキュリティを見守りたい。