導入
こんにちは、BtoB SaaS Product Team (以下 Product Team) の利根です。SPEEDA、FORCAS、INITIAL といったプロダクトの開発を行っています。
Product Team 内には、全社セキュリティを担うチームとは別に、プロダクトセキュリティの底上げを担うセキュリティチームが存在しています。
このセキュリティチームの課題はいくつもあるのですが、この数年でエンジニアの人数が大きく増えたため、メンバーのセキュリティ知識の底上げが重要な課題の一つでした。
今回は、その課題への対応として、Product Team 内の全メンバーを対象に、やられアプリ(Bad Todo List)を用いたハンズオンセミナーを実施しましたので、その様子をレポートしたいと思います。
このハンズオンを行うにあたり Bad Todo List の作者である徳丸さんから許諾をいただきました。さらには、ハンズオン当日にゲスト参加もしていただきました。ありがとうございました!!
写真は徳丸さんにハンズオンの最後に感想をいただいてる様子です。
企画の背景
セキュリティインシデントが発生した場合、事業に与えるダメージは甚大なものとなります。
例えば2021年5月に、マッチングアプリの Omiai で利用者の運転免許証画像などの個人情報が流出する事件が発覚しました。
個人情報漏洩の発表後、決算資料によると、Omiai 事業の収益は売上高減少とセキュリティ強化などのコスト増により減少することとなりました。
このように、セキュリティインシデントによる事業へのダメージは相当大きいものとなります。
我々は既にアプリケーションライブラリの脆弱性を検知する yamory や不正な侵入を検知する SIEM(Security Information and Event Management セキュリティ情報とイベント管理)製品の導入を行っています。しかし、最後は実装する人がセキュリティホールを生み出さないように気をつける必要があるということで、今回の企画ではアプリケーションの実装起因での脆弱性に対する意識を向上させるハンズオンを行うことにしました。
ハンズオン
以下のような流れでハンズオンを実施しました。
- 3-4人のチームに分かれる
- 各自のマシンで Bad Todo List を立ち上げる環境構築
- 30分間チームで協力して攻撃してみる
- 脆弱性がわかったら Google Form に投稿
- 運営から XSS の解説
- 順位発表
環境構築
はじめは Bad Todo List の環境構築からです。
Bad Todo List の環境構築はリポジトリをクローンして、docker compose up
するだけです。
とても簡単ですね。
攻撃開始
ここから実際にハンズオンを開始していきます。
ハンズオンは基本的に各々の PC で環境を作り、ハッキングを体験してもらいます。
4名ずつでチーム分けをし、分からないときや脆弱性を見つけた場合にチームに共有しながら、わいわい楽しくやってもらいます。
徳丸さんはリモート参加だったので、同じくリモート参加だった弊社社員のチームとコミュニケーションを取りながら、ハンズオンの様子を見守って頂きました。
オフライン参加者のハンズオンの様子です。
わいわいやってくれています!
チーム内で同じ画面を見て話しながら進めてるチームもあるようです。
ペアプロやってますね!
環境構築含め30分でタイムアップです。
実は見つけた脆弱性は Google Form で報告してもらっていて、この後チームごとの順位発表があります。
どきどきですね。
XSS の説明
順位発表の前に、主要で危険性の高い脆弱性として XSS の説明をしました。(裏側で企画したメンバーが順位付けを頑張っています …!)
XSS はどうやって成り立つのか、どれほどの影響があるのかなどから、Bad Todo List を使ったデモまで行いました。
デモまですると理解度は格段に上がりますよね。
順位発表
順位は見つけた脆弱性の数と、その影響の理解度からポイントを計算して、順位付けをします。
1位に輝いたのは、BtoB SaaS 事業 CTO のいるチームでした!
1位のチームには皆からの拍手が送られました。
各チームのポイントを見比べてみるとかなりポイントを取れているチームもあれば、ほとんど取れていないチームもあり、メンバー間の脆弱性に関する知識にかなり差があることがわかりました。
ハンズオンをやってみてどうだったか?
今回のハンズオンは Bad Todo List に実際に攻撃をしてみる時間、XSS 攻撃に関する説明を大きな軸として開催しましたが、全体としてはとても良い時間になったと感じています!
またハンズオンに参加した Product Team の皆さんから口頭やアンケートで様々なフィードバックもいただきました。
良かったこと
多くの方からポジティブなフィードバックをいただき、ざっくりとまとめると以下のようなものがありました。
- 徳丸さんのサプライズ登場で驚いた
- 実際に手を動かすことができて楽しかった
- 勉強になった
- セキュリティー意識が高まった
- ハッカーの視点になってセキュリティーを考えるという視点が良かった
今回のハンズオンは基本出社でオフライン開催でしたが、一部のメンバーはオンラインで参加しており、また徳丸さんもオンラインで参加していただきました。オンライン参加のメンバーはチャット等で徳丸さんと会話をしたり、教わりながら Bad Todo List を触ったりととても豪華な時間になりオフライン、オンラインのハイブリッド開催としても上手くいったと思います。
伸びしろ
一方でいくつかの伸びしろのフィードバックもいただきました。伸びしろを真摯に受け止め、次回ハンズオン等を主催する際の経験値として蓄えるためにも、どのような伸びしろがあったのかざっくりとまとめます。
- 環境構築は事前にしたかった
- 環境は立ち上がったものの何をしたら良いのかわからなかった
- 特に新しい学びはなかった
ハンズオンでは Bad Todo List にどのような攻撃ができるかをチームで競う方式にしたので、事前告知はせずその場で環境構築をするようにしました。その結果全員が一斉に docker compose を立ち上げた際に Docker の Pull の制限にひっかかってしまい、環境構築ができない人が多く発生してしまったのは非常に反省点です。当日は問題発覚後イメージを社内のレジストリにキャッシュして対応しました。
残りの2点に関しては、Product Team にもセキュリティに関して知識が多い人少ない人のばらつきがあるが故に全員にマッチする内容ではなかったのだと思います。どうせ開催するなら知識の有無に関係なく全員が楽しみ、学習できるハンズオンになるに越したことはないと思うので、次回の開催の機会には考慮にいれて企画をしたいと思います。
学び
今回の開催にあたって我々、主催者側も事前準備をする過程で色々な学びがありました。
事前に Bad Todo List を全員で触ったり、セキュリティインシデントが企業にどれくらいの影響を与えるのか、ハンズオンの設計はどのようにすべきかなど様々なことを調べ、考え、開催にまで至ることが出来ました。
特に今回のハンズオンでは Bad Todo List へ成功した攻撃をフォームで送信してもらい、主催者である我々が採点をしました。限られた時間で採点をするために、事前に Bad Todo List を触って何がどのような脆弱性であるかをキャッチアップする際に多くのセキュリティ周りの知識が身に付いたと思います。
セキュリティのことはもちろん、それ以外の面でも多くの知識、経験を蓄えることができ、かつ満足度が高いと言ってくださった参加者が多いハンズオンを開催できたのはとても良かったです。
今後に向けて
時間の都合上、今回のハンズオンで詳しく解説を行なった脆弱性は XSS だけでしたが、 IPA(情報処理推進機構)が公開している「安全なウェブサイトの作り方 」や、 OWASP(The Open Worldwide Application Security Project)が数年ごとに発表している 「OWASP TOP 10 」で取り上げられているセキュリティリスクの高い他の脆弱性についても、Product Team が毎週開催している Uzabase のエンジニアが一堂に会して知識を共有し合うイベント「Tech Forum」で、積極的に啓蒙していく計画です。
また、上でも述べられているように、現在でも既にセキュリティーや脆弱性対策を一定行なってはいますが、引き続き、有用なツールを導入したり、脆弱性が検知された場合に迅速に対応する意識づくりなども行なっていきたいと考えています。
We are hiring
現在、Uzabase の Product Team では、積極的に採用を行なっています!
私たちの会社やプロダクト、取り組みなどが少しでも気になった方は、ぜひ以下のリンクからチェックしてみてください!