サイボウズが自社製品のバグに懸賞金を出す理由って?──バグハンター合宿に密着取材してきた
「100万円のバグを見つけました!」
サイボウズが主催する「バグハンター合宿」なるイベントに参加して、1時間足らずの出来事だった。あまりに簡単に100万円という金額が飛び出たので、人生ゲームの紙幣くらい軽く感じてしまった。
それと同時にバグハンターたちの技術力の高さと脅威の両方を知ることになった……。
文:megaya
バグハンターとは、ものすごく簡単に説明すると「Webサイトやスマホアプリのバグを見つける人」のことだ。 バグ探しを趣味にする人もいるが、バグハンターを職業としている人も数多くいる。見つけたバグを企業に報告することで報酬をもらうのだ。なかには「バグ1件で200万円」なんて高額な報酬もあるそう。
夢がある実例をひとつ紹介したい。2018年5月頃から活動している若手バグハンターのno1zy(ノイジー)さんの話だ。
当時は学生だったにもかかわらず、活動し始めてからわずか6か月で、500万円もの報酬を得たという。サイボウズからの報奨金が今年入金されたため、来年の税金がエグそうだとのこと……。(お金の話ばかりで節操なくて申し訳ないが、わかりやすい指標として紹介させてほしい)
バグハンターの報酬が高いのには理由がある。場合によっては、バグが個人情報流出を引き起こす可能性があるからだ。そんなバグを悪用されてしまったら、会社の存続にもかかわるかもしれない。数百万円で会社を守れると考えれば安いものなのだろう。
しかし、バグ報告に対して報奨金を出す日本企業は少ない。バグハンターの重要性がまだまだ浸透していないのかもしれない。
またバグハンターはハッキングに近い形でバグを探していくので、危険視されることもあり、企業からは敬遠されることもあるのだ。
サイボウズはいち早くバグハンターに報奨金を出す取り組みをしている。それだけでなく、社外から参加者(バグハンター)を募り、2日間で集中的にサイボウズ製品の脆弱性を発見してもらうイベント「バグハンター合宿」を2014年から開催しているという。今回はその合宿に取材をしにいくことに。
僕もライターの傍らでエンジニアをやっているのだが、バグハンターの知識はあまり ない。一体、どんな合宿になるのだろうか……。まったく想像がつかないまま、会場に足を運んだ。
※この記事にはオマケとしてバグっぽいものが3つ仕込んであります。間違い探しの感覚で、読み進めながら見つけてみてください。 (「文章に故意に嘘の情報が書いてある」といったバグはないので、普通に読み進めていっても大丈夫です)
<合宿1日目> 合宿スタート!
合宿のスケジュールは以下の通り。
13:30〜14:00 説明・チーム挨拶など
14:00〜17:30 バグハント
17:30〜18:00 成果発表 (1日目)
18:30〜20:30 夕飯
20:30〜 自由時間
4/21 (日)
09:00〜12:00 バグハント
12:00〜13:00 ランチ
13:00〜14:00 発表準備
14:00〜14:30 成果発表(最終)
14:30〜15:00 結果発表、表彰式、総評
合宿では4チームに分かれて、対抗戦を行う。チームは事前にサイボウズによって決められる。バグはCVSS v3(国際基準の評価法)によって10点満点で評価される。その評価値によってチーム得点が計算され、勝敗が決まるという。
当然ながら、合宿中に見つけたバグにも報奨金が支払われる。合宿を楽しみながらお金稼ぎもできるなんて、バグハンターにとって最高の環境だ。
いよいよバグハントが始まると思った矢先、ちょっとしたトラブルが。参加者に事前に公開されていたルールより変更があったらしく、バグハンターから「それは脆弱性でしょう」とツッコミを入れられていた。BJ(バグハンタージョーク)だ。
しかし、サイボウズのエンジニアも「お菓子がデプロイ(実装)されているのでご自由にお食べください」とEJ(エンジニアジョーク)で返すという高等テクを見せる。なんだろう、この集まり……。
<合宿1日目> 14:00〜17:30 バグハントタイム
ルールのバグをつく。前日から戦いは始まっている……!
いよいよバグハントが始まった。
さて、どのチームが一番始めにバグを見つけるのか…!!
バグハンターたちの熱き戦いが今始まった!!!!!!
……と心の中で勝手に盛り上がっていたのだけれど、なんと始まって5分ほどで全チーム合わせて50個ほどのバグが報告されていた。
どうやら合宿前に検証環境が配布されていたため、前日までにバグ探しをしていた人が何人もいたようだ。
「事前にバグを探してはいけない」とは書かれていないというルール上のバグに気づいていた人が多かったのだ。戦いはすでに始まっている……!!
ちなみに、この時点で一番バグを見つけていたのは冒頭で紹介したno1zyさんで、当日までに30個以上のバグを見つけたようだ。
合宿中は黙々と作業をすると思っていたのだが、予想と違って活発に話し合いをしていた。和気あいあいとしたワークショップの雰囲気に近い。
考えてみれば「すきあらばバグハントをする」共通項のある同士が集まっているのだから楽しくないわけがないのだ。
(*)通信をしている送信者と受信者の間に入り、それぞれになりすまして、盗聴したり、データを改ざんしたりすること
会話に挟む冗談も、世紀末のような発言なのが恐ろしい。本物のハッカーが集まっているので、斧を持ちながら「ちょっと〜! 首狩りますよ〜?」と言っているようなものだ。
会場が静かじゃない理由はもうひとつある。バグハンターとサイボウズ社員の間での議論が活発なのだ。
「そもそもバグなのか」「どのくらいの危険度なのか」は、企業側の判断に左右される。バグには無数のパターンがあるので、明確に点数を決めることはできない。
ひとつのバグの危険度の基準を明確にすることは、ほかのバグにも影響するので話し合いがかなり重要なのだ。
「見つけたバグがどのくらい脅威的なのか」を伝えられるかどうかは、バグハンターにとって大事な能力なのである。それによって企業側のセキュリティ意識もだいぶ変わってくるだろう。
開始1時間で100万円のバグが見つかる
「バグハンター合宿ってこういう雰囲気なんだな」と、一息つこうと思ったところで早くもひとつの山場がきた。
なんと報奨金が100万円クラスのバグが見つかったのだとか。
合宿が始まってから1時間くらいしか経っていないので「100万円」という金額に実感がまったく湧かない。
どうやってそんなバグを見つけたのかを簡単に言えば「暗号化して読み込んでいるプログラムを見つけて、それを解析してバグを見つけた」という感じだ。
暗号化を解析……。バグの見つけ方が、予想以上にハッキングだったことに驚きだ。バグハンターは実際にWebサイトを攻撃してバグを見つけていくものなのか。改めて自分が異質な場所にいるんだなと認識した。
それと同時に「ちょっと〜! 中間者攻撃しますよ〜?」という先ほどのボケが余計に恐ろしく感じる……。この会場にいる全員が、Webサイトを死に追いやれるデスノートを持っているようなものかもしれない。
1. シリアライズ化してプログラムを読み込んでいる箇所を見つける
2. それを解析してプログラムを取得する
3. コンパイルされた状態のプログラムを読み解いていく
4. 脆弱性のある箇所を発見する
理屈はわかったが、「やってみて」と言われてもまったくできる気がしない。
単純に一つひとつの工程をこなす知識力の高さも必要なのだが、それらを組み合わせてパズルのようにバグを見つけていくという発想力に驚かされる。一般の人がハッカーと聞いて思い描く「カチャカチャ、ターン」はこのようなことを実行していたのだ。
そういった技術力を持つバグハンターだからこそ、企業との信頼関係は重要になる。合宿の参加者達がサイボウズのサイトを攻撃しようと思えば、いくらでもできるかもれしれない。
包丁は料理に使うものであるが、人を刺すことだってできる。誰がどう使うかが大切なのだ。
だからこそ、こういった合宿などを開き、バグハンターとの絆をつくっていくのは重要なのである。バグハンターにとっても「自由にハッキングしていい」環境があるのは大切なのだと思った。
バグハンターには「本来はやってはいけないことをやる楽しさがある」
1つのバグが見つかると、別ページの同じような機能でも見つかり、芋づる式に脆弱性のあるバグが発見できるらしい。
ちなみに使っているツールも「Burp Suite」というプロキシツールくらいで、特殊なものはほとんど使っていないとのことだ。
また、バグハンターにもさまざまなタイプがいるらしく、no1zyさんはクライアントサイドやURLに起因するバグを探すのが得意なタイプだ。
一方、先ほど100万円クラスのバグを見つけたmageさんは「コンピュータを乗っ取るようなサーバ上のバグを探すのが好き」だという。
どちらも共通して「本来はやってはいけないことをやる楽しさがある」と言っていた。たしかにそういった背徳感からくる楽しさは少しわかる気もする。
<合宿1日目>18:30〜20:30 夕飯
<合宿1日目>20:30〜 自由時間
終わらない夜
20時30分以降は自由時間。
温泉に入ってもいいし、お酒も飲めるし、マッサージを受けたっていい。湯河原の夜を満喫しよう!!!
自由だ!!!
しかし、作業部屋に戻ってみるとほとんど人がバグハントを続けている……。
合宿が始まってから1時間くらいで予想できたことなので、このことは想定の範囲内だ。気になるのは、どのくらいの人が何時まで作業を続けるのか。
全員が作業部屋に残っている。まだ日付も変わらず23時なので、かなり集中している様子だ。 さすがに日をまたぐと、人数はかなり減った。あるチームはメンバー全員が作業部屋からいなくなっている。 ここまできたら僕にも意地が出てくる。「全員いなくなるまで起きててみよう」と思った。 深夜2時を回り、人数もだいぶ減ってきた。あと1〜2時間したらさすがに全員いなくなるかも。というか眠くなってきたから、そろそろ寝てほしい。頼むから減ってくれ……!
と思っていると、さっきいなくなっていたチームが復活していた。どうやらお風呂に入ったり仮眠をとったりしていただけのようだ。
やばい、そろそろこっちが限界になってきた……。
僕よりも先に運営側が昇天していた。
頼むからもう寝てくれ……
寝てく……
寝……
※ 結局、気づいたら4時ごろに部屋で寝ていた。あの時起きていた人は、このあともずっと作業を続けていたらしい。
<合宿2日目>09:00〜12:00 バグハントタイム
2〜3時間しか寝てない人がほとんどなのに、前日と変わらない雰囲気で黙々と作業を続けているのを見ると、バグハンターの体もバグってくるんじゃないかと思ってしまう。『ロックマンエグゼ』でわざとバグらせて強くできる方法があることを思い出した。
もちろん惰性で徹夜していたわけじゃなく結果もきちんと出すから恐ろしい。すでにバグの報告数は190件ほどになっていて、昨日より倍くらいに増えている。何回でも言うけど、いろんな意味を込めて恐ろしい。
ここまでバグが発見されると、
「サイボウズのサイトめちゃくちゃバグ多いな!!」
と感じるかもしれないが、サイボウズのサイトが特別バグが多いわけではない。バグハンターによって今まで表面的には見えなかったバグが可視化されただけなのだ。
いつも使っているWebサイトもバグが見えていないだけで確実に何十個も隠れている。それを公にしているかいないかの違いだけなのだ。
<合宿2日目> 12:00〜13:00 昼ごはん
食べ終わったあとはみんなすぐにバグハントに戻る。もはやこの流れに様式美すら感じる。しかし、2日間のバグハントもいよいよ終わりである。見た目はほとんど変わらない部屋を追い続けてきたが、なんだかこの風景が見られなくなることに寂しさすら覚えるようになってきた。僕自身の脳もバグってきたのかもしれない。
<合宿2日目> 14:00〜 結果発表
優勝チームの発表の前に、参加者がそれぞれどんなバグを見つけたのか報告し合う。
普段聞く機会のないようなセキュリティの深い話が聞けて勉強になる。それにハッキング的な話を聞くのはちょっとした背徳感もある。
「どんなバグがあったのか」→「どんな問題があるのか」→「それをどうやって見つけたのか」
上記のような解説を聞いているときは、『名探偵コナン』や『金田一少年の事件簿』で、犯人を追い詰めるときの解決シーンを見ているようなワクワク感があるのだ。
僕が注目したno1zyさんやmageさんのいるチームは残念ながら優勝できなかったが、ふたりとも大健闘。
no1zyさんはこの合宿で一番多くのバグを報告し、mageさんは合宿中で一番高い点数のバグを見つけ個人の最優秀賞をもらっていた。
mageさんにバグハントの楽しさを聞いてみたところ「バグ探しはゲームの裏技を見つけるみたいで楽しいんですよ」とのこと。この2日間は「楽しい」の一言に尽きると感じた。mageさんが「裏技を見つけるみたい」と言っていたように、全員がゲームに夢中になっているような雰囲気だった。集中力と楽しさが共存する環境なのである。
端から見たら絵変わりしない内容かもしれない。しかし本人たちにとっては、ほかのバグハンターや合宿という環境から直接刺激を受け、精神的に風景がガラッと変わるような2日間だったのではないかと思う。
絆をつくっていくバグハンター合宿
2日間の合宿費用や当日の準備の大変さなどがあってもサイボウズがバグハンター合宿をやるのには「バグハンターとの絆をつくる」という大きな目的がある。
単にバグハンターに来てもらうだけでなく、合宿ではまだ公開されていないサービスも配布している。サイボウズ側も情報をオープンにしているのだ。次回からはコードも公開してバグハントしてもらう可能性があるかもしれないというほどだ。
これには、バグハンターたちもチームの一員とし、バグなどの不具合な情報をオープンにすることで、公明正大に製品品質に向き合おうという姿勢がもとにあるという。
そして、そもそも「バグハンター合宿」自体が、バグハンターの「合宿やりたいな」というツイートの願望から始まっている。
バグハンターの希望を叶えつつ、サイボウズの目的も実現しつつで、まさにwin-winの関係を築いているのだ。実はこの2日間、僕も検証環境を借りて取材の合間にバグハントをしていたけれど、1個もバグを見つけることができなかった。
エンジニアとしてセキュリティの基礎的な知識は持っているものの、実際にWebサイトがどう攻撃されるかをろくに理解していなかったんだな。「泥棒が守る家のセキュリティが一番強い」という話を聞いたことがあるが、攻撃方法を知ることが最大の防御なのだなと改めて実感した。オマケの答え合わせ
最後に、冒頭の「バグっぽいものを3つ仕込んでみた」に対する答え合わせをして、この記事を終えたいと思う。
1. 「バグハンター」という文字が「パグハンター」になっている箇所がある。バグがパグになるバグ。パグハンターって響きがかわいい。
2. 下記の画像をクリックするとなぜか阿部寛のホームページに飛ぶ。気づいたらこの記事を読むのをやめて阿部寛のホームページに夢中になってしまうというバグ。
3. 冒頭の数行は僕ではなくべつの人間が書いている(最初にある青枠部分のリード文)。乗っ取りバグ。 ちなみに「上の青枠の文章だけは別人が書いています」という文章が背景と同じ色で、青枠の下に書かれている。
「こんなのわかるわけねーじゃねーかよ!!!」と思うかもしれないが、バグとは普通は気づかないところに発生してしまうもの。
バグハンターがいるからこそ見えていなかったバグを探すことができ、Webサイトのセキュリティを保ってより安全に運用することができるのである。
SNSシェア
執筆
megaya
Webエンジニアをやりながらライターをやっています。Webの技術的なインタビュー記事から弟のデートを尾行する記事まで振り幅大きめで記事書いています。