2024.04.01 Mon

徳丸さんサプライズ登場!

セキュリティワークショップ

-徳丸さんの「Bad Todo List」で脆弱性について学ぼう-

セキュリティーワークショップ

弊社では年に一度社内でプログラミングコンテストを開催しています。(会社の頭文字をとって、通称LATECON🧩)

2024年は趣向を変えて、コンテスト形式ではなくセキュリティワークショップを行いました。使用するのは通称「徳丸本」の名で親しまれている「体系的に学ぶ安全なWebアプリケーションの作り方」で有名な徳丸浩さんの「Bad Todo List」です。

「Bad Todo List」の利用には事前に徳丸さんより利用のご承諾を頂いております。

目的

体験を通して、安全なWEBアプリケーションを作るための知識を身につける。

概要

ミッション

OWASP ZAP(WEBアプリケーションの脆弱性診断ツール)で検出された「Bad Todo List」の脆弱性にチームで対応しよう。

チーム編成

2人~3人チーム(ペアプロ・モブプロ)

ご褒美

全員に「参加賞」、成果発表チームには「がんばったで賞」として社内インセンティブのLATEPOポイントを付与

LATEPOとは?

感謝やお祝いのメッセージを社内インセンティブとなるポイントと共に社員同士が贈り合う社内活性化ツールです。今回は会社からお祝いポイントを付与しています。ご興味ありましたらぜひ詳細ご覧ください:https://www.latepo.jp/

環境

  1. Linux(チーム毎に利用できるVMを事前に準備し、VM内でDockerを利用)
  2. OWASP ZAP

スペシャルゲスト

徳丸さんに「Bad Todo List」の利用について事前にご承諾を頂いた際に、なんと本ワークショップにもご参加いただけることに!

せっかくなので参加メンバーには伏せて、サプライズでご登場いただきました。

徳丸さん登場

いざ開始!

各チーム毎に、事前に用意されたVMへ接続し、アプリに対してOWASP ZAPの脆弱性診断開始!

持ち時間は環境構築と発表資料作成を含め2時間半です。 今回は2〜3名のチーム体制だったので、 環境構築や脆弱性対応で困った時は互いにサポートしつつ、 時間を有効活用できるよう上手く担当分担しながら、わいわいがやがやと取り組んでいます。

作業の様子作業の様子作業の様子作業の様子作業の様子作業の様子作業の様子作業の様子作業の様子

成果発表

合計26チームの内、4チームに発表してもらいました。

各チームの共通点として以下が挙げられます。

  1. リスクの高さと対応コストを考えて対応する脆弱性を選択
  2. 上の観点からまずはSQLインジェクション、クロスサイトスクリプティングに対応

また、今回はコンテストではなくワークショップだったため、 ZAPの結果を確認し、コードを修正するだけでなく、IPAの資料を確認しつつ学習を意識して作業を行ったというチームもありました。 GOOOOD!

途中でVMが高負荷になりアクセスできないこともありましたが、 限られた時間の中でもチーム総力で脆弱性対応と発表資料の準備をしていただきました。

おつかれさまでした!

徳丸さんの言葉

ワークショップの最後には、 徳丸さんからご感想をいただきました。

  1. チーム毎に自らOWASP ZAPを用いて脆弱性診断を行い、動かしながらソースコードを実際に修正まで行う体験が良い
  2. PHP自体の脆弱性にも気が付いたチームがあり、よい観点がある
  3. 成果発表においても、脆弱性に対しての学習結果が見られるよい研修だった
  4. 楽しそうに和気あいあいとして、雰囲気の良い会社

質疑応答のお時間もいただき、実際の開発現場で気になっている事や普段聞けない質問にもお答えいただきました。非常に貴重で楽しい時間となりました。

後日談

社内でアンケートをとり、以下のような声が聞けました。

今回のテーマ(脆弱性対応)はどうでしたか?

  1. 普段Laravelを使用していてあまり意識する機会がなかったので、今回脆弱性の難しさを知ることができて良かったです
  2. 少しでも多くの脆弱性問題を解消・把握しておくことで工数を減らし、幸せになると思った。
  3. セキュリティ対策への関心が高まりました。セキュリティ試験に関してはプロジェクトの中でも外注されることが多いので、これまで触れる機会は少なかったのですが、今回は実際に自分で実施して診断結果に対応できたのがとても良かったです。
  4. WEB系の案件をほとんどやったことが無いですが、学習ベースでワークを行うと競争よりもメンバーに質問等をしやすいので技術の定着に良いように感じました。

今回のセキュリティワークショップで学んだこと、今後の開発に活かせそうなことは?

  1. OWASP ZAPの使い方と脆弱性の種類と確認の仕方を知ることが出来ました。脆弱性診断で何が脅威として報告されるのかを知ることが出来たのと、今後脆弱性診断したい時の1つの方法として使っていきたいと思いました。今回はクロスサイトスクリプティングとSQLインジェクションについて特に確認することが出来たので、フレームワークを使用していると、気にせずに実施できることもありますが、今後意識して開発が出来ると思いました。また、Cookieやsessionについての脆弱性も認識は出来たので、対策を学習していきたいです。
  2. よくLaravel、Reactの案件を行っているので、フロント側でのみのバリデーションなどには気を付けたいと思いました。フレームワークがこれだけ脆弱性に対応してくれていることに気づけて良かったです。
  3. 今までは画面側の入力制御を中心に行っておりましたが、WEBの場合はサーバ側の対策が必須ということで、WindowsアプリケーションでもAPIを使用したりする場合はサーバ側を意識する必要があるのだということを学びました。

全体の印象として、脆弱性はフレームワークで吸収できていることが多く、普段実装する中で気を付ける機会がなかったので勉強になったという気づきコメントが多かったです。

また、全体の9割が「今回のワークショップをきっかけにOWASP ZAPを知った」もしくは「知っていたが使用したことが無かった」に該当していたので、 今回のワークショップをきっかけにOWASP ZAPを業務でも使ってみたいという声も聞かれました。

まとめ

弊社ではISMS認証を取得しており、日頃から開発と運用保守についてはセキュリティ対策をしっかり行っています。今回のワークショップは脆弱性の学習とセキュリティの重要性を再認識する機会として有意義だったのではないでしょうか。 事前に「徳丸さんが公開されている『Bad Todo List』を使用します」とアナウンスしていたので、予習をし準備万端だった人が多く、難易度の感じ方は様々であったものの、例年より学びが多かった、自分の成長に繋がったというポジティブな声が沢山聞けました。

ラテラル・シンキングは、エンジニアを募集しています

ラテラル・シンキングでは、LATECONの他にも勉強会、ハンズオンなど技術力向上のための取り組みが盛んです。 ご興味のある方は、ぜひこちらの採用サイトをご覧ください。

https://recruit.lateral-t.co.jp/