Atrae Tech Blog

People Tech Companyの株式会社アトラエのテックブログです。

Hardening Project 2021 に参加してきた話

f:id:oguogura:20211201091252p:plain

こんにちは。People Techカンパニー、アトラエの小倉 (@haaaayhay)です。アトラエではセキュリティ推進者とコーポレートエンジニアをやっています。

この記事は、株式会社アトラエアドベントカレンダー2021年1日目の記事です。

先日、有給を頂いて Hardening Project という外部のセキュリティ演習のイベントに参加してきました。経験や知見を会社に還元するという前提で臨んでいたためこの度記事を書いています。これを読んだ弊社のメンバーが興味を持ってくれるのも嬉しいですし、アトラエのセキュリティ強化をしている人はこんなことを考えているんだなと感じて頂ければ幸いです。

この記事の位置づけ

この記事は Hardening Project の存在をご存知ない方や、知ってはいるけど参加されたことがない方向けのものです。

「Hardening って面白そうだな」とか「次は参加してみようかな」とか思ってもらえるような記事を目指しています。

Hardening Project とは

公式の言葉を借りると「脆弱性のあるビジネスシステム(ECサイト)へのハードニング(堅牢化)力の強さを総合的に競うコンペティション」です。

Hardening Project は 2011年6月に発足し、「IT 技術の発展によりユーザーも開発者も豊かになっているはずなのにセキュリティの事故や事件がなくならないのはなぜなんだ?」という問題提起からこのプロジェクトが始まっています。

現実世界でインシデントを起こさず堅牢なサービス運営を推進できるだけではなく、インシデントが発生した時に適切にハンドリングできる人材を育成することを目的にこのプロジェクトが10年近く続いています。

Hardening Project(以下ハードニング)では脆弱性が多分に含まれた複数の EC サイトをチームで運営しつつ、運営側からの攻撃を防いだりインシデントが発生した場合にはなんとかして復旧させたりして成果を残すことで評価を稼ぐコンペティションです。

今回含めこれまでのハードニングでは例えば以下のようなことが起きています。

  • 変更されていない Word Press の初期パスワードをつかってログインされ構成を変更される
  • サーバがランサムウェアに感染、身代金を払うも復旧させてもらえず詰む
  • 構成図には存在しないサーバーにアクセスされ、次々にサーバを横断されオーバーキル
  • EC サイトが XSS やインジェクションをきれいに喰らって情報漏えい
  • 顧客の個人情報を漏えいさせたチームは緊急記者会見を開き陳謝

企業のセキュリティ強化を担当する方は現実世界で上記のインシデントを決して起こさないために日々対策や研鑽に努めていると思われますが、インシデントを経験しないと経験値が得られない。でもインシデントを起こすわけにはいかないという矛盾を抱えているのも事実です。

セキュリティにかなりの意識とリソースを割くことができている企業や組織であれば、インシデントの対応演習やペンテストを実施することも可能かと思います。ただし現実問題としてそれが叶わない組織や個人の方がずっと多いと思います。

ハードニングは抽選形式ではありますが参加は無料です。上記のような課題をお持ちの方はもちろん、単に技術力や対応力を鍛えたい方もご参加をおすすめします。

ハードニングとは?ということを結構ゴリッと書いていますが、自分は運営の人ではありません。ただし個人的にはこのあたりを理解した上で参加されるとより実務(というか実生活)に還元しやすいのではと思いこのあたりの背景をきちんと書いています。

ということでここからは今回のハードニングについて具体的なことを書いていきます。

ハードニングは時系列で見ると3つの活動に大別されます。

  1. 事前準備
  2. ハードニング当日
  3. 事後の振り返りと共有

ちなみに以下のスケジュールと対応しています。

概要 日時
Activation Day 1 マーケットプレイス(後述)の説明 2021/11/17(水) 17:00-20:00
Activation Day 2 - マーケットプレイスの説明
- 環境の説明
2021/11/18(木) 17:00-20:00
Hardening Day 競技 2021/11/19(金) 9:00-18:00
Fault Analysis チーム内の振り返り 2021/11/20(土) 9:00-15:00
Softening Day - 参加者全員での振り返り
- 運営チームからの解説
- 結果発表と表彰
2021/11/27(土) 9:00-16:00

wasforum.jp

1. 事前準備

約1月前に参加確定の連絡が届きます(抽選なので参加できない場合もあると思います)。同じように当選した他の参加者5~7名で1つのチームを組み、そこから当日まで準備を行います。もちろん本部から案内は来ますが、何を準備するか、どのように準備するかについて指示はないので基本的にチーム内で議論して進めていきます。

ハードニングは脆弱な EC サイトを堅牢化することが1つの目的でありゴールでもありますが、会社やサイトを運営するために商品を購入したり、そのために決裁が必要になったりします。詳しくは書きませんがいわゆるビジネス的な取り組みに向けた準備も必要になってきますので、技術面での貢献が難しいと思っている方でもバリューを発揮する余地はたくさんあると思います。

f:id:oguogura:20211128195853p:plain
自チームの発表資料より

もちろん事前準備や競技当日に利用するツールも各チーム内で決めます。

f:id:oguogura:20211128195929p:plain
自チームの発表資料より

2. ハードニング当日

環境について

競技の前日になると運営から競技の詳細や環境(仮想環境やサーバ構成など)について通知があります。

今回は StarBED を利用して DMZ 構成の環境が構築されています。

競技当日は AWS VPN に接続しリモートデスクトップで踏み台にログイン、その上で DMZ 構成の各環境や(擬似的な)インターネットへ接続する形となります。

f:id:oguogura:20211128195950p:plain

(公開されている YouTube LIVE から拝借しています)

競技中のリアルについて

常時バタついていたことを一番鮮明に覚えています。

たくさんのシーンがありますが、初っ端はこんな感じでした。

  • 20以上あるサーバや管理サイトのパスワードを変更しないと!
  • 既に EC に数百人の購入が入っている!すごい!(ただし bot
  • 全サーバの SSL 証明書が切れてサービスが稼働しなくなった…
  • WebMail の認証が急に弾かれるようになってメールの確認と送信ができなくなった…

基本的にはインシデントを確認したら Slack で通知しつつ Trello に起票、担当者をアサインして対応するという流れです。このあたりは現実世界での対応手順と同じですが、ハードニングでは常時トラブルが発生します。攻撃もありますが、SSL 証明書のような時限爆弾や自分たちの行動による自爆もあります。

マーケットプレイスについて

ハードニングではマーケットプレイスという制度があります。これはベンダー製品やサービスを有料で利用することができる制度です。

現実世界で我々がセキュリティベンダーの製品やサービスを利用させもらうように、ハードニングでもオークションを勝ち抜くことでそういったものを利用することが可能になります。

例えばうちのチームでは Cisco さんの NGFW/IPS と EDR をセットで契約させて頂きました。

何の脅威に対して何に投資をするかには正解がありませんが、こういった選択肢があることもハードニングのおもしろ要素の1つです。

3. 事後の振り返りと共有

Softening(以下ソフトニング)は振り返りと共有のための時間です。競技を実りあるものにするために事前の準備と事後の振り返りが重要になるのは言わずもがなですが、事後の共有に競技関係者全員が積極的なのもハードニングのいいところだと思いました。

各チームの事前取り組みや競技を通した経験と知見が共有されるだけではなく、運営チームの攻撃や参加者のファインプレーが紹介されます。

同じ脅威や脆弱性でもチームによって対策が異なる点が勉強になりました。経験の幅と深さでとれる選択肢が変わってくるため一連の共有は非常に有意義でした。

現実世界でどのように応用するか?(その1)

ハードニングは現実には考えられない極端な環境での競技です。そうなると自ずと打ち手も極端になります。

例えばパスワードの使い回しは一般的に非推奨もしくは禁止だと思います。ただし20個以上もの初期パスワードを短時間で変更する必要がある場合、硬いパスワードを1つ作って共通で利用するというやり方も競技上では有効なやり方かもしれません。

現実世界では組織のセキュリティを強化していく上ではリスクの発生確率と被害の大きさ、対策の投資対効果を考えるはずです。が、担当者の基準が養われていないと適切な判断ができません。

打ち手に正解がないためこのあたりの判断が非常に難しいですが、ハードニングという脆弱性で溢れている環境では「適当でもいいから短時間で数多くの脆弱性を潰すこと」「サービスが1つ落ちても残りを守ること」といった普段はしないような意思決定をすることになります

それらが正しかったかどうかは誰も分かりませんが、そういった極端な環境での意思決定の経験を通して現実世界での意思決定が相対化され、良し悪しを評価できたり自信が持てたりすることを感じました。

現実世界でどのように応用するか?(その2)

とはいえ現実世界に極めて近い環境がところどころ再現されているのも事実です。

  • チーム全員がオンラインの中でインシデントに対応しなければならない状況
  • 自分が一切関与していないのに巨大で脆弱な環境を渡される理不尽さ
  • しかも用意されるツールやサービスを触ったことがないという追い打ち(Word Press とか Rainloop とか運用したことない
  • その上で他責にせずなんとかしなければならないというマインド

かなり過酷ではありますが、我々に求められるのはこういった環境でもなんとかすることだと思っています。「なんとかする力」を養いたい方、是非ご参加をw

現実世界でどのように応用するか?(その3)

ハードニングは開催の度にテーマが変わるようですが今回のテーマは Active Fault(活断層)でした。

f:id:oguogura:20211128200304p:plain
コンセプトアートも毎回作成されているようです。カッコいい!

我々が普段運用する環境には活断層が潜んでいます。参加前は運営チームからの突飛な連続だと思っていたハードニングでしたが、振り返ってみると基礎的な対策漏れをついたベーシックな攻撃と自爆が殆どでした。各チームで初期パスワードや sudo の対策漏れを突かれていたのは印象的でした。

そう考えてみると大きなリスクとして発現する活断層は、基礎を怠らず積み上げることで十分対策可能であると言えるでしょう。基礎的な対策の怠りから重大なインシデントに繋がるという具体的な経験やストーリーは、現実世界で自分が所属する組織が一丸となるための話題としては非常に説得力があるはずです。

ぶっちゃけこれ以上は書ききれませんが、細かい記述はこの記事の責務から外れそうなのでこのあたりで終わりです。気になった方は次回の Hardening や、Micro Hardeningに参加されてはどうでしょうか!

参考

ソフトニングの動画が YouTube Live で公開されています(限定公開ですが公式 Twitter でツイートされているので問題ないはず)。温度感含めて内容を感じられると思うので是非ご覧ください。

[H2021AF] Hardening 2021 Active Fault - Softening Day

  • 各チームの発表(15:25~
  • 運営チームからの振り返り(3:43:01~

最後に

最後までご覧頂きありがとうございました。

株式会社アトラエでは一緒に働く仲間を募集しています。興味ある方は是非こちらのスライドを御覧ください!

speakerdeck.com

明日はアトラエが誇るデザイナーたけてつさん(@taketetsu1982)の記事です。お楽しみに〜