こんにちは、松山品質保証部の俊成です! 今年もサイボウズでは、8月から9月にかけて、サマーインターンを開催しました。 この記事では、東京オフィスで開催した品質保証・セキュリティコースについて紹介します!
インターン概要
品質保証・セキュリティコースは、8月20日~8月24日と9月10日~9月14日の2回開催し、合計5名の学生が参加してくれました。 本コースでは、「製品テスト」と「セキュリティテスト」の業務体験型のプログラムを実施しました。現場で実施されているテストを体験して、サイボウズの品質保証活動について学べるものとなっています。 サイボウズでは、セキュリティも製品の品質であると考えているため、サマーインターンでは「セキュリティテスト」も品質保証のコースに含めています。 基本的な勤務時間は9時から18時です。お昼には、製品テストを担当している人やPSIRT(Product Security Incident Response Teamの略)のメンバーなど、日によって異なる属性の社員とご飯を一緒に食べてもらいました。私はインターンのメンターを担当するために東京に出張していて、何度か昼ご飯をご一緒しました。
今年も、品質保証部内で開催している勉強会にインターン生の皆さんにも参加していただきました。 ちなみに、勉強会はミネルヴァチームが主催しました!
製品テスト
製品テストでは、kintoneに対して3種類の試験を実施しました。
まず、1つ目は機能試験です。機能試験では、最新機能の仕様書から試験仕様書を設計し(テストケースを書き起こす作業)、実際に試験をします。今回の試験対象の機能は「テンプレートファイルからアプリを作成する」です! 初めて行う試験設計の作業でしたが、試験対象の機能を網羅した試験仕様書ができあがりました! 設計後にはインターン生同士でのクロスレビューや、模範試験仕様書を使った解説会、社員も含めモブ形式でのレビューなどを行い試験設計の知見を深めました。
2つ目は改修確認です。改修確認の体験では、不具合が修正されていることを確認する試験を設計&実施します。機能試験の時には意識しなかった試験観点も必要になりますが、レビューも参考にしながら上手く影響範囲を洗い出せていました。
3つ目はアドホック試験です。アドホック試験の体験では、事前にテストケースを準備せずに、思いつきでkintoneを操作し、不具合を探します。業務でkintoneを使い慣れている私達でも、不具合を見つけることが難しい試験です。怪しい挙動を見つけたら、メンター宛に報告してもらいます。一人一つ以上、不具合を見つけることができました!
セキュリティテスト
セキュリティテストでは、ハンズオンと脆弱性の評価、およびセキュリティテストを行いました。
セキュリティ・脆弱性とは
まずは下記の講義を受けて、セキュリティテストに必要な知識を身につけます。
脆弱性とは
脆弱性の原因や対策
CWE識別子とは
サイボウズではどのような挙動を脆弱性として採用しているか
講義を終えてから、各自のPCにBurp Suiteをインストールしてもらいました。これは、ブラウザーとサーバーの通信をキャプチャして、内容を閲覧/改ざんできるローカルプロキシです。脆弱性の有無を判別するためにリクエストを改ざんし、得られたレスポンスの変化を確認してもらいます。
ハンズオン
座学だけではわからない部分について、実際に手を動かして理解してもらうことを目的としています。 サイボウズでは、過去いくつかの脆弱性を検出・改修しています。それらの記録を元に、改修前の古いバージョンをインストールした環境を用意し、再現手順をなぞって、XSS(Cross Site Scripting)やSQLi(SQL Injection)を実行してもらいました。つまり攻撃の体験です。
※ ハンズオンに使用した脆弱性はすべて改修済みです。 攻撃を成立させるという体験はとてもレア(他者が管理するシステムに対してやってしまうと犯罪)なので、実際に脆弱性が再現したときには、インターン生の皆さんから嬉しそうな声があがっていました。
脆弱性の評価
サイボウズでは、FIRST (Forum of Incident Response and Security Teams) が出している 共通脆弱性評価システム CVSS v3 (Common Vulnerability Scoring System version 3) という評価手法を使って、定量的に脆弱性を評価しています。脆弱性の深刻度を10点満点のスコアで表現する手法です。この時間では、脆弱性にスコアをつける作業を体験してもらいました。 以下のような流れです。
CVSS v3 の評価ポイントをメンターからインターン生に説明
CVSS v3 に慣れ親しむために、演習の評価を実施
サイボウズに届いた脆弱性報告を使って、再現確認とCVSS v3 による評価を実施
評価について、インターン生同士で議論が飛び交う場面もたびたび見られました! 実業務においてもクロスレビューから議論になることはあるので、リアルな業務体験となったのではないでしょうか。
セキュリティテスト
脆弱性についてだんだん詳しくなってきたところで、続いては最後の関門、セキュリティテストに挑戦します。 こちらもハンズオンと同様、サイボウズ製品である Garoon の古いバージョンを使用しました。 どのように脆弱性をリリース前に見つけるか、そして、お客様によりセキュアな製品を届けるためにどのような取り組みをしているか、その一部を体験してもらうことが目的です。
どのような観点で検証をすればよいかを考えながら、kintoneのアプリを使って試験仕様書を作成していきました。
試験仕様書完成後には、セキュリティテストにいざ挑戦です。 リクエストやパラメータに対する検証を、ひとつひとつ丁寧に進めていきます。 インターン生同士、またはインターン生とメンター間で相談しながら検証を進めていった結果、いくつかの脆弱性を発見することができました。 ※ 発見された脆弱性はすでに改修済みです。
これらのインターンシップのコンテンツを通して、セキュリティの仕事の面白さを体感してくれたようでした!
スタンディングデスク風に作業をしている様子です。# なぜ靴下なのでしょう(笑)
インターン生の感想
インターン生の感想を紹介します。
とても密度の高い5日間でした。 実際の業務に近いことを大量に盛り込んでいただけたので、想像していたQAのお仕事と実際のお仕事とのギャップを埋めることができました。 メンターの方々をはじめ、社員さんたちの皆さんに優しく、手厚くフォローしてくださったので安心して過ごすことができました。わからないこと、困ったことがあったときに気軽に質問できる環境での作業とても充実しました。 5日間ありがとうございました!
サイボウズ内の職員同士の仲の良さを非常に感じられました。 また、メンターの方も色々な質問に対してやさしく丁寧に教えていただいたためインターン中の業務内容の理解が非常に深まりました。 5日間色々と良くしてもらいありがとうございました。
インターンに参加してサイボウズの雰囲気の良さや良い意味での自由さが感じられてよかった。 メンターさんがとても優しく積極的に教えてくれたので質問しやすい感じだった。
1週間という短い期間で、QA、セキュリティと二つの内容を体験させていただいて非常に面白かったです。特に、報告された脆弱性の検証や評価をさせていただけて、とても貴重な体験をさせていただけました。今回のインターンシップを通じて、バグバウンティープログラムに挑戦していきたいなと思いました。ぜひ、サイボウズで働かさせていただきたいなと思いました! 5日間という短い期間でしたが、ありがとうございました。
5日間という短い間にずっしりとしたプログラムが組まれていて、品質からセキュリティまで大分深いところまで教えていただいたなと思いました。 実際に業務をどのようにやっているのかが分かりましたし、この部署の重要な役割、必要性も実感することができました。 総じていい経験ができ、会社のことも知ることができ、本当に楽しかったです。 ありがとうございました。
最後に、インターン生も自身のブログに記事を書いてくれたので紹介します。是非読んでみてください!
まとめ
短い期間ではありましたが、用意していたコンテンツから、しっかりと吸収して帰ってもらえてメンターとしても嬉しい限りです。素直で優秀なインターン生たちから、こちらとしても良い刺激を受けました! インターン生の皆さんの今後の活躍を期待しています。