OSSであるEC-CUBEでバグバウンティを実施してみたら結構盛り上がったのでその全てをお伝えします

## <font color="blue">バグバウンティ（Bug Bounty）</font>
この言葉をご存知でしょうか？（私は知りませんでした...）
バグに対する報奨金制度のことです。
企業の製品やサービスに関する脆弱性に関する報告を外部の方から受け、その対価として報奨金を支払う仕組みです。
自社サービスのセキュリティ対策を行う有効手段の１つとなっています。


今回はそんなバグバウンティを、私が所属するEC構築オープンソース「[EC-CUBE](https://www.ec-cube.net/)」を提供する株式会社イーシーキューブで初めて実施してみたら、手前味噌ながら結構手応えがあったので、その全てをお伝えしてみようと思います。

## 本記事のおしながき
1. EC-CUBEの紹介
2. なぜバグバウンティを実施しようと思ったのか
2. どのように準備したのか
2. 開催中は何をしたのか
2. 実施結果
2. 実施してみて（振り返り）

 

## EC-CUBEの紹介
 - EC構築のオープンソースソフトウェアです。
 - 無限のカスタマイズ性が強みです。
 - また、無料で契約なしで利用できちゃいます。
 - じゃぁどうやって儲けているかというと、決済代行会社様とのアライアンスによって主な収益源を確保しています。
 - その他諸々は [公式サイト](https://www.ec-cube.net/) をご覧ください。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989215/eaa3f3a4-1547-fee8-31f0-227d0cb8b84e.png">

## なぜバグバウンティを実施しようと思ったのか
イーシーキューブでは、毎年だいたい9月頃に自社イベントを開催しておりますので、さてさて今年はどうしていこうかと企画会議を行っていた2022年の6月頃、ある懸念が浮かびました。

`あれ？EC-CUBEはオープンソースで、コミュニティと共につくっていくものなのに、最近ちょっとそれが（過去と比べて）できてなくないか？`

また、EC-CUBE4.2（4.2とは最新バージョン名です）を2022年9月リリースに向けて頑張っていた時期でしたので、これらを合わせて考えた結果、`コミュニティと一緒に開発できるイベントが何かできないか？`という話になり、
そこで、やんさん（社長）から`「バグバウンティどうよ？」`とアイデアが出て、`それいいね！`となったのが最初のきっかけでした。


## どのように準備したのか
**【Step1】**
 - バグバウンティを実施することについて、コミュニティの方に意見や反応を聞いてみました。
     - 実施することをどう思うか？
     - 実施する場合、協賛いただけるか？
 - これに対して、大半の方から協力的な反応をいただけたことから、本格的に準備を進める意思決定をしました。

**【Step2】**
 - ルールを決めました。通常、バグバウンティは脆弱性の報告を受けますが、EC-CUBEはOSS（オープンソースソフトウェア）だし、最新版のEC-CUBE4.2のクオリティも高めたいという想いもあったので、脆弱性関連だけでなく、Issue や Pull Request も対価の対象としました。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989215/fb264452-8130-05b7-4dcb-2666b5708f21.png">
 
 **【Step3】**
 - 賞金を決めました。お祭り的に盛り上げたかったので、順位をつけれるように設計しました。（＋正直いうと、予算の兼ね合いもあり賞金総額を先んじて定めたかったのはここだけの話...）
     - 最新バージョン4.2 にちなんで１位は賞金42万円
     - ２位はその前のバージョン3.0 にちなんで30万円
     - ３位は、その前の前のバージョン2.17 の21.7万円
     - ※Tシャツのプレゼントもあり！！
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989215/a9cd4c15-3699-d0b1-4f49-e35b052032e7.png">
 
**【Step4】**
- 税金や著作権の取り扱い等が絡むので、ここらで法務確認も入れました。

**【Step5】** 
 - [特設ページ](https://www.ec-cube.net/events/release4.2/bugbounty2022.php)をつくりました。　
     - 実施が夏だったので、夏らしい雰囲気を意識
     - バグナウンティは「虫とり」という意味 × 夏 × イーシーキューブのロゴ = あの帽子の少年になった
     - 正直かなり気に入っているデザインで、うちのデザイナーは優秀だなーと感謝感激でした。（ぜひ覗いてください）
 
**【Step6】**
- 告知しました。
    - プレスリリース・メルマガ・SNSがメインの媒体で、広告は今回は使っていません。

（並行稼働で）

- 協賛集め
    - 我々イーシーキューブとパートナーシップを組んでいるECサイト制作パートナーや、決済パートナーに話をもっていきました。
    - 協賛してくださればPRできますよ。PRにつながりますよ。という言い方というよりは、ストレートに「EC-CUBE最新バージョンのクオリティとセキュリティを高めるために協力してください！」とお願いしました。
    - 結果、多くのパートナーに協賛してもらえ、本当に素晴らしいパートナーに恵まれているなと実感しました。

※余談※
告知したのはいいものの高まる不安は半端なかったです。なにせバグバウンティの取り組みが初めてだったので。。
- 協賛していただける方は集まるのだろうか。（多くの方と共に盛り上がるイベントとしたいため目標とする協賛社数を高く設定した）
- バグハンターは参加してくれるのだろうか？
- 参加してくれたとして、社内で運用が回るのか。ただでさえみんな忙しいのに。

ありとあらゆる不安を抱える日々でございました。


## 開催中は何をしたのか
 - イベント企画メンバーは、引き続き協賛集めと、バグハンター集めのためのプロモーションを実施していました。バグバウンティは8月末までのイベントだったのですが、結局は協賛集めもバグハンター集めも8月中旬頃までやってました。
 - エンジニアは、ひたすら Issue と Pull Request の対応に追われておりました。（嬉しい悲鳴）
![cube42.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989215/1a4bb434-f8c2-e9e0-34bf-b0969604a536.gif)



## 実施結果
こんな結果でした。イーシーキューブとしては期待を超える結果でした。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989215/9a3e589d-87a1-36f9-e0c5-95137469323d.png">

具体的には、こんな Pull request をいただきました。（一部抜粋）
- [英単語のタイポを修正](https://github.com/EC-CUBE/ec-cube/pull/5633)
- [インストール済みプラグインの表示のずれを修正](https://github.com/EC-CUBE/ec-cube/pull/5677)
- [非推奨コードの修正](https://github.com/EC-CUBE/ec-cube/pull/5620)
- [テストコードの修正](https://github.com/EC-CUBE/ec-cube/pull/5679)　※自動テストが稀に落ちる時があり、長い間解消できてなかったので大変助かりました！<div>
typoの修正からテストコードの修正まで、さまざまなPullRequestをいただきました！
バグハンターの皆様本当にありがとうございました！！
※その他は [こちら](https://github.com/EC-CUBE/ec-cube/pulls?page=1&q=is%3Apr+label%3Abugbounty2022%3Apr%3Arecognition+is%3Amarged) を参照ください。


また、バグバウンティは8月末まででしたが、9月にEC-CUBE4.2のリリースパーティを実施したので、その場で上位のバグハンターへの表彰式も実施しました。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989215/cc61ddd7-fec7-3266-2e52-b94efd42a646.png">

（小学生みたいな感想ですが）**すっごく楽しかったです！**



## 実施してみて（テキスト）
バグバウンティに参加してくれた方のフィードバックが１番重要なので、1位と2位のバグハンターと一緒に振り返りを行いました。概要は以下です。

- 参加動機
    - Aさん：貢献したいという想いと、協賛企業としての務めとして
    - Bさん：最初誰も参加していなかったので、これはまずいなと思って参加した

- バグハントをどう進めたか
    - Aさん：Issue や Pull Request をする前にスプレッドシートで整理した。何が問題で、解決されると何が嬉しいかをちーさん（イーシーキューブのエンジニア。Githubの対応をしている）にきちんと伝わるように意識した。
    - Bさん：Issue 眺めて、ひたすら Pull Request !!

- 次回開催があったら参加したいか
    - Aさん：バグバウンティはみんなハッピーになれる取り組み。参加したからこそ、自社のクライアントに最新バージョンでいきましょう。とすぐ提案できた。なのでまた次回も参加したい。
    - Bさん：日頃からコミッター活動をしているので、次回があればまた肩ひじ張らず参加したい。

詳細はYoutubeもありますので是非みてください。
<iframe width="560" height="315" src="https://www.youtube.com/embed/ekJgSgVMrwk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## さいごに
時期は未定ですが、バグバウンティは次回も計画中なので、ぜひ参加してください！[Twitter](https://twitter.com/EC_CUBE)とかフォローいただけると、その情報もお届けできるかと思います。
  <br>

`書いたひと`
はじめまして。
EC構築のオープンソース[「EC-CUBE」](https://www.ec-cube.net/)を提供している株式会社イーシーキューブで（今年度から）プロモーションを担当することになった（イーシーキューブでは珍しい）非エンジニアです。
アドベントカレンダーをきっかけにQiitaデビューいたしました。（はじめてマークダウンを使いました...合ってるのかな...）
今後ともよろしくお願いいたします。