Quantcast
Channel: サイボウズ式
Viewing all articles
Browse latest Browse all 981

サイボウズが自社製品のバグに懸賞金を出す理由って?──バグハンター合宿に密着取材してきた

$
0
0

「100万円のバグを見つけました!」

サイボウズが主催する「バグハンター合宿」なるイベントに参加して、1時間足らずの出来事だった。あまりに簡単に100万円という金額が飛び出たので、人生ゲームの紙幣くらい軽く感じてしまった。

それと同時にバグハンターたちの技術力の高さと脅威の両方を知ることになった……。

文:megaya

上の青枠の文章だけは別人が書いています。

バグハンターとは、ものすごく簡単に説明すると「Webサイトやスマホアプリのバグを見つける人」のことだ。 バグ探しを趣味にする人もいるが、バグハンターを職業としている人も数多くいる。見つけたバグを企業に報告することで報酬をもらうのだ。なかには「バグ1件で200万円」なんて高額な報酬もあるそう。

夢がある実例をひとつ紹介したい。2018年5月頃から活動している若手バグハンターのno1zy(ノイジー)さんの話だ。

インタビューを受けるno1zyさん

バグハンターのno1zy(ノイジー)さん

当時は学生だったにもかかわらず、活動し始めてからわずか6か月で、500万円もの報酬を得たという。サイボウズからの報奨金が今年入金されたため、来年の税金がエグそうだとのこと……。

(お金の話ばかりで節操なくて申し訳ないが、わかりやすい指標として紹介させてほしい)

バグハンターの報酬が高いのには理由がある。場合によっては、バグが個人情報流出を引き起こす可能性があるからだ。そんなバグを悪用されてしまったら、会社の存続にもかかわるかもしれない。数百万円で会社を守れると考えれば安いものなのだろう。

しかし、バグ報告に対して報奨金を出す日本企業は少ない。バグハンターの重要性がまだまだ浸透していないのかもしれない。

またバグハンターはハッキングに近い形でバグを探していくので、危険視されることもあり、企業からは敬遠されることもあるのだ。

サイボウズはいち早くバグハンターに報奨金を出す取り組みをしている。それだけでなく、社外から参加者(バグハンター)を募り、2日間で集中的にサイボウズ製品の脆弱性を発見してもらうイベント「バグハンター合宿」を2014年から開催しているという。今回はその合宿に取材をしにいくことに。

僕もライターの傍らでエンジニアをやっているのだが、バグハンターの知識はあまり ない。一体、どんな合宿になるのだろうか……。まったく想像がつかないまま、会場に足を運んだ。

※この記事にはオマケとしてバグっぽいものが3つ仕込んであります。間違い探しの感覚で、読み進めながら見つけてみてください。 (「文章に故意に嘘の情報が書いてある」といったバグはないので、普通に読み進めていっても大丈夫です)

<合宿1日目> 合宿スタート!

おんやど恵正面の写真

今回のバグハンター合宿は、湯河原の温泉旅館「おんやど恵」で開催。

合宿のスケジュールは以下の通り。

4/20 (土)

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 バグハントタイム

ルールのバグをつく。前日から戦いは始まっている……!

201905_03_010.jpg

いよいよバグハントが始まった。

さて、どのチームが一番始めにバグを見つけるのか…!!

各チームの点数を表示しているスクリーン

会場のスクリーンには、チームごとにバグを見つけた数と点数が常に表示されるようになっている

バグハンターたちの熱き戦いが今始まった!!!!!!

……と心の中で勝手に盛り上がっていたのだけれど、なんと始まって5分ほどで全チーム合わせて50個ほどのバグが報告されていた。

megaya
megaya
え、どういうこと? スクリーンの表示がバグってる?

どうやら合宿前に検証環境が配布されていたため、前日までにバグ探しをしていた人が何人もいたようだ。

「事前にバグを探してはいけない」とは書かれていないというルール上のバグに気づいていた人が多かったのだ。戦いはすでに始まっている……!!

ちなみに、この時点で一番バグを見つけていたのは冒頭で紹介したno1zyさんで、当日までに30個以上のバグを見つけたようだ。

バグハンターのPCをのぞき込むサイボウズ社員たち

合宿中は黙々と作業をすると思っていたのだが、予想と違って活発に話し合いをしていた。和気あいあいとしたワークショップの雰囲気に近い。

考えてみれば「すきあらばバグハントをする」共通項のある同士が集まっているのだから楽しくないわけがないのだ。

参加者A
参加者A
ちょっと〜! 中間者攻撃(*)しますよ〜?
参加者B
参加者B
やめてくださいよ(笑)。

(*)通信をしている送信者と受信者の間に入り、それぞれになりすまして、盗聴したり、データを改ざんしたりすること

会話に挟む冗談も、世紀末のような発言なのが恐ろしい。本物のハッカーが集まっているので、斧を持ちながら「ちょっと〜! 首狩りますよ〜?」と言っているようなものだ。

会場が静かじゃない理由はもうひとつある。バグハンターとサイボウズ社員の間での議論が活発なのだ。

「そもそもバグなのか」「どのくらいの危険度なのか」は、企業側の判断に左右される。バグには無数のパターンがあるので、明確に点数を決めることはできない。

ひとつのバグの危険度の基準を明確にすることは、ほかのバグにも影響するので話し合いがかなり重要なのだ。

「見つけたバグがどのくらい脅威的なのか」を伝えられるかどうかは、バグハンターにとって大事な能力なのである。それによって企業側のセキュリティ意識もだいぶ変わってくるだろう。

坦々焼きそばの写真

合宿では作業部屋にほぼ缶詰状態で、ビックリするくらい写真映えしないので、お昼に食べた湯河原名物である担々焼きそばの写真をみてほしい。ピリ辛でおいしかった

開始1時間で100万円のバグが見つかる

mage
mage
これ100万円クラスのバグじゃないですか?

「バグハンター合宿ってこういう雰囲気なんだな」と、一息つこうと思ったところで早くもひとつの山場がきた。

なんと報奨金が100万円クラスのバグが見つかったのだとか。

合宿が始まってから1時間くらいしか経っていないので「100万円」という金額に実感がまったく湧かない。

mageさん

バグを見つけたmage(まげ)さん。バグハンターとしてサイボウズとは数年前から関わりがある。明るい人で、合宿ではムードメーカー的存在でもあった

mageさんの周りに集まるサイボウズの社員たち

mageさんが見つけたバグを確認するためにサイボウズの社員も一斉に集まる。たしかに最高点がつくようなバグはどんなものか見てみたいし、どうやって見つけたのかエンジニアとして純粋に気になる

どうやってそんなバグを見つけたのかを簡単に言えば「暗号化して読み込んでいるプログラムを見つけて、それを解析してバグを見つけた」という感じだ。

暗号化を解析……。バグの見つけ方が、予想以上にハッキングだったことに驚きだ。バグハンターは実際にWebサイトを攻撃してバグを見つけていくものなのか。改めて自分が異質な場所にいるんだなと認識した。

それと同時に「ちょっと〜! 中間者攻撃しますよ〜?」という先ほどのボケが余計に恐ろしく感じる……。この会場にいる全員が、Webサイトを死に追いやれるデスノートを持っているようなものかもしれない。

【バグ発見の手順】 ※ この手順はかなり簡易的にしています

1. シリアライズ化してプログラムを読み込んでいる箇所を見つける

2. それを解析してプログラムを取得する

3. コンパイルされた状態のプログラムを読み解いていく

4. 脆弱性のある箇所を発見する

理屈はわかったが、「やってみて」と言われてもまったくできる気がしない。

単純に一つひとつの工程をこなす知識力の高さも必要なのだが、それらを組み合わせてパズルのようにバグを見つけていくという発想力に驚かされる。一般の人がハッカーと聞いて思い描く「カチャカチャ、ターン」はこのようなことを実行していたのだ。

バグハンターと検証するサイボウズ社員

そういった技術力を持つバグハンターだからこそ、企業との信頼関係は重要になる。合宿の参加者達がサイボウズのサイトを攻撃しようと思えば、いくらでもできるかもれしれない。

包丁は料理に使うものであるが、人を刺すことだってできる。誰がどう使うかが大切なのだ。

だからこそ、こういった合宿などを開き、バグハンターとの絆をつくっていくのは重要なのである。バグハンターにとっても「自由にハッキングしていい」環境があるのは大切なのだと思った。

パグの写真

写真映えしない展開がまだまだ続くので、バグではなくパグの写真を見て癒されてください

バグハンターには「本来はやってはいけないことをやる楽しさがある」

no1zyさんの周りに集まるバグハンターと社員たち

冒頭で紹介した若手バグハンターのno1zyさんも次々とバグと発見していた

megaya
megaya
no1zyさんは、どうやってバグを探しているんですか?
no1zy
no1zy
対象サイトによって、探し方は違いますが、サイボウズで脆弱性を探すときは、XSS(クロスサイトスクリプティング)関連のバグを探して、htmlファイルのなかで脆弱性が起きそうなところを文字列検索して、そこを実際に攻撃する、などの方法でやっています。
megaya
megaya
(暗号のようだ……)

1つのバグが見つかると、別ページの同じような機能でも見つかり、芋づる式に脆弱性のあるバグが発見できるらしい。

ちなみに使っているツールも「Burp Suite」というプロキシツールくらいで、特殊なものはほとんど使っていないとのことだ。

megaya
megaya
バグハンターとして活動するためには、どうやって勉強すればいいんですか?
no1zy
no1zy
まずは「公開されているバグのレポートを見ること」が大切ですね。HackerOneなどの有名サイトではそれらが公開されているので、バグの探し方や報告書の書き方はそこを見て学びました。
スクリーンに表示されるスコアボード

夕飯前の時点で100件以上のバグが報告されていた。自分がつくっているWebサイトをパグハンターに見てもらったら……と考えると想像するだけで恐ろしい

また、バグハンターにもさまざまなタイプがいるらしく、no1zyさんはクライアントサイドやURLに起因するバグを探すのが得意なタイプだ。

一方、先ほど100万円クラスのバグを見つけたmageさんは「コンピュータを乗っ取るようなサーバ上のバグを探すのが好き」だという。

どちらも共通して「本来はやってはいけないことをやる楽しさがある」と言っていた。たしかにそういった背徳感からくる楽しさは少しわかる気もする。

<合宿1日目>18:30〜20:30 夕飯

DSC00297.JPG

約4時間のバグハントを終えてひと休み。宿のご飯が運ばれてきて、やっと湯河原に来ている感じがした

バグハンティングに励むハンターたち

しかし、ご飯を食べ終えたあとに速攻で見慣れた風景に

レッドブルの山がだいぶ小さくなっている

会場の光景はほとんど変わらないが、レッドブルの減り具合だけが時間の経過を物語っている

<合宿1日目>20:30〜 自由時間

終わらない夜

20時30分以降は自由時間。

温泉に入ってもいいし、お酒も飲めるし、マッサージを受けたっていい。湯河原の夜を満喫しよう!!!

自由だ!!!

DSC00280.JPG

21:00

しかし、作業部屋に戻ってみるとほとんど人がバグハントを続けている……。

合宿が始まってから1時間くらいで予想できたことなので、このことは想定の範囲内だ。気になるのは、どのくらいの人が何時まで作業を続けるのか。

黙々とバグハンティングに励むハンターたち

23:00

全員が作業部屋に残っている。まだ日付も変わらず23時なので、かなり集中している様子だ。
チームのうち一人残って作業に取り組むmageさん

1:00

さすがに日をまたぐと、人数はかなり減った。あるチームはメンバー全員が作業部屋からいなくなっている。 ここまできたら僕にも意地が出てくる。「全員いなくなるまで起きててみよう」と思った。
人もだいぶまばらになってきた会場の様子

2:00

深夜2時を回り、人数もだいぶ減ってきた。あと1〜2時間したらさすがに全員いなくなるかも。というか眠くなってきたから、そろそろ寝てほしい。

頼むから減ってくれ……!

と思っていると、さっきいなくなっていたチームが復活していた。どうやらお風呂に入ったり仮眠をとったりしていただけのようだ。

やばい、そろそろこっちが限界になってきた……。

眠りに落ちる運営側

3:30

僕よりも先に運営側が昇天していた。

頼むからもう寝てくれ……

寝てく……

寝……

※ 結局、気づいたら4時ごろに部屋で寝ていた。あの時起きていた人は、このあともずっと作業を続けていたらしい。

<合宿2日目>09:00〜12:00 バグハントタイム

前日と変わらない様子でハンティングに励むバグハンターたち

2日目がスタートしたが、この部屋だけ時が止まっているんじゃないかと思うほど雰囲気がまったく変わっていない。『ドラゴンボール』の精神と時の部屋と同じ空気を感じさせる

レッドブルの山がなくなっている

レッドブルがなくなっているのを見て「ああ、時間が経っているんだな」と改めて実感

2〜3時間しか寝てない人がほとんどなのに、前日と変わらない雰囲気で黙々と作業を続けているのを見ると、バグハンターの体もバグってくるんじゃないかと思ってしまう。『ロックマンエグゼ』でわざとバグらせて強くできる方法があることを思い出した。

もちろん惰性で徹夜していたわけじゃなく結果もきちんと出すから恐ろしい。すでにバグの報告数は190件ほどになっていて、昨日より倍くらいに増えている。何回でも言うけど、いろんな意味を込めて恐ろしい。

会場前方でスタンバイするサイボウズ社員たち

200件近く報告されたバグを一つひとつ見て点数をつけていき、バグハンターと議論し、雑用もこなす……。サイボウズ社員も当日はかなり忙しそうであった。間違いなく言えることはあの空間で僕が一番ヒマであるということだ

ここまでバグが発見されると、

「サイボウズのサイトめちゃくちゃバグ多いな!!」

と感じるかもしれないが、サイボウズのサイトが特別バグが多いわけではない。バグハンターによって今まで表面的には見えなかったバグが可視化されただけなのだ。

いつも使っているWebサイトもバグが見えていないだけで確実に何十個も隠れている。それを公にしているかいないかの違いだけなのだ。

<合宿2日目> 12:00〜13:00 昼ごはん

天ぷらそばの写真

2日目の昼ごはんは天ぷらそば

バグハンに励むハンター 食べ終わったあとはみんなすぐにバグハントに戻る。もはやこの流れに様式美すら感じる。

しかし、2日間のバグハントもいよいよ終わりである。見た目はほとんど変わらない部屋を追い続けてきたが、なんだかこの風景が見られなくなることに寂しさすら覚えるようになってきた。僕自身の脳もバグってきたのかもしれない。

<合宿2日目> 14:00〜 結果発表

見つけたバグを報告するバグハンター

優勝チームの発表の前に、参加者がそれぞれどんなバグを見つけたのか報告し合う。

普段聞く機会のないようなセキュリティの深い話が聞けて勉強になる。それにハッキング的な話を聞くのはちょっとした背徳感もある。

「どんなバグがあったのか」→「どんな問題があるのか」→「それをどうやって見つけたのか」

上記のような解説を聞いているときは、『名探偵コナン』や『金田一少年の事件簿』で、犯人を追い詰めるときの解決シーンを見ているようなワクワク感があるのだ。

優勝賞品を持ってカメラに向かってガッツポーズをとるCチーム

優勝したCチームのみなさん

僕が注目したno1zyさんやmageさんのいるチームは残念ながら優勝できなかったが、ふたりとも大健闘。

no1zyさんはこの合宿で一番多くのバグを報告し、mageさんは合宿中で一番高い点数のバグを見つけ個人の最優秀賞をもらっていた。

ハンターと運営の集合写真 mageさんにバグハントの楽しさを聞いてみたところ「バグ探しはゲームの裏技を見つけるみたいで楽しいんですよ」とのこと。

この2日間は「楽しい」の一言に尽きると感じた。mageさんが「裏技を見つけるみたい」と言っていたように、全員がゲームに夢中になっているような雰囲気だった。集中力と楽しさが共存する環境なのである。

端から見たら絵変わりしない内容かもしれない。しかし本人たちにとっては、ほかのバグハンターや合宿という環境から直接刺激を受け、精神的に風景がガラッと変わるような2日間だったのではないかと思う。

絆をつくっていくバグハンター合宿

最優秀賞を受賞するmageさん

2日間の合宿費用や当日の準備の大変さなどがあってもサイボウズがバグハンター合宿をやるのには「バグハンターとの絆をつくる」という大きな目的がある。

単にバグハンターに来てもらうだけでなく、合宿ではまだ公開されていないサービスも配布している。サイボウズ側も情報をオープンにしているのだ。次回からはコードも公開してバグハントしてもらう可能性があるかもしれないというほどだ。

これには、バグハンターたちもチームの一員とし、バグなどの不具合な情報をオープンにすることで、公明正大に製品品質に向き合おうという姿勢がもとにあるという。

そして、そもそも「バグハンター合宿」自体が、バグハンターの「合宿やりたいな」というツイートの願望から始まっている。

はせがわようすけさんのツイートキャプチャ

はせがわようすけさんのツイートの「ハッカソン形式で同一会場でみんなでわいわい」という意見をきっかけに、バグハンター合宿は生まれた

バグハンターの希望を叶えつつ、サイボウズの目的も実現しつつで、まさにwin-winの関係を築いているのだ。
おんやど恵のロビー"

合宿ではほとんどの施設を生かされていない「おんやど恵」。次は普通に旅行で訪れたい

実はこの2日間、僕も検証環境を借りて取材の合間にバグハントをしていたけれど、1個もバグを見つけることができなかった。

エンジニアとしてセキュリティの基礎的な知識は持っているものの、実際にWebサイトがどう攻撃されるかをろくに理解していなかったんだな。「泥棒が守る家のセキュリティが一番強い」という話を聞いたことがあるが、攻撃方法を知ることが最大の防御なのだなと改めて実感した。

オマケの答え合わせ

最後に、冒頭の「バグっぽいものを3つ仕込んでみた」に対する答え合わせをして、この記事を終えたいと思う。

1. 「バグハンター」という文字が「パグハンター」になっている箇所がある。バグがパグになるバグ。パグハンターって響きがかわいい。 パグハンターになっている部分のキャプチャ

2. 下記の画像をクリックするとなぜか阿部寛のホームページに飛ぶ。気づいたらこの記事を読むのをやめて阿部寛のホームページに夢中になってしまうというバグ。

DSC00297.JPG

3. 冒頭の数行は僕ではなくべつの人間が書いている(最初にある青枠部分のリード文)。乗っ取りバグ。 ちなみに「上の青枠の文章だけは別人が書いています」という文章が背景と同じ色で、青枠の下に書かれている。

「こんなのわかるわけねーじゃねーかよ!!!」と思うかもしれないが、バグとは普通は気づかないところに発生してしまうもの。

バグハンターがいるからこそ見えていなかったバグを探すことができ、Webサイトのセキュリティを保ってより安全に運用することができるのである。

執筆:megaya/編集:松尾奈々絵(ノオト)/撮影:megaya、山見知花/企画:鈴木統子

Viewing all articles
Browse latest Browse all 981

Trending Articles