💰

脆弱性報奨金制度でもらうお金の話

2024/03/06に公開

こんにちは、mashabow です。先月たまたま EC プラットフォーム Shopify のバグに遭遇し、Bug Bounty Program(脆弱性報奨金制度)を通じて、初めての報奨金をもらいました 🤗(自慢)

「脆弱性を報告するとお金がもらえる!」というのは聞いたことがある人が多いとは思いますが、じゃあいくらもらえるのか?どうやって受け取けとるのか?税金はかかるのか?といった話はあまり聞いたことがありません。わたしも今回初めて知りました。ということで、この記事ではそのあたりを紹介したいと思います。

なお、この記事では 1 ドル = 150 円 のレートで計算しています。

いくらもらえるの?

まず前提として、脆弱性報奨金制度は各社がそれぞれ運営しているため、統一的なルールはありません。したがって、報奨金の金額も基準も各社まちまちです。脆弱性の種類ごと(XSS とか DoS とか)に金額が決められていたり、影響の深刻度で決められていたりするようです。

今回の報告先である Shopify 社は、HackerOne というバグバウンティプラットフォームを利用しており、HackerOne 上のページに金額や詳細なルールが示されています。

https://hackerone.com/shopify

Shopify の場合については、CVSS(共通脆弱性評価システム)という指標によって脆弱性のスコアが評価され、それに応じて金額が決定されます。いろいろなソフトウェアの脆弱性情報で CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H のような謎の文字列を見たことはないでしょうか? あれが CVSS スコアの短縮表記です。


https://nvd.nist.gov/vuln/detail/CVE-2024-22019 の例

CVSS の評価方法については、IPA が出している動画などが参考になります。

実際の例

開示されている過去の例を少し見てみましょう。こちらは「権限がなくても管理画面をポチポチするだけでドメインを移転できてしまう」という脆弱性です。

https://hackerone.com/reports/1820953#activity-20044790

CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L でスコアは 5.4、報奨金は $5,300 となっています。

次は 2021 年に報告された別の脆弱性で、「Electron アプリの中に GitHub のアクセストークンが入っていて、そのアクセストークンを使えば何でもできてしまう」という激ヤバな事案です 😱

https://hackerone.com/reports/1087489#activity-10556436

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H でスコアは文句無しで満点の 10.0。当時の報奨金上限額である $50,000 を叩き出しています。ちなみに、現在は上限が $200,000(3000 万円)に引き上げられています。

詳細はまだ書けませんが、今回わたしは 2 件の報告をして、それぞれ $3,500 と $900、合計で $4,400(66 万円)もの報奨金が出ました。びっくりです。本当にありがとうございます。


今回もらった報奨金

どうやって受け取るの?

今回の HackerOne の場合、以下の 3 種類の受け取り方法があります。

  • PayPal
  • Coinbase でビットコインとして受け取る
  • 銀行振込(Currencycloud)

国際送金の受け取りなんてやったことがなかったので、どれがいいのかよくわからなくて悩みました。ちなみに、わたしの銀行口座(住信 SBI ネット銀行)に日本円で持ってくるのが最終的なゴールです。

PayPal

PayPal の場合、まずは HackerOne から米ドルで受け取り、その後 PayPal 口座から銀行口座に日本円で引き出す、という流れになるようです。

  1. HackerOne →(米ドル)→ PayPal 口座
  2. PayPal 口座 →(日本円)→ 銀行口座

https://www.paypal.com/jp/webapps/mpp/personal/paypal-fees

PayPal の中で両替が行われるわけですが、このとき通過換算手数料が 3% かかります。銀行口座への引き出しにも手数料がかかりますが、5 万円以上の取引は無料なので、今回はかかりません。

よって $4,400 の場合、$4,400 × 3% = $132 = 19,800 円 もの手数料がかかります。PayPal アカウントを持っているので手軽ではあるんですが、こうして見ると結構しますね…。

Coinbase でビットコインとして受け取る

Coinbase は日本から撤退しているようなので、選択肢から外れます。

https://www.watch.impress.co.jp/docs/news/1471359.html

銀行振込(Currencycloud)

HackerOne からは Currencycloud というサービスを通じて銀行振込が行われるようです。ルートがいろいろあるので、それぞれ見ていきます。

日本円で銀行振込(SWIFT)

HackerOne の説明によると、両替は Currencycloud 側で行われるようです。為替レートは仲値が使われるので、両替にかかるコストはありません。

日本円での受け取りですが、海外からの送金は「外貨送金受取サービス」扱いになります。

https://www.netbk.co.jp/contents/lineup/gaika/soukin-uketori/

したがって、受取手数料 2,500 円がかかります。が、気になるのは以下の注意書きです。

※1 入金額は、経由・中継銀行のリフティングチャージ等を入金資金から外貨で差し引いた後の金額となります(例えば、5 万米ドルを当社宛に送金された場合でも、リフティングチャージ等が控除されるため、受取額は 5 万米ドルを下回ります)。
リフティングチャージとは、ある外貨から異なる外貨への両替を伴わず、同一の通貨建てで外国為替取引を行う際にかかる手数料のことです。
リフティングチャージは、依頼元銀行と中継銀行、中継銀行と当社契約銀行との間でそれぞれの契約によって徴求・不徴求などの水準が個々に定められているため、一概に当社でお答えすることができません。お手数ですが依頼元銀行へお問合せください。

正直良くわかりませんが、受取手数料とは別にリフティングチャージなるものが必要なようです。ネット上の情報をいくつか見てみた感じでは 2,500 円が標準な様子。(誰か正確なところを教えてください)

ということで、合計の手数料は 2,500 円 + 2,500 円 = 5,000 円 になりそうです。

米ドルで銀行振込(SWIFT)

米ドルで振り込んでもらう場合、上記同様「外貨送金受取サービス」を使うことになります。米ドルの場合の受取手数料は $25 です。また、こちらもリフティングチャージ $25 がおそらくかかります。

最後に、住信 SBI ネット銀行の口座内で円に両替する際、為替コストが 6 銭かかります[1]

よって、合計の手数料は $25 + $25 + $4,400 × 6 銭/ドル = $50 + 264 円 = 7,764 円 です。

米ドルで銀行振込(Local)Wise 経由

最後に、Wise という送金サービスを経由して受け取るルートです。わたしはこのサービスのことを全く知らなかったんですが、「PayPal 手数料」「国際送金 受け取り」「リフティングチャージ」あたりで検索して調べていたら Wise の公式ブログがバシバシヒットして、そこで知りました。SEO めちゃくちゃ強いですね。。

Wise の仕組みについては割愛しますが、公式ブログの説明がわかりやすいです。そして、この独自の仕組みによって手数料を安くできる、と謳っています。

この Wise を経由する場合、以下のような流れになります。

  1. HackerOne →(米ドル)→ アメリカにある Wise の米ドル口座
  2. アメリカにある Wise の米ドル口座から、日本にある Wise の日本円口座に両替
  3. 日本にある Wise の日本円口座 →(日本円)→ 住信 SBI ネット銀行

1. は米国内の銀行振込になるため、手数料はかかりません。2. には両替手数料が 0.5% かかります。3. は日本国内の銀行振込[2]になりますが、Wise の送金手数料が 1 回につき 200 円かかります。

したがって、手数料の合計は $4,400 × 0.5% + 200 円 = 3,500 円 になります。確かにちょっと安いですね。

一方、Wise のデメリットしては以下でしょうか。

  • アカウント登録をする必要がある。マイナンバーカードでの本人確認(eKYC)も必要で手間
  • 最初に 3,000 円を入金しておかないと、ドル口座での受け取りができない
  • Wise という銀行以外のサービスを挟むリスク

どうやって受け取るのが得なのか結論

報奨金 $4,400 を受け取る際の手数料をまとめると、以下のようになります。Wise 経由が一番安いですね。

方法 手数料
PayPal 19,800 円
日本円で銀行振込(SWIFT) 5,000 円
米ドルで銀行振込(SWIFT) 7,764 円
米ドルで銀行振込(Local)Wise 経由 3,500 円

今回は $4,400 でしたが、受け取る金額によっては「日本円で銀行振込(SWIFT)」の方が安くなりそうです。また、報奨金が複数出た場合は、まとめて受け取った方がお得です。

実際に Wise を使ってみたところでは、このような計算になりました。

ちなみに、Wise の招待リンク(こんなの)から Wise に登録すると、手数料が少し割引されるクーポンがついてきました。上の画像の「適用された割引」がそれに当たります。招待した側にもインセンティブが入るようです。

税金はかかるの?

かかります。日本の所得税・住民税を払うことになります。

アメリカでの課税

HackerOne はアメリカの企業なので、アメリカで源泉徴収が行われます。しかし、アメリカで源泉徴収されたからといって、日本での納税が免除されるわけではないので、払い損です。この二重課税を回避するためには、Form W-8BEN という書類を提出し、アメリカでの源泉徴収を免除してもらう必要があります。

https://shiodome.co.jp/hawaii/column/5284/

HackerOne の場合、最初の報奨金の金額が決まると書類の提出を求められます。W-8BEN を選択し、あとはネット上の書き方記事を参考にしながら、項目を埋めていけば完了です。

https://jp.cpb.bank/faq/about-w-8ben

日本での課税

「4,000 万円以内なら申告不要」というバグ技が一部で確認されていますが、一般国民たるわれわれの場合は、残念ながら確定申告をして所得税・住民税を納めなければなりません。

では、脆弱性報奨金はどの所得区分に分類されるのか?ということですが、今回のようなケースでは一時所得に当たりそうです。

一時所得とは、営利を目的とする継続的行為から生じた所得以外の所得で、労務や役務の対価としての性質や資産の譲渡による対価としての性質を有しない一時の所得をいいます。

https://www.nta.go.jp/taxes/shiraberu/taxanswer/shotoku/1490.htm

参考までに、サイボウズの「脆弱性報奨金ルールブック」(PDF)でも上の一時所得のページが参照されています。

確定申告に関する詳細につきましては、以下の国税庁のホームページ、「No.1900 給与所得者で確定申告が必要な人」および、「No.1490 一時所得」をご覧ください。

一時所得の場合、50 万円を控除した額が一時所得の金額になります[3]。そして、その 1/2 に所得税がかかります。報奨金を $4,400 として、これ以外の一時所得がない場合、($4,400 - 50 万円) / 2 = 8 万円 になるので、この 8 万円分に対して所得税がかかるわけですね。所得税率は課税所得の金額によって異なるため、収入や各種の控除次第で一概に言えませんが、ざっくり 5〜15% の人が多いでしょう。少し古いデータですが、下のブログのグラフを見ると所得税率と課税所得の関係が一目でわかります。

https://techoh.net/chart-of-indevidual-tax-rate-2015/#i-4

また、所得税のほかに住民税が 10% かかります。よって仮に所得税率を 10% とすると、所得税・住民税合わせて 8 万円 × (10% + 10%) = 1.6 万円 の税金を納めることになります。

ちなみに、副業としてバグハンティングに取り組んでいる場合は、「営利を目的とする継続的行為から生じた所得以外の所得」ではなくなるので、一時所得ではなく雑所得になりそうです。また、本業として行っているプロのバグハンターの場合は事業所得になり、それぞれ計算方法が変わってきます。

おわりに

この記事では、脆弱性報奨金のお金まわりについてまとめてみました。趣味や本業でやっているバグハンターの方ならいざ知らず、自分にとってはそうそうない機会なので、知らないことだらけでおもしろかったです。

脆弱性の中身や報告の仕方についての記事もいつか書きたいところですが、開示待ちです。早く開示されるといいんですが。

脚注
  1. たぶん SBI 証券を経由すれば無料にできそうです。 ↩︎

  2. Wise 上の表現では「Wise の残高からの送金」。 ↩︎

  3. 厳密には「収入を得るために支出した金額」(要は経費)も控除できますが、「たまたま脆弱性を見つけて報告」に必要な経費は特にないでしょう。 ↩︎

Social PLUS Tech Blog

Discussion