2015 年 脆弱性報奨金制度を振り返って

Cy-SIRT の伊藤です。

2015 年にサイボウズにご報告いただいた脆弱性情報について、全ての評価が完了しました。 お時間をいただき申し訳ありませんでした。今日は、2015 年の最終結果についてご報告いたします。

定量情報

f:id:cybozuinsideout:20160415173959j:plain ※ 最終的に認定されなかった件数を含む場合:174 件

f:id:cybozuinsideout:20160415174007j:plain ※ 最終的に認定されなかった件数を含む場合:126 件

数値の見方

サイボウズでは脆弱性情報を、以下のフローで取り扱っています。
f:id:cybozuinsideout:20160418172348j:plain

外部からお寄せいただいた脆弱性情報は、受付 > 検証 のプロセスを経て、脆弱性の認定手続きに進みます。受付および、検証のプロセスではお寄せいただいた情報が、脆弱性情報であるかどうかを判断しています。 「脆弱性報告件数」は、サイボウズが脆弱性情報と判断したご連絡の件数です。
「脆弱性認定件数」は、お寄せいただいた脆弱性情報の中から、脆弱性として認定した件数です。脆弱性情報がサイボウズに着信した「着信日」を基準とし、各年の報奨金制度の開催期間ごとに集計しています。最終的に脆弱性としては認定されなかった脆弱性情報であっても、報奨金の支払い対象となることがあるため、参考情報として記載しています。

2015 年報奨金獲得額ランキング

f:id:cybozuinsideout:20160415171557j:plain

2015 年に報告いただいた脆弱性情報によって、獲得した報奨金の金額が最も多かったのは、 小勝 純 様でした。おめでとうございます!

2015 年のトレンド

f:id:cybozuinsideout:20160415172459j:plain

2015 年は昨年と比較すると、深刻な脆弱性情報の件数は減少しました。代わりにサイボウズがこれまで脆弱性として認定して来なかった脆弱性について報告いただくことが増え、認定可否を議論することが増えた印象があります。

ここでは例として「CSV Excel Macro Injection (CEMI)」と呼ばれる脆弱性についてご紹介します。

CSVマクロインジェクション

CSV ExcelマクロインジェクションはOWASPのドキュメントには下記のように記載されています。 https://www.owasp.org/index.php/CSV_Excel_Macro_Injection

多くのWebアプリケーションは、ユーザーに対してユーザー設定などのテンプレートをダウンロードすることを許可している。 
また多くのユーザーはExcel(もしくはLibre OfficeやOpen Office)でCSVファイルを開くことを選択する。
WebアプリケーションがCSVファイルの中身を正しく検証していない場合、セルに入力された内容がマクロとして実行される可能性がある。

CSV Excelマクロインジェクション攻撃は、ユーザーの信頼を悪用した攻撃手法である:
・ここでいう「ユーザーの信頼」とは
1.ユーザーはコンテンツの置いてあるサイトを信頼している
2.ユーザーは(ダウンロードしたファイルが)単なるCSVファイルであること、ファイルに関数やマクロが含まれていないと考える
(よって、ファイル内の潜在的な悪意ある機能についてExcelからの任意の警告を気にとめない)

※ 伊藤による意訳となります。

サイボウズでは他社様の事例として、改修されているケースがあることを確認しています。

90131 CSV Excel Macro Injection Vulnerability in export customer tickets

Zendesk rewarded psychomantis with a $100 bounty for CSV Excel Macro Injection Vulnerability in export customer tickets.
Zendesk resolved CSV Excel Macro Injection Vulnerability in export customer tickets that was submitted by psychomantis.
https://hackerone.com/reports/90131

サイボウズではこの脆弱性について認定するかどうかを検討しました。

この脆弱性が顕在化しないようにするには、製品から出力される CSV データを改変する必要があります。具体的にはセル内のデータが =, +, - から始まる場合に、セルの先頭にシングルクォートを入れることになるのですが、そうした場合、CSV の先頭をそれらの文字から始めることができません。この対策方法は、特に "-" (マイナス)については頻出するため、許容することはできないと判断しました。本件についてマイクロソフト様の Excel の仕様についても伺いましたが、以下のような回答をいただいています。

ご報告いただきました動作は、ユーザーがマクロを有効にする必要があることから、本件は脆弱性ではないと判断しております。
弊社が考えております脆弱性の説明およびセキュリティに関する鉄則は、以下も併せてご参照ください。

「セキュリティの脆弱性」の定義
http://technet.microsoft.com/ja-jp/library/gg983510.aspx

セキュリティに関する 10 の鉄則
https://technet.microsoft.com/ja-jp/library/gg983506.aspx#E1

これらを考慮し、最終的には、CSV Excel Macro Injectionの問題を弊社としては脆弱性としては扱わないことといたしました。

脆弱性評価におけるサイボウズの取り組み

サイボウズではサイボウズ製品を通しての統一感を作ること、車輪の再発明を行わないことを目的として、2008 年から「共通仕様」と呼ばれる全製品が守ることを期待される仕様を策定しています。セキュリティに関する仕様も、この枠組みの中で複数の仕様を策定しています。具体的には、各種セキュリティヘッダーの出力方法やファイルダウンロードAPIの仕様などが上げられます。
共通仕様を定めることで、同種の脆弱性の再発を防止でき、脆弱性の認定にかかる時間を短縮する効果もあります。

共通仕様を定めるのは、「Tech Lead Meeting(TLM)」と呼ばれる会議体です。開発本部副本部長、各チームの開発責任者、Cy-SIRT 担当者、その他アドバイザーとして数名が参加しており、オンライン上で随時議論しつつ、月に1度オフラインでミーティングを開催しています。脆弱性認定についても新しい攻撃方法については、この会議体で議論を行い、必要に応じて「共通仕様」として各製品で順守すべき仕様として定義をしています。CEMI についても、Cy-SIRT と TLM が議論をする中で上記の見解を出すに至りました。

終わりに

サイボウズでは 2016 年も継続して脆弱性報奨金制度を運営しています。今年も複数の脆弱性報告をいただいております。

サイボウズ脆弱性報奨金制度
http://cybozu.co.jp/company/security/bug-bounty/

ぜひ、多くの方のご参加をお待ちしております。