社内の全エンジニアに脆弱なアプリケーションを修正してもらうイベントを開催しました
はじめに
FLINTERSでエンジニアマネージャーをやっている脇田です!
弊社ではCERTと呼ばれる社内横断でセキュリティインシデントに備えるチームが存在しています。
そんなCERTで今期から新しい施策として9月某日社内の全エンジニアが脆弱性まみれのアプリケーションを2時間で修正するイベントを開催しました(要約すると脆弱性修正ハンズオンです)
今回はその脆弱性修正ハンズオンの取り組みに関しての記事になります。
きっかけ
脆弱性修正ハンズオン実施は弊社の組織変化がトリガーとなり始まりました。
以前までの組織、現在の組織
弊社では以前まではセキュアプログラミングについて一定の知識がある前提で組織設計を進めてきましたが事業拡大に伴い大小様々なプロジェクトが増えてくる中でもちろんエンジニアも増えていき様々なレベル感の人が大きいチームであれば7~8名、小さいところでは2~3名で編成されています。
既存の取り組み
既存の取り組みとしてはセキュリティ啓蒙活動として開発、運用しているシステムに対するチェックシート等がありますが定期的なチェックは現場に負担がかかること、セキュアな開発文化が根付くには各チーム内で能動的に動いてもらわなければ難しいこと、などいくつか取り組みに対しても課題が存在していました。
脆弱性修正ハンズオン爆誕
そこでセキュリティがわかる人材が限定的にならないようセキュアプログラミングに関してはプロジェクト固有事項ではなく社内横断してカバーしていくべく脆弱性修正ハンズオンが爆誕!
座学だけでは退屈しちゃうよね〜ということで脆弱性が仕込まれたWEBアプリケーションを配布し脆弱性対応するごとにスコアが上がっていく形式で開催されました。
実施までの道のり
実施内容が決まったところでハンズオン運営チームとして準備を開始していきました。
脆弱なアプリケーション開発
お題となる脆弱なアプリケーションを開発するに当たってまずどのような脆弱性を仕込むか選定していきます。
ハンズオン3時間で様々なレベル感のエンジニアが参加することからIPO 安全なウェブサイトの作り方を参考に最低限抑えてほしい脆弱性としていくつかピックアップしました。(ついでに研修後の解説資料としても使う目論見でもあります)
そしてアプリケーションの技術選定としてはサクッと作れることを目的にDeno/HonoでMPAを選んでいます。
普段ならありえないコミットだらけのカオスなログ
スキャンツール開発
当初脆弱性のスキャンにはOWSAP ZAPを検討していましたが運営チームで開発したアプリケーションに対して脆弱性検知が上手く作動せずスクラッチでスキャンツールを開発することになりました。
スキャンツールもアプリケーションと同じくDenoで実装を行いPuppeterによるブラウザ操作を通して仕込まれた脆弱性を突くシナリオが実行されます。
振り返り
実施を振り返り、今回のようなハンズオンイベントが初めての開催だったこともあり準備不足になってしまった点やハンズオンコンテンツの作りの粗さなどが課題に上がったものの当日の盛り上がりや楽しんでハンズオンをしていただけた点もあり次回はよりブラッシュアップして開催していければと思いました。
Discussion