Classi開発者ブログ

教育プラットフォーム「Classi」を開発・運営するClassi株式会社の開発者ブログです。

Classiセキュリティ強化への道・前編~Micro Hardeningで修行編~

こんにちは、サイバーセキュリティ推進部の野溝(@nomizooone)です。普段はClassiサービスの脆弱性診断や顧客対応などを担当しています。今回は、Classiのセキュリティ強化のための取り組みについて書きます。

エンジニア個人のセキュリティ対応力を高める施策

Classiは2020年に、大規模な個人情報漏えいインシデントを起こしてしまいました。

インシデントの詳細についてはこちらで情報公開をおこなっています。

このインシデントを二度と繰り返さないために、様々な取り組みをおこなっています。もちろん、技術的に高度なセキュリティのしくみをとりいれたり、組織として体制を整えるなどの対策も重要ではありますが、Classiで働くエンジニア個人のスキルアップも重要な要素のひとつと考えています。

セキュリティインシデントの対応を学ぶには、実際にセキュリティインシデントを経験するのが一番効果のある方法であると言えます。しかし、だからといって実際に事故を起こすわけにはいきません。

サイバーセキュリティ推進部では、エンジニア個人のセキュリティインシデントへの対応力を養うため、Hardening Project(ハードニングプロジェクト)がデザインしている「ハードニング競技会」に積極的に参加を推奨しています。

ハードニング競技会とは

脆弱性の潜むビジネスシステム(ECサイトなど)へのハードニング(堅牢化)力の強さを総合的に競うコンペティションです。Hardening Projectというボランティアのメンバーによって2012年から運営されていて、その設計の素晴らしさから、2022年にはグッドデザイン賞も受賞されています。

「ハードニング競技会」が2022年度グッドデザイン賞を受賞した際のプレスリリース

実践演習に特化したMicro Hardening

ハードニング競技会の詳細な説明は今後の記事に譲りますが、そのハードニング競技会のコンセプトをよりカジュアルにし、教育目的に特化した川口設計様のMicro Hardening(マイクロハードニング)を今回Classiで社内向け研修として開催しました。

Micro Hardeningの内容がどのようなものかは、川口設計様のサイトに掲載されている漫画がわかりやすいのでよかったら読んでみてください。

川口設計様のサイト

Micro Hardeningについて、簡単に説明すると、まずチーム毎に架空の事業環境となるECサイトなどが与えられます。そのサイトには数多くの脆弱性が潜在しており、攻撃者がそこを狙って攻撃を行います。それと同時に、たくさんのお客様もECサイトを利用し商品を購入します。脆弱性の対応によって攻撃者の攻撃を防ぎながら、お客様の購買行動を阻害しないこと。つまりセキュリティを高めながらビジネスを守ることが求められます。(※攻撃者もお客様もBotです)

Micro Hardeningのイメージ
Micro Hardeningのイメージ

リアルタイムに売上と防御点によってスコアがつけられ、チームの実力が数値として可視化されます。

Micro Hardeningでは、45分間を1セットとしてこれを繰り返し行うことが特徴です。

演習はセットごとにリセットされ、次セット以降も同じ環境で同じ攻撃が行われます。これを数セット繰り返すことで、初回で受けた攻撃の対処方法を次セットで試すことができるなどの多くの実践的な学びに繋げることができます。

Micro Hardeningには、無料で参加できる「コミュニティ版」と企業内部で開催する「クローズド版」があり、Classiで行ったのは後者のクローズド版です。Classi社員同士でチームを組み、インシデント対応の技術やコミュニケーションを学んでいく目的でした。コミュニティ版とは少しレギュレーションが違う部分があるので、Micro Hardeningについて検索してこの記事にたどりついた方はご了承ください。

Micro Hardeningで行ったこと

具体的なMicro Hardeningの内容を書くとネタバレになってしまうので、私が施策の参加者として行ったことを中心に書きます。

まず、研修参加者の8名を選出し、4名ごとに1チームを組成しました。 参加者には、チームをガイドする役割となるHardening経験者の他、未経験であっても普段からセキュリティに興味を示している若手を中心にバランスよくスカウトしてきました。通常業務の時間を割いての研修参加になるので、業務の調整を少し心配しましたが、Classiは教育の会社だけあって学習に意欲的な社員が多く、フォローをお願いすることになる他の社員の方にも快く協力してもらえてありがたかったです。

当日の記念写真
当日の記念写真(左上は川口設計の川口さん)

事前準備でやったこと

事前に川口設計の川口さんから、競技環境のシステム構成などが書かれた資料が提示されました。私の所属しているチーム2ではそれを参照しながら簡単な準備を行っていました。

指定された構成がやや古いバージョンであったり(※古いものの方が情報があるので対応がとりやすいからだそうです)普段の業務では扱わないサービスも多く、いきなり本番を迎えるには不安があったため、Oracle VM VirtualBoxを使ってOSのインストールを行うところから環境を作ってみる、という準備を行いました。 果たしてこの準備が直接的にどの程度役に立ったかは不明ですが、チームビルディングを行うという意味で一緒になにか作業を行い質問しやすい・お願いしやすい関係性をつくる、という点で成果があったのではないかと思います。和気あいあいと準備ができてよかったです。

その他、コマンドやパスワードの一覧を記載したチートシートを作成し、なるべく対応が円滑に行えるように工夫をしました。

演習当日の動き

弊社は基本的にフルリモートで業務をおこなっているので、当日も全員リモートで参加しました。

休憩を挟みつつ第1セットから第3セットまでを行い、全員が環境に慣れてきたところで川口さんの簡単な解説が入り、その点を踏まえて準備⇒最終セットへ。という流れでした。 4セットを終えてスコアはこんな感じでした。

演習全体のスコア
演習全体のスコア

2行目がチーム2のスコアです。前セットの学びを次に活かすことで順調にスコアを伸ばすことができました。

競技中はグラフが提供されて、スコアの伸びがわかるようになっています。第1セットのスコアグラフはこちらです(※チーム3番は参考値とのことです)

第1セット競技中のスコアグラフ
第1セット競技中のスコアグラフ

第1セットでは、途中でセキュリティ対応のつもりで誤ってデータベースのユーザーを削除してしまい、システムが全停止しそれ以降の売上が一切入らないという失敗をしました。しかも手順がわからず復旧もできませんでした。これが現実だったら大惨事です…想像しただけで背筋が寒くなります。

しかし、Micro Hardeningであれば泣いても笑っても45分で終わります。次セットでは気持ちを切り替え、同じミスをしないようすること、さらに次のセットでは、ユーザーを削除するのではなくパスワードを変更するという適切な対応(おそらく)を行うことができるようになりました。

そんな訳で成長した私達の最終セットのグラフはこちらです。

最終セット競技中のスコアグラフ
最終セット競技中のスコアグラフ

最初のグラフとスコアの伸びが全然違います。このように、対応能力が可視化される環境の中で、Micro Hardeningの演習セットを何度も繰り返し、高速でフィードバックをうけて素早く改善を回すことで、チーム全体の成長が促進されることを身をもって体験することができました。Classiでも生徒の学びの力を高めるための様々な機能を開発していますが、学習効率を高めるという点で大変参考になりました。

ふりかえり

当日もチーム別に簡単に振り返ったのですが、後日今回のMicro Hardeningに参加したClassiメンバー全員であらためてふりかえりを行いました。

Fun/Done/Learnでふりかえり
Fun/Done/Learnでふりかえり

Fun/Done/Learnのフレームで振り返ってみました。 小さくて申し訳ないのですが、特に右下に付箋が多く貼られていて、全員にとって学びの多い場であったことがわかります。

特に、以下の学びを得たことが複数のメンバーから挙げられていました。

  • インシデント対応における事前準備の大切さを知ることができた
  • 根本的なセキュリティ対策の大事さを理解した
  • チーム内コミュニケーションの大切さを改めて認識した

まとめ

Classiセキュリティ強化への道・前編~Micro Hardeningで修行編~でした。 実践的で貴重な経験を積ませていただいた川口設計様、本当にありがとうございました。

さて「前編」の表記の通り、実はこの記事にはまだ続きがあります。

最初にご紹介した、ハードニング競技会(通称:Hardening本戦)が2022年11月15日に沖縄の万国津梁館にて開催され、今回Micro Hardeningに参加したメンバーの一部が本戦にも参加することが決定しています。

このMicro Hardeningは、普段の業務におけるセキュリティ対応力を高めると同時に、一部にとってはHardening本戦に向けての修行の意味もあったということになります。果たして修行の成果がでるのか、それとも辛酸を嘗めることになるのか、後編をお楽しみに!

© 2020 Classi Corp.