こんにちは!!! (合宿は最後にするぞ)と準備をしながら思っていたのに、終わった瞬間から次の合宿のことを考えてしまっていた PSIRT の大塚(由)です。 2019/4/20,21に、2年ぶり3度目となるバグハン合宿を開催しましたので、当日の様子と結果についてご報告いたします。
バグハン合宿とは
「サイボウズ バグハンター合宿」、略して「バグハン合宿」。 バグハンターの方々をオフラインで集め、脆弱性をワイワイ見つけてもらうというイベントです。あらかじめこちらで決めたチームで戦っていただきます。運営がその場で脆弱性の評価をし、評価結果に基づいたチーム得点で競い合うというものです。 今回は、12名のハンターの方々にご参加いただき、1チーム4名(ハンター3名+弊社開発者1名) の4チームで戦っていただきました。
1日目
戦いの場所は、湯河原。天然温泉のお宿です。合宿初日に、2019年度の報奨金制度をスタートした関係もあり、まずは変更点について簡単な説明を。説明の後、いよいよバグハンスタート!!「"宿題"は禁止されていなかったので」というルールの穴を突いていただき、事前に見つけた脆弱性を粛々と報告するハンターの姿もチラホラ・・。スロースタートかと思いきや、いきなり大忙しの初日となりました。
夕食&食後の戦い
合宿の目的の一つに、運営との交流・ハンター同士の交流ということも掲げていたため、宴会場を貸し切り温泉宿らしいお食事をみんなでいただきました。大吟醸を飲まれる強者もいる中で、ほとんどのハンターがお茶を選択され、夜に向けた意気込みが感じられました。
夕食がひと段落すると、"エクストリームス"という数字ゲームをしました。こちらもチーム得点に換算しました。ある条件下で大幅減点という弊社独自ルールを加えた特別バージョンです。単純なゲームなのですが、運あり戦略ありで、ワイワイと頭休みを楽しみました。
深夜
今回、24時間会議室を使うことが出来てしまいました。ほとんどのハンターが、睡眠よりもバグハンを優先されていました。温泉に入って頭を切り替えたり、時にはハンター同士で議論されていたり、合宿ならではの楽しみ方がギュッと凝縮されていた時間帯だったように思えます。
2日目
11時で、バグハンタイム終了!予定では11:30まででしたが、あまりの登録数に評価が追い付かないと判断し、急遽30分繰り上げました。皆様、前日の疲れも感じさせない怒涛の報告数となりました。
終了後は近くのお蕎麦屋さんで、見つけた脆弱性や評価に対するあれやこれやなど、お互いの労をねぎらいながらの昼食をとりました。
結果発表
優勝チーム
優勝は、Cチーム!!報告数・認定数共に2位でしたが、全員が複数件報告し、どなたもCVSS評価の平均値が高く見事優勝となりました。本部長賞
mage さん!!暗号化されているソースコードをPHPの中間コードを解析することでロジックを読み解き、報告されていました。本部長に「次はもうソースコードも開示しちゃおうか・・」と言わせてしまうほどの高い技術力で、満場一致での選出となりました。PSIRT賞
mage さん!!脆弱性の改修漏れを報告いただきました。この合宿直後に改修済として公開予定だったため、冷や汗ものでした。本部長賞と同一人物であるため議論にはなったのですが、それでもやっぱり脆弱性情報の公開作業なども行うPSIRTとしては、この報告が一番印象深いということで選出させていただきました。
結果詳細
報告数:198件、認定数:155件 という結果となりました。(合宿終了時点での数値)
以下は、合宿で検出されたCWEタイプの傾向です。色々な観点で多くの報告をいただきました。
現在、合宿時の評価をクリアにし、全ての報告を評価し直しております。少々お時間いただけますと幸いです。
合宿を終えて
- とても勉強になる&楽しい
普段ハンターの方々とメールでコミュニケーションをしておりますが、直接話をしたり画面を見ながら確認することでいつもよりスムーズな議論が出来たと思います。また、最後に各チームの代表者に見つけた脆弱性や手法についてLTしていただきました。どなたも尖った内容でとても勉強になりました。意見が対立する場合は直接議論が精神的に辛いケースもありますが、それらも含めて合宿ならではの刺激となり、やっぱり楽しい!と思いました。
予想を上回る報告数
ハンターの方々の本気により、たくさんの脆弱性を報告していただきました。各場面で交流も多く見られ、ハンター同士のふとした会話や知見の共有から派生した報告もあり、チーム戦にしたことや合宿という場であることのメリットを感じた結果となりました。複数視点での指摘
12名のハンターが参加され、198件が報告されたという状況の中で、重複したものが僅かという結果でした。限られた製品・限られた人数で攻撃していただいたにも関わらず、それぞれ検証される観点が違ったところが大変興味深かったです。同時に、多くの方に見ていただく意味という点で報奨金制度を運営するメリットを実感しました。
反省点
connpass での募集トラブル
普段、報奨金制度に参加している方を優先的に扱うことや、ランキング上位者を招待することが決まっていました。にもかかわらず、connpass(抽選)で応募をかけたこと、不備があり発表当日に混乱を招いてしまったこと、この場をお借りし改めてお詫び申し上げます。今後は、connpass(先着順or抽選)の利用ケースに該当しない場合は、専用フォームを用意して募集をかけるようにいたします。合宿の評価数
想定外の報告数により、運営側が1件の評価に割ける時間がとても少なかったです。その結果、既知のチェックが間に合わなかったものもありました。もし次回やるとするならば、合宿時の評価フローや進め方を見直す必要があると感じています。
攻撃を知ることは、防御につながる
弊社開発者もチームの一員として戦うことで、普段自分たちが開発・運用している製品に対してハンターと一緒に攻撃をしました。ハンターの方々との会話や報告内容から、多くの攻撃観点を学ぶことが出来たと興奮気味に語っていました。守るためには、攻撃手法を知ることが大切だと考えます。これからもハンターの方々からの生きた攻撃を学ぶことで、PSIRTだけではなく開発や運用とも協力しながら、セキュアな製品作りに取り組んでいきたいと思います。
最後に
今回は、土日にも関わらず多くの方にご応募&ご参加いただきありがとうございました。合宿はクローズドな場であるとは言え、多くの非公開情報をオープンにやり取りをしました。合宿だけではなく報奨金制度自体が、ハンターの方々との信頼関係あってこそ成り立つものだと思います。
世界中に多くの BugBounty が存在する中で、弊社の製品に費やしていただく全ての時間に、とても感謝しております。皆様からのご意見ご要望を真摯に受け止め、今後の運営に生かしてまいります。
次回、(そう遠くない時期に...) 更にパワーアップした合宿でお会いしましょう!!
引き続き、サイボウズ報奨金制度をどうぞよろしくお願いいたします。