web-dev-qa-db-ja.com

Androidアプリケーションがクロスサイトスクリプティング(XSS)に対して脆弱である理由は何ですか?

XSSの定義

Webを検索する場合、クロスサイトスクリプティング攻撃を定義するにはさまざまな方法があります。簡単に言うと、XSSの脆弱性は、悪意のある攻撃者がクライアント側のスクリプトをWebサイトに挿入することを許可された場合に発生します。このWebサイトは、攻撃の犠牲者となる他の人に見られます。

Android O.S内のXSSバグの例==

脆弱性の詳細

巧妙なインテントをChromeに送信すると、悪意のあるAndroidアプリはJavaScript:URIをChromeにロードされた任意のWebページに挿入できます。挿入されたJavaScriptはコンテキスト内で機能します空白のドメインではなく、ターゲットWebページのドメインのCookieの盗難などに使用される可能性があります。このような脆弱性は、クロスアプリケーションスクリプトと呼ばれることがよくあります。

バージョン

Chromeのバージョン:Chrome for Android v18.0.1025123オペレーティングシステム:Android 4.0.4(Samsung Galaxy Nexus)で確認済み)

再現ケース

悪質なAndroidアプリのサンプルコードが添付されています。

この問題は2012年7月7日に当初[email protected]に報告されましたが、最近、この問題はChromiumバグデータベースに登録されていない可能性があるとGoogleセキュリティチームから聞きました。そこで、Chromeバグを報告するための正当な場所であるはずの問題をここに再送信します。

私の質問

クロスサイトスクリプティングとは何かクロスサイトスクリプティングがどのように行われるか。わかりませんAndroidコードがこのような攻撃に対して脆弱なコードを選択する要因は何ですか。

6
user77088

具体的な例はクロスサイトスクリプティングではなく、クロスアプリスクリプティングです。 Androidアプリは、特別に細工されたインテントを使用して、別のアプリ(この例ではChrome)に、その(Chromeの)コンテキストでスクリプトを実行させることができます。

これにより、プライバシーおよび認証メカニズムが悪用される可能性があります。私が何かを見逃していない場合、この脆弱性(Chromeかなり前に修正済み)により、ユーザーの銀行との開かれたWebセッションをハイジャックして送金を承認することができました。

これは少し誇張されています。通常の銀行のWebサイトはこのような攻撃から保護されています。機密性の高い操作を完了するには、ユーザーの確認(つまりパスワードの再入力)が必要です。

Chromeの問題は、サードパーティアプリがインテントエクストラを介して自分自身になりすますことを許可し、十分な検証を実行しなかったことでした。これはAndroid OSであり、デバイス上のランダムなアプリに対して統計的に使用できるエクスプロイトではなく、保護されていないアプリを見つけます。

1
Alex Cohn