#FlattSecurityMagazine

セキュリティとプロダクト開発の今を伝えるメディア

世界最大規模のバグバウンティコンテスト・Pwn2Ownの魅力とは?【Masato Kinugawa × 志賀遼太】

トレンドマイクロが運営する脆弱性発見コミュニティ「Zero Day Initiative」(ZDI)が主催しているバグバウンティコンテスト「Pwn2Own」。対象となるプロダクトの0-day脆弱性を発見し、エクスプロイトに成功すると高額賞金を手に入れることができるという世界最大規模のコンテストで、2007年から毎年開催されています。

今回は、日本からPwn2Ownに出場し実績を残したMasato KinugawaさんとFlatt Security 執行役員 プロフェッショナルサービス事業CTOの志賀遼太の2人に、Pwn2Ownの魅力やコンテストの舞台裏について語り合っていただきました。

プロフィール

Masato Kinugawaさん
XSSが好き。Pwn2Own winner (Vancouver 2022)。
2016年よりCure53で脆弱性診断。
X: @kinugawamasato

志賀遼太
株式会社Flatt Security 執行役員 プロフェッショナルサービス事業CTO。
2016年、LINE株式会社(現・LINEヤフー株式会社)に入社し、セキュリティ診断や設計レビューを担当。その後、2020年にFlatt Securityに入社し、2022年11月、執行役員兼プロフェッショナルサービス事業CTOに就任。数々のCTFで実績を残し運営にも携わっているほか、0-day huntingの分野においても実績を残している。
X:@Ga_ryo_

エクスプロイト実行の順番はくじ引きで決定

ーーお二人のPwn2Ownの参加経験について教えてください。

Kinugawa:2022年に開催されたPwn2Own Vancouver 2022にリモートで参加しました。参加したのは、現時点ではこの1回のみです。

志賀:2021年に開催されたPwn2Own 2021に参加しました。僕もKinugawaさんと同じくリモート参加で、現状この1回のみの参加です。Pwn2Own 2021で対象となっていたプロダクトの脆弱性を当時よく探していたので、良い機会だなと思って探してみたらたまたま発見できたという感じです。

ーーKinugawaさんはMicrosoft Teamsの脆弱性を発見し15万ドル、志賀さんはUbuntuの脆弱性を発見し3万ドルの賞金を獲得しており、お二人とも初参加にもかかわらず実績を残されています。コンテストはどのような流れで進行するのでしょうか?

志賀:リモート参加だったので、基本的にコンテストはYouTube Liveの中で進行していました。

最初に司会の方がくじ引きで参加者のエクスプロイト順を決めます。僕は1日目の6番目というそこそこ早めの順番だったので、ドキドキしながら別ルームで待機していました。おそらくZoomでだったと思うのですが、運営の方々と「初めて参加するから緊張している」みたいな雑談をしながら待っていた記憶があります。

ーーエクスプロイトの順番は、対象プロダクトごとに決めていくのでしょうか?

Kinugawa:プロダクトに関わらず参加者全体で決めていますね。僕の時もそうでしたし、最新のコンテストでも参加者をプロダクトごとに区切っていません。

志賀:1つのプロダクトに対して成功するエクスプロイトは多くて数件という状況なので、そのような順番の決め方をしているのだと思います。

ーー完全にランダムなんですね。

志賀:そうですね。少し待って自分の番が来たら、YouTube Live用のルームに移動し、エクスプロイトを実行しました。司会の人から「もうエクスプロイトを実行できる?」と振られて「OK!」と言って実行するようなノリでした(笑)。本番では3回までエクスプロイトを試行できるのですが、その時は1回目で成功したので、僕の番は一瞬で終わりましたね。すごく緊張していたのですが、意外にもあっけなかったです。

▼当時の映像
youtu.be

その後、また別ルームに移動して、エクスプロイトの内容について説明を行いました。僕はUbuntuの脆弱性を見つけていたので、Ubuntuの開発を支援しているCanonicalの方々に対してプレゼンしました。このプレゼンの場で、発見した脆弱性がユニークであるかどうかが審査されるのですが、僕の場合は無事認定され、賞金を獲得することができました。

▼当時の説明資料
https://flatt.tech/assets/reports/210401_pwn2own/whitepaper.pdf?_gl=1*npwb8e*_ga*MTU5MDU2NDUxOC4xNjc0Njk4NTc0*_ga_VLTFK3TMP8*MTcxMTM0MzkxMi4xNTcwLjEuMTcxMTM0Mzk4OC40NC4wLjA

Kinugawa:僕の時もほぼ同じような流れでしたね。志賀さんと同じく、エクスプロイト実行の際は「これをコピーしてペーストしてください」とお願いしたぐらいでそんなに喋らなかったですね。そもそもそのやり取り自体をTeamsで行っていたので、「ここでペイロード送っちゃったらどうなるんだろう?」と思いました(笑)。

▼当時の映像
www.youtube.com

僕の場合は対象プロダクトがMicrosoft Teamsだったので、エクスプロイトの説明はMicrosoftの方々に対して行いました。

参加者・参加チームの特徴とは?

ーー参加者はどのような属性の方が多かったですか?

志賀:参加者は自分以外は海外出身者でしたが、海外でペネトレーションテストや脆弱性のリサーチに携わられている方が多かった印象ですね。海外には脆弱性リサーチ事業を展開されている企業が多く、台湾から参加されているDEVCOREのOrange Tsaiさんやシンガポールの強豪チームSTAR Labなども、そのような企業で脆弱性リサーチに従事されている方々です。特にSTAR Labはチームの人数も増強して、近年特に体制を整えて挑んでいる様子です。

ーーチームには人数制限はないのでしょうか?

志賀:おそらくないと思います。そこらへんがふわっとしてますよね。

コンテストの中でポイントを積み重ねて、最終的に1位になった場合はトロフィーが授与されるのですが、チームで出場した場合はチーム全員分のポイントが加算されます。エクスプロイト実行は個人で対応するので、チームで参加するメリットはポイント加算ぐらいしかありませんね。

Kinugawa:そうですね。僕も個人で参加しましたが、チームで参加しようと考えたことはありませんでしたね。

ーーお二人はリモート参加ということでしたが、オンサイトでの参加も可能なのでしょうか?

志賀:回によって異なると思います。完全リモートの回もあれば、オンサイトもできる回もありました。

Kinugawa:コロナ禍の影響を受け、Pwn2Own 2020からリモート参加ができるようになりました。今後もリモート参加ができるかどうかはわかりませんね。

志賀:個人でオンサイト参加の場合、往復交通費がかかりますし、何よりエクスプロイトが発火せず、賞金を獲得できなかった場合のダメージが大きそうですね。もしかしたら渡航費に関しては出してくれたりするんでしょうかね?誰でも参加資格はあるので出ないのかなと思っていますが......。

0-day脆弱性をどのように見つけたのか

ーーPwn2Ownで報告した0-day脆弱性はどのようなきっかけで探し始めましたか?

Kinugawa:Pwn2Own 2021でTeamsが初めて対象になっているのを見たのがきっかけです。その時は応募期間を既に過ぎていたので「次機会があったらチャレンジしたいな」と思っていたのですが、翌年のPwn2Own Vancouver 2022でも対象になりました。

TeamsはElectronというフレームワークで作られているのですが、Electronの脆弱性は僕の得意分野です。偶然にも1週間丸々休みがあったこともあり、ちょっとやってみようかなと思って探してみました。

志賀:ある意味で僕とは逆で、面白いなと思いました。

Pwn2Ownには毎年変わらず募集されるプロダクトがあります。僕はそれに合わせて準備していたわけではないですが、募集要項を見た時に「やっぱり今年も募集されているな」と確認してから探し始めることにしました。

ーー0-day脆弱性はどのように見つけていきましたか?

Kinugawa:最終的に3つの脆弱性を組み合わせてRCEを達成したのですが、1つ目の脆弱性を見つけると、2つ目と3つ目も次々に見つけていくことができました。順調に発見していけたので、「これなら行けそうだ」と確信を持つことができました。

▼発見した脆弱性についての解説
speakerdeck.com

Teamsにはver1とver2があります。新しいバージョンが対象になると思いきや、僕が出た回はver1が対象だったんですよね。Pwn2Ownはエンタープライズ向けの大会なので、エンタープライズ向けとして普及しているver1を対象にしたという背景があったようです。

僕はver1の方に脆弱性を発見したのですが、当初は「これは対象外なんだろうな」と思い込み半ば諦めていました。しかし、大会直前にver1が対象らしいという情報を聞いてから、締切ギリギリまで準備をして間に合ったという経緯があります。

レポート作成にかかった期間も含めて、準備期間はトータルで2週間ほどでした。

志賀:僕の場合、UbuntuなのでLTS(長期サポート版)が対象になるかなと思っていたんですが、そうではなく通常版が対象になったので、「こっちなんだ!」と驚きました。

その時期たまたまLinux kernelも読んでいたので、脆弱性を見つけてみようかなと思い、git blameしながら探してみたところ、1週間ぐらいで見つけることができました。

新しめの機能に脆弱性が残っていることが多いので、この時は作られて1年も経っていないような新しめの機能に絞って探していました。LTSでは脆弱性が潰されていたり、危なそうな機能が無効化されていたりすることが少なからずあったからです。

CTFプレイヤーから見たPwn2Ownの魅力

ーーPwn2Ownのことは何がきっかけで知りましたか?

Kinugawa:僕は元々専業のバグハンターとして働いていたので、大規模なバグバウンティコンテストであり、しかも高額賞金を手に入れられるチャンスであるPwn2Ownのことはよく知っていました。バグバウンティを仕事にしていた頃も、いつかは参加したいという気持ちが強かったです。

Pwn2Ownはローレイヤーがメインの大会ですが、バグハンター時代はWeb系を得意領域としていたので、なかなか手を出せずにいました。ElectronはXSSから攻めることもできるので、それが参加の後押しになりました。

志賀:確かに、昔からBinary Exploitationみたいなものがほぼメインですよね。自動車やスマートフォンなどのハードウェアに関するジャンルやVMM、ブラウザなどかなり低いレイヤーのプロダクトが主流というイメージです。Kinugawaさんが参加した回もZoomとTeams以外は結構そんな感じでしたよね。

僕は業務でそのようなローレイヤーに触れておらず、バグバウンティに参加した経験もあまりありませんでしたが、CTFでは触れる機会がありました。先程紹介したOrange TsaiさんとはCTF上の知り合いだったので、そういった友人が活躍する場としてPwn2Ownのことを認識していました。

ーーCTFプレイヤーから見たPwn2Ownの魅力は何でしたか?

志賀:リアルワールドが舞台になっているということが最大の魅力ですね。

CTFでもカーハッキングを題材にしたものなどがありますが、治安が悪い一部のCTFを除くと、CTFの問題は「作られたクイズ」であり実際に生じている脆弱性ではありません。コンテストとしての面白さはありますが、取り組むことの意義や社会への影響度を考えると少し物足りなさを感じてしまいます。

Pwn2Ownが対象にしているのはプロダクトそのものなので、そこから0-day脆弱性を発見して報告することの社会的意義は非常に高いです。ここは明確にCTFと違うポイントだと思います。

Pwn2Ownに向いている人、向いていない人

ーーPwn2Ownに参加して得たものは何ですか?

志賀:Pwn2Ownを通じて「正確なものを作る」ことに向き合う経験ができました。

ローレイヤーだと割とエクスプロイトが失敗しがちだと思うのですが、本番では3回しかトライできません。CTFでは何回も試して1回成功すれば良いぐらいの感覚で問題なかったのですが、Pwn2Ownではそうはいかないので正確なエクスプロイトとレポーティングを意識して準備を進めました。結果として良い経験になったと思います。

また、それまで僕はあまり対外的に情報発信をしていなかったのですが、Pwn2Ownに参加したことで僕と会社に対する認知を一定獲得することができ、メンバーの採用にもつながりました。

Kinugawa:僕の時も周囲からの反響はありましたね。TVや新聞等の様々なメディアから取材の依頼をいただきましたが、基本的に取材はお受けしていないのでお断りさせていただきました。

去年、この時に報告した脆弱性の詳細を発表したのですが、PortswiggerによるTop10 web hacking techniques of 2023の7位に選ばれていました。結構注目されてるみたいですね。

ーーPwn2Ownはどのような人にお勧めしたいですか?

志賀:世の中で広く普及しているプロダクトの脆弱性を見つけるのが好きな人であれば楽しめるのではないかと思います。とはいえ難易度は高いので、とても根気強い人でなければ心が折れてしまうかもしれません(笑)。

初学者が初手で挑むべきものではないので、よくターゲットになっているプロダクトの0-day脆弱性を見つけて報告するというアクションを何度か積み重ねてから取り組んでみると良いのではないでしょうか。

Kinugawa:脆弱性を探すのが好きな人や強い目的意識を持って脆弱性を探している人に、最終的に目指してほしいコンテストですね。歴史の長い大会ですからね。

志賀:CTFプレイヤーでも自分の知らない領域や仕組みを知って楽しめる人にはオススメですね。Pwn2Ownに出てくるようなプロダクトの複雑な仕組みを理解し、楽しみながら脆弱性を探せるのではないかと思います。

Kinugawa:実際のバグハントでは、泥臭い作業に結構時間をかけることも少なくないので、そういった面でも向き不向きはあるのではないかと思いますね。

ーー今後、日本からのPwn2Own参加者を増やすにはどうすれば良いと思いますか?

Kinugawa:Pwn2Ownは英語圏で開催されているコンテストなので、日本国内で知らない人がいても不思議ではありません。今回の記事のように、日本語で情報発信を積み重ねていくことが大切ではないかと思います。

志賀:やりたい人がコンテストの存在に気づける環境を作るのはもちろん大事だと思いますが、バグバウンティそのものに興味を持ってもらう方法も考える必要があります。

バグハンターの中でも、ZoomやTeamsのような業務基幹系のシステムやローレイヤーにまで手を広げる人はそこまで多くない印象です。ですが、そういった領域のセキュリティは非常に重要です。どうすれば興味を持ってもらえるのか気になっています。

Kinugawa:逆に、志賀さんがローレイヤーに興味を持ったきっかけは何ですか?

志賀:CTFですね。ローレイヤーに初めて触れて一番とっつきにくい印象を受けました。でも、僕は自分の知らない領域に挑戦するのを楽しめる性格なので、とっつきにくくてわかりづらいからこそ挑戦してみたいと思いました。ローレイヤーが好きだから向き合ったというわけではないんですよね。業務でもWebレイヤーを中心に担当しています。

人が興味を持つきっかけを想像するのは難しいですね。

Kinugawa:僕の場合、一番好きな脆弱性はXSSなのですが、そのパズル的な面白さから興味を持って、今まで続いている感じですね。

志賀:パズルを解いているうちに対象がどんどん巨大になっていった感じですね。

Kinugawa:そうですね。XSSは最初すごく入りやすいのですが、やっていくうちにかなり難易度の高い壁に段階的にぶち当たっていきます。その壁を超えていくことを追求し続けていたら、いつの間にかこんな風になっていました。

志賀:確かに、沼にハマっていくと最終的にElectronや一般的なWebブラウザのセキュリティ機構に到達していくイメージですね(笑)。

バグハンターから脆弱性診断士へとキャリアチェンジした理由

ーーお二人は現在どのようなお仕事をされていますか?

志賀:Flatt Securityで脆弱性診断やペネトレーションテストに携わるとともに、それらプロフェッショナルサービスの技術統括を担当しています。ジャンルには特にこだわりはなく、Web、ゲーム、IoT、コンサルなど幅広く雑食な感じでやってきました。

前職のLINE(現・LINEヤフー)でもセキュリティエンジニアとして脆弱性診断を担当していて、趣味でCTFに参加していました。

Kinugawa:僕はCure53という会社で脆弱性診断を行っています。主にクライアントサイドの課題を担当して、JavaScriptを読みながらXSSを探していることが多いですね。

以前は専業バグハンターとして活動していました。Cure53のチームに加わって以降も、専業の時ほどではありませんが、気が向いた時にバグバウンティプログラムに参加しています。

ーーKinugawaさんがバグハントから脆弱性診断へと移ったきっかけは何でしたか?

Kinugawa:Cure53のMario Heiderichに誘われたのがきっかけですね。最近はもうやっていませんが、Cure53は毎年クリスマスの時期になるとXSS-Mas Challengeというイベントを開催していました。

github.com

僕は毎年回答を送っていたのですが、2015年のクリスマスに回答を送ったら、Marioから「一緒に働かないか?」と誘いを受けました。MarioはXSS界の第一人者なので、一緒に働いたら面白いのではないかと思い、入社することを決めました。

ーーバグハンターから見て、脆弱性診断のやりがいは何だと思いますか?

Kinugawa:バグバウンティでは自分の好きなところにばかりこだわってしまいがちですが、脆弱性診断ではより広い視野が求められます。自分が得意でないことを任される場合もあるので、色々な知識を付けるのには最適な環境ですね。

Pwn2Ownでの経験は業務に活きるのか

ーーこれまでどのように技術的な研鑽を積まれてきましたか?

Kinugawa:新しい技術が出てきた際に必ず追って、それがどのようなものか調べるようにしていました。普段はX(旧Twitter)から情報収集することが多いですね。

志賀:僕は元々CTFプレイヤーだったので、CTFで出題された面白そうな問題に手をつけて知見を貯めていました。あとは脆弱性のレポートを読んでから、実際のプロダクトの実装を確認してみることもやっていましたね。

ーーPwn2Ownでの経験は業務に役立ったと思いますか?

Kinugawa:Electronを対象とした診断を業務で受けることもあるので、Pwn2Ownでの経験が業務に役立ったと感じました。業務で学んだことをPwn2Ownで発揮できたという側面もありますし、その逆もありますね。

志賀:僕の場合は業務で担当しているジャンルと異なるので、今のところは業務に役立ったとはあまり言えません。悲しいですけど(笑)。

業務、CTF、Pwn2Ownと全部別々のことをやっているんですよね。Pwn2Ownへの参加のモチベーションは、業務で触れていないジャンルに触れられるというところにあったからです。

とはいえ高度な技術力が求められる大会なので、自分の業務とジャンルがマッチしている人にとっては良い経験を積める場なのではないかと思います。

これからセキュリティ業界を目指す人へ

ーー最後に、これからセキュリティ業界を目指す人に向けてメッセージをお願いします。

Kinugawa:脆弱性を探す仲間が増えると嬉しいので、一緒に頑張っていきましょう!

志賀:セキュリティには色々な領域があり、それぞれの領域ごとの違いを楽しめます。Pwn2Ownに出てくるような内容を学んでいくのは大変ではありますが、そういった技術的に深い話をできる仲間ができたら嬉しいです。Flatt Securityでは一緒に働くメンバーを募集しているので、興味のある方はぜひご連絡ください!

(取材・文/寺山ひかり)