blog of morioka12

morioka12のブログ (Security Blog)

バグバウンティにおける Critical な脆弱性報告の事例まとめ

1. 始めに

こんにちは、morioka12 です。

本稿では、バグバウンティで実際に報告されている危険度が Critical (致命的)な Web アプリケーションの脆弱性について事例をもとに紹介します。


免責事項

本稿の内容は、セキュリティに関する知見を広く共有する目的で執筆されており、悪用行為を推奨するものではありません。

想定読者

  • セキュリティ初心者・中堅者
  • バグバウンティに興味がある方
  • リアルワールドで Critical な脆弱性を発見したい方
  • 脆弱性を報告して高額な報酬金を取得したい方

Critical な脆弱性

バグバウンティにおいて報告した脆弱性は、脆弱性の深刻度を示す重大度(Severity)が付けられて、基本的に CVSS (Common Vulnerability Scoring System, 共通脆弱性評価システム)によって判断します。

今回紹介する Critical な脆弱性は、CVSS のスコアが「9.0 ~ 10.0」な脆弱性を指します。

Severity Score
Critical 9.0 ~ 10.0
High 7.0 ~ 8.9
Medium 4.0 ~ 6.9
Low 0.1 ~ 3.9
None 0.0

docs.hackerone.com

www.bugcrowd.com

CVSS

CVSS は、主に以下のような観点で判断されます。

基本評価基準 (Base Metrics)

  • 攻撃の難易度を評価する項目
    • 攻撃元区分 (AV:Attack Vector)
    • 攻撃条件の複雑さ (AC:Attack Complexity)
    • 必要な特権レベル (PR:Privileges Required)
    • ユーザ関与レベル (UI:User Interaction)
  • 攻撃の影響度を評価する項目
    • 機密性への影響/情報漏えいの可能性 (C:Confidentiality Impact)
    • 完全性への影響/情報改ざんの可能性 (I:Integrity Impact)
    • 可用性への影響/業務停止の可能性 (A:Availability Impact)
  • 影響範囲の拡大の有無を評価する項目
    • スコープ (S:Scope)


また、CVSS のスコアが「9.0 ~ 10.0」になる脆弱性は、特に以下の観点が可能かで判定されたりします。

  • 特定の条件を必要とせずに、常に対象の Web アプリケーションに脆弱性攻撃が可能であるか
    • 評価が下がる例)
      • 特定のユーザーにのみ, 特定の設定の場合のみ
      • 特定の操作を他人にしてもらう必要がある場合
      • 事前に特定の情報収集がいくつか必要な場合
  • 対象の Web アプリケーションで機密情報を取得することが可能であるか
    • 機密情報の例)
      • 他人のアカウントの個人情報
      • Web アプリケーションで使われている有効な API Keyやクレデンシャル
      • Web アプリケーションやシステムに関する情報
  • 対象の Web アプリケーションで重要な情報を改ざんすることが可能であるか
    • 重要な情報の例)
      • 他人のアカウント情報
      • Web アプリケーションやシステムに関する情報

www.ipa.go.jp


2. Critical な脆弱性報告の事例

今回は、HackerOne の Hacktivity で報告されている Critical なレポートや、X (Twitter)で見かけられる事例をいくつか選んで紹介します。

基本的には、報酬金(Bounty)の獲得まで至っている報告事例を選んでいます。


XSS (Cross-site Scripting)

XSS は、主にアカウントの乗っ取り(Account Takeover)や他のユーザーの重要な情報の改ざんなどがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • Stored XSS in markdown via the DesignReferenceFilter
    • Bounty: $16,000

hackerone.com

  • Blind XSS on image upload
    • Bounty: $1,000

hackerone.com

  • Multiple XSS on account settings that can hijack any users in the company.
    • Bounty: $700

hackerone.com

  • XSS in steam react chat client
    • Bounty: $7,500

hackerone.com

  • Web Cache Poisoning leading to 0 click ATO via Stored XSS

  • Blind XSS Leads To Employee User Details Leaked And Potential Account Takeover


SQL Injection

SQL Injection は、主にデータベースから機密情報の取得・改ざんなどがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • SQL Injection in report_xml.php through countryFilter[] parameter
    • Bounty: $25,000

hackerone.com

  • SQL injection on contactws.contact-sys.com in TScenObject action ScenObjects leads to remote code execution

hackerone.com

  • SQLi lead to dump full database on ~
    • Bounty: $2,500

  • SQL Injection On ~ Parameter [offset]

  • Easy Password for admin account: ~ Time Based SQL Injection

  • Error Based SQL-Injection with manual WAF bypass


Command Injection

Command Injection は、主に任意コードの実行(RCE)などがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • Apache Flink RCE via GET jar/plan API Endpoint
    • Bounty $6,000

hackerone.com

  • Remote code execution on Basecamp.com
    • Bounty: $5,000

hackerone.com

  • Local files could be overwritten in GitLab, leading to remote command execution
    • Bounty: $12,000

hackerone.com

  • SSTI leading to RCE


SSRF (Server Side Request Forgery)

SSRF は、主に内部サーバーから機密情報の取得やクラウドインスタンスメタデータの取得などがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • Server Side Request Forgery (SSRF) via Analytics Reports

hackerone.com

  • SSRF via Office file thumbnails
    • Bounty: $4,000

hackerone.com

  • Full read SSRF via Lark Docs import as docs feature
    • Bounty: $5,000

hackerone.com

  • Stored XSS & SSRF in Lark Docs
    • Bounty: $3,000

hackerone.com


Path Traversal

Path Traversal は、主に機密情報を含むファイルの取得がインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • Arbitrary file read via the bulk imports UploadsPipeline
    • Bounty: $29,000

hackerone.com

  • Arbitrary file read during project import
    • Bounty: $16,000

hackerone.com


Code Injection

Code Injection は、主に任意コードの実行(RCE)などがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • RCE when removing metadata with ExifTool
    • Bounty: $20,000

hackerone.com

  • RCE due to ImageTragick v2
    • Bounty: $2,000

hackerone.com

  • RCE via npm misconfig -- installing internal libraries from the public registry
    • Bounty: $30,000

hackerone.com

  • Git flag injection - local file overwrite to remote code execution
    • Bounty: $12,000

hackerone.com

  • Git flag injection leading to file overwrite and potential remote code execution
    • Bounty: $3,500

hackerone.com

  • Remote Code Execution (RCE) Vulnerability with File Upload
    • Bounty: $1,500


XXE (XML External Entitie)

XXE は、主に SSRF や任意コードの実行(RCE)などがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • LFI and SSRF via XXE in emblem editor
    • Bounty: $1,500

hackerone.com


Insecure Deserialization

  • Remote code execution on rubygems.org
    • Bounty: $1,500

hackerone.com


Improper Access Control

Improper Access Control は、主に機密情報の取得・改ざんやアカウントの乗っ取りなどがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • One-click account hijack for anyone using Apple sign-in with Reddit, due to response-type switch + leaking href to XSS on www.redditmedia.com
    • Bounty: $10,000

hackerone.com

  • Getting all the CD keys of any game
    • Bounty: $20,000

hackerone.com


IDOR (Insecure Direct Object Reference)

IDOR は、主に機密情報の取得・改ざんやアカウントの乗っ取りなどがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • Steal private objects of other projects via project import
    • Bounty: $20,000

hackerone.com

  • Private objects exposed through project import
    • Bounty: $20,000

hackerone.com

  • Email change or personal data change on the account.
    • Bounty: $3,000

hackerone.com

  • IDOR leads to read all users PII Informations and card details in
    • Bounty: $1,500

  • IDOR due to flawed signature verification of JWT can lead to various vulnerabilites
    • Bounty: $6,000

  • ~IDOR Allows Read/Write Access ~
    • Bounty: $10,000


Improper Authentication

Improper Authentication は、主に機密情報の取得・改ざんやアカウントの乗っ取りなどがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • Incorrect authorization to the intelbot service leading to ticket information
    • Bounty: $15,000

hackerone.com

  • Critical full compromise of jarvis-new.urbanclap.com via weak session signing
    • Bounty: $1,500

hackerone.com

  • H1514 [*.(my)shopify.com] - Viewing Password Protected Content
    • Bounty: $3,000

hackerone.com

  • User able to access company details in yrityspalvelu without proper permissions
    • Bounty: $2,000

hackerone.com

  • Shopify admin authentication bypass using partners.shopify.com
    • Bounty: $20,000

hackerone.com

  • ~ Administrator portal access allows for ~ security setting manipulation and a large PII leak consisting of ~

  • ~ web console Default login credentials


Privilege Escalation

  • Remote Code Execution in coming Kibana 7.7.0
    • Bounty: $5,000

hackerone.com

  • Remote Code Execution on Cloud via latest Kibana 7.6.2
    • Bounty: $10,000

hackerone.com

  • Project Template functionality can be used to copy private project data, such as repository, confidential issues, snippets, and merge requests
    • Bounty: $12,000

hackerone.com

  • Worker container escape lead to arbitrary file reading in host machine [again]
    • Bounty: $2,000

hackerone.com

  • Worker container escape lead to arbitrary file reading in host machine
    • Bounty: $2,000

hackerone.com


Information Disclosure

Information Disclosure は、主に機密情報の取得・改ざんなどがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • JSON serialization of any Project model results in all Runner tokens being exposed through Quick Actions
    • Bounty: $12,000

hackerone.com

  • API Key leakage leads to Pll ~
    • Bounty: $3,000

  • IDOR
    • Bounty: $1,500


Information Exposure

Information Exposure は、主に機密情報の取得がインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • Full Data Sensitive Data Exposure Leak!
    • Bounty: €2,500


Authentication Bypass

Improper Authentication は、主に認証機能の回避やアカウントの乗っ取りなどがインパクトとして実際に可能であれば、Critical な報告になる可能性があります。

  • Mass Account Takeover at https://app.taxjar.com/ - No user Interaction
    • Bounty: $11,500

hackerone.com


HTTP Request Smuggling

  • HTTP Request Smuggling via HTTP/2
    • Bounty: $7,500

hackerone.com

  • HTTP request smuggling on Basecamp 2 allows web cache poisoning
    • Bounty: $1,700

hackerone.com

  • Unauthenticated request smuggling on launchpad.37signals.com
    • Bounty: $1,737

hackerone.com


Race Condition

  • Ability to bypass partner email confirmation to take over any store given an employee email
    • Bounty: $15,250

hackerone.com


Business Logic Errors

  • Modify in-flight data to payment provider Smart2Pay
    • Bounty: $7,500

hackerone.com

  • Double Payout via PayPal
    • Bounty: $10,000

hackerone.com


Misconfiguration

  • ~
    • Bounty: $10,000


3. まとめ

以上に報告事例から、脆弱性攻撃により主に以下のようなことが実際に可能な場合に Critical な脆弱性と認定される可能性があります。

  • アカウントの乗っ取り
    • XSS, Improper Authentication, Privilege Escalation, Authentication Bypass
  • 個人情報の取得・改ざん
    • XSS, SQL Injection, Improper Access Control, IDOR, Privilege Escalation, Information Disclosure, Information Exposure
  • 機密情報の取得(露出)・改ざん
    • Path Traversal, Improper Access Control, Improper Authentication
  • 任意コードの実行
    • SQL Injection, Command Injection, SSRF, Code Injection, XXE, Insecure Deserialization, Privilege Escalation


また、初心者が初めて Critical な脆弱性を発見したい場合は、例として主に以下のような点を確認すると良いと思います。

  • XSS
    • XSS で他人の Cookie などを取得して、アカウントの乗っ取りまでできるか
    • 重要な処理をするエンドポイントや API を活用して、XSS で他人のパスワードやメールアドレスなどを改ざんして、アカウントの乗っ取りまでできるか
  • SQL Injection
    • SQLi でデータベースにアクセスして、実際に機密情報が取得できるか
  • SSRF
  • Path Traversal
    • PathTrav で実際にシステムファイルやハードコードされた設定ファイルなどの機密情報となるファイルが取得できるか
  • Improper Access Control, IDOR, Improper Authentication
    • アクセス制御の不備系で、実際に個人情報などの機密情報が取得できるか・改ざんできるか・アカウントの乗っ取りまでできるか
  • Information Disclosure, Information Exposure
    • 情報の開示で、実際に有効な API Key や設定ファイル、個人情報などの機密情報が取得できるか

ちなみに、こういった Critical な脆弱性の検証をする際は、対象は本番環境がほとんどのため、慎重に検証する必要があります。

参考までに、以下の注意点を確認してみてください。

https://scgajge12.hatenablog.com/entry/bugbounty_beginner#%E6%B3%A8%E6%84%8F%E7%82%B9


4. その他

HackerOne Hacktivity

HackerOne では、報告された脆弱性のレポートが公開されたら、以下の Hacktivity で公開されます。

hackerone.com

github.com


バグバウンティ入門(始め方)

バグバウンティの始め方については、以下のブログで紹介しているため、こちらもぜひご覧ください。

scgajge12.hatenablog.com


5. 終わりに

本稿では、バグバウンティで実際に報告されている危険度が Critical (致命的)な Web アプリケーションの脆弱性について事例をもとに紹介しました。

バグバウンティにおいて、先人のバグハンターがどういった点を脆弱性として報告されているかの事例を知ることは、観点としてとても大切です。

ぜひ、過去の報告書を拝見して、指摘事項や観点、考え方などを参考にしてみてください。

ここまでお読みいただきありがとうございました。