TL;DR
- カカオトーク
10.4.3 バージョンには、リモート攻撃者が WebView で任意の JavaScript を実行し、HTTP リクエストヘッダー内のアクセストークンを漏えいさせられるディープリンク検証の問題がある。
- このトークンを使うことで、他のユーザーのアカウントを乗っ取り、攻撃者が制御するデバイスに登録してチャットメッセージを読める。
- このバグには CVE-2023-51219 が割り当てられている。
背景
- カカオトークは、1億件以上のダウンロードを記録した韓国で最も人気のあるチャットアプリである。
- カカオトークはデフォルトではエンドツーエンド暗号化(E2EE)を使用していない。
- "Secure Chat" というオプションの E2EE 機能はあるが、グループメッセージングや音声通話には対応していない。
Entry Point: CommerceBuyActivity
CommerceBuyActivity WebView は、攻撃者にとって注目すべき主要な侵入経路である。
- ディープリンクで起動可能(
adb shell am start kakaotalk://buy)
- JavaScript が有効化されている(
settings.setJavaScriptEnabled(true);)
intent:// スキームをサポートしており、他の非公開アプリコンポーネントへデータを送信できる。
intent:// URI の検証が不十分で、潜在的にすべてのアプリコンポーネントへアクセス可能。
Authorization HTTP ヘッダーにアクセストークンを漏えいさせる。
URL リダイレクトによる DOM XSS
ディープリンクによるカカオメールアカウント乗っ取り
- 悪意のあるディープリンクを通じて、ユーザーのアクセストークンを攻撃者のサーバーへ送信できる。
- アクセストークンを使って被害者のカカオメールアカウントを乗っ取ったり、新しいメールアカウントを作成して既存のメールアドレスを上書きしたりできる。
Burp を使ったカカオトークのパスワードリセット
- 被害者のカカオメールアカウントにアクセスし、パスワードリセットを試みることができる。
- 2段階認証(2FA)を回避するために、Burp を使ってリクエストを傍受・改変する。
PoC
- 攻撃者が悪意のあるディープリンクを用意し、被害者がクリックするとアクセストークンが漏えいする。
- 漏えいしたアクセストークンを使って被害者のパスワードをリセットし、攻撃者のデバイスを被害者のカカオトークアカウントに登録する。
Takeaways
- 依然として、複雑ではない攻撃チェーンでユーザーのメッセージを奪取できる人気チャットアプリが存在する。
- アプリ開発者がいくつかの単純なミスをすると、Android の強力なセキュリティモデルやメッセージ暗号化も役に立たない。
- アジアのチャットアプリは、セキュリティ研究コミュニティで依然として過小評価されている。
GN⁺の見解
- セキュリティ脆弱性の深刻さ: カカオトークのような大衆的なアプリで見つかったセキュリティ脆弱性は、ユーザーデータ保護の重要性をあらためて思い起こさせる。
- 開発者の責任: アプリ開発者はセキュリティ検証を徹底し、特に機密データに関わる機能ではさらに注意を払う必要がある。
- ユーザー教育: ユーザー側も不審なリンクをクリックしないよう注意し、2段階認証を有効にするなど、セキュリティ意識を高めるべきである。
- セキュリティ研究の必要性: アジアのチャットアプリに対するセキュリティ研究はさらに活発に行われるべきであり、それによってより多くの脆弱性を事前に発見・修正できる。
- 代替案の提示: カカオトーク以外にも、Signal や Telegram のようなセキュリティ重視のメッセージングアプリを検討できる。
まだコメントはありません。