Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-12960 — CVE-2026-12960 - تصدير غير صحيح لمكونات تطبيق أندرويد في تطبيق ASUS Router (com.asus.aihome). برهان المفهوم (PoC)، APK للاستغلال، فيديو، وتقرير البائع. تم الإصلاح في 1.0.0.9.74. | Kitploit
أدوات/GitHubGitHub/l0lsec/cve-2026-12960
أمان أندرويدتحليل الثغرات الأمنيةالاستغلالاختبار اختراق تطبيقات الجوالاختبار الاختراقأمن الجوال
GitHubl0lsec/cve-2026-12960

CVE-2026-12960

CVE-2026-12960 - تصدير غير صحيح لمكونات تطبيق أندرويد في تطبيق ASUS Router (com.asus.aihome). برهان المفهوم (PoC)، APK للاستغلال، فيديو، وتقرير البائع. تم الإصلاح في 1.0.0.9.74.

عرض المستودع
منذ 27 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

CVE-2026-12960

تصدير غير سليم لمكوّنات تطبيق أندرويد في تطبيق ASUS Router

كان أحد المكوّنات المضمّنة في تطبيق ASUS Router لنظام أندرويد (com.asus.aihome) مُعرَّفًا بالسمة android:exported="true" دون أي android:permission. ويستطيع أي تطبيق آخر على الجهاز نفسه، دون أن يمتلك أي أذونات، إرسال Intent مخصّص إليه وجعل تطبيق ASUS Router يفتح URI يتحكم فيه المهاجم بالنيابة عن المستخدم.

أُبلغت ASUS في 2026-03-17. أصلحته ASUS ونُشر كـ CVE-2026-12960 في 2026-07-03.

اكتشفه وبلّغ عنه Sedric Louissaint من Show Up Show Out Security.


ملخص

CVECVE-2026-12960
المنتجتطبيق ASUS Router لنظام أندرويد (com.asus.aihome)
المتأثر≤ 1.0.0.9.71
أُصلح في1.0.0.9.74
الضعفCWE-926: التصدير غير السليم لمكوّنات تطبيق أندرويد
CVSS 4.06.0 متوسط CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N
CNAASUS
إشعار البائعhttps://www.asus.com/security-advisory/
اختُبر علىcom.asus.aihome 1.0.0.9.71 (Google Play)، محاكي Android 11

التفاصيل الفنية

يضمّ التطبيق Baidu Push SDK، الذي يصرّح بما يلي:

root@kitploit:~
<service
    android:name="com.baidu.android.pushservice.CommandService"
    android:exported="true" />

لا توجد سمة android:permission، لذا لا يعمل التحكم في الوصول على مستوى المكوّنات في أندرويد أبدًا. يمكن لأي تطبيق مثبّت استدعاء startService() عليه.

يقرأ CommandService.onStartCommand() كائن PublicMsg القابل للـ Parcelable من الحقل الإضافي public_msg في الـ Intent الوارد ويمرّره إلى handlePrivateNotification()، التي تتفرّع بناءً على الحقل mOpenType الذي يوفّره المهاجم:

mOpenTypeالسلوك
1startActivity(ACTION_VIEW, Uri.parse(mUrl)) مع mUrl الخاص بالمهاجم

لا يتم التحقق من المرسل ولا من الحمولة. ولأن النشاط الناتج يُطلق من UID وعملية تطبيق ASUS نفسه، فإن كل ما يظهر على الشاشة يبدو وكأنه صادر من تطبيق إدارة الموجّه الموثوق الذي فتحه المستخدم للتو.

لا شيء في هذا خاص بـ Baidu من حيث الأثر. إذ يوفّر الـ SDK المكوّن المُصدَّر، ويرثه التطبيق المضيف، وهوّية التطبيق المضيف هي ما يُستعار.

سلسلة الهجوم

  1. ينشئ تطبيق خبيث كائن PublicMsg القابل للـ Parcelable مطابقًا لتخطيط حقول الهدف.
  2. يضبط mOpenType = 1 وmUrl على URI يتحكم فيه المهاجم.
  3. يرسل الـ Intent إلى CommandService. لا يتطلب أي إذن، ولا يُلقى أي SecurityException.
  4. onStartCommand() → handlePrivateNotification().
  5. يُطلق startActivity(ACTION_VIEW, Uri.parse(mUrl)) من عملية تطبيق ASUS.

ترتيب حقول PublicMsg، المستخرج من writeToParcel في smali مفكك الترجمة وأعيد تنفيذه في poc/PublicMsg.java:

root@kitploit:~
String mMsgId, mAppId, mTitle, mDescription, mUrl, mPkgName
int    mPkgVercode, mNotificationBuilder, mNotificationBasicStyle
int    mOpenType, mUserConfirm
String mCustomContent, mPkgContent
int    mAdvertiseStyle
String mAdvertiseSmallIconUrl, mAdvertiseLargeIconUrl, mAdvertiseClickUrl,
       mAdvertiseBigPictureUrl, mAdvertiseBigPictureClickUrl, mAdvertiseDownloadClickUrl

إذا أخطأت الترتيب، يفكّ الـ Parcel الترميز إلى بيانات غير صالحة. وإذا أصبت الترتيب، يقبل الخدمة الرسالة كما لو كانت بنية الدفع الخاصة بـ Baidu هي من أرسلها.

الحمولات المُثبَتة

ستة مخططات URI، وخدمة واحدة مُصدَّرة، وصفر أذونات:

إثبات المفهوم

media/poc_commandservice.mp4 هو التسجيل الكامل لـ 31 ثانية: البناء، التثبيت، الإطلاق، وتفاعل المحاكي مع كل حمولة تباعًا.

الهجوم 1: صفحة تصيّدالهجوم 2: محرر SMSالهجوم 3: مُطلِق الاتصالأذونات تطبيق إثبات المفهوم
المتصفح مفتوح على عنوان URL للمهاجممحرر SMS معبأ مسبقًا بتنبيه أمني مزيف من ASUS

تلك اللقطة الأخيرة هي الحجة كلها. لم يُطلب أي أذونات. التطبيق الذي قاد للتو ستة إجراءات عبر تطبيق ASUS Router لم يطلب من المستخدم شيئًا على الإطلاق.

إعادة الإنتاج

يتطلب ADB وJDK وأدوات بناء Android SDK (aapt2 وd8/dx وzipalign وapksigner) بالإضافة إلى platforms;android-30.

root@kitploit:~
./poc/poc_commandservice_exploit.sh <device_serial>

ينفّذ السكربت ثلاث مراحل:

  1. فحص الوصول. يرسل إجراءات CommandService الثلاثة من com.android.shell ويبلّغ عما إذا كان أي منها مرفوضًا. الخدمة المحمية بإذن ترمي SecurityException هنا. هذه الخدمة قبلت الثلاثة.
  2. البناء. يترجم إثبات المفهوم، ويحزم ويوقّع exploit_commandservice.apk، ويثبّته. توجد نسخة مبنية مسبقًا في poc/ إذا فضّلت تخطي هذه الخطوة.
  3. التنفيذ. يُحضر تطبيق ASUS إلى المقدمة، ويُطلق إثبات المفهوم من سياق تطبيق غير مميز، ويلتقط أدلة logcat.

مخرجات المرحلة 1 على جهاز معرّض للثغرة:

root@kitploit:~
[ACCESS]  passthrough.notification.CLICK → service accepted intent
[ACCESS]  privatenotification.CLICK      → service accepted intent
[ACCESS]  privatenotification.DELETE     → service accepted intent

  Phase 1 result: 3/3 actions accepted without permission check

وكائن ServiceRecord من dumpsys activity services، الذي يسجّل المُستدعي:

root@kitploit:~
intent={act=com.baidu.android.pushservice.action.privatenotification.CLICK
        cmp=com.asus.aihome/com.baidu.android.pushservice.CommandService}
recentCallingPackage=com.android.shell
startRequested=true callStart=true

المرحلة 3، من تطبيق حقيقي غير مميز بدلًا من الصدفة:

root@kitploit:~
W PoCExploit: [OK] attack1_url_open → com.asus.aihome/com.baidu.android.pushservice.CommandService
W PoCExploit: [OK] attack2_sms_compose → ...
(all 6 succeed)

أعاد startService() ComponentName الهدف بدلًا من null، ولم يُلقَ أي SecurityException. حلل أندرويد الـ Intent وسلّمه.

محتويات المستودع

root@kitploit:~
poc/
  poc_commandservice_exploit.sh   Automated three-phase reproduction script
  ExploitCommandService.java      PoC activity + broadcast receiver source
  PublicMsg.java                  Parcelable matching the target's field layout
  AndroidManifest_PoC.xml         PoC manifest (note: no <uses-permission>)
  exploit_commandservice.apk      Prebuilt PoC, debug-signed, zero permissions
media/
  poc_commandservice.mp4          Full PoC recording
  attack1-browser.jpg             Stills pulled from the recording
  attack2-sms.jpg
  attack3-dialer.jpg
  poc-app-no-permissions.jpg
vendor/
  asus-security-advisory-submission.pdf   The report as filed with ASUS

عنوان URL الصادر من إثبات المفهوم هو نطاق فرعي من Burp Collaborator استُخدم لتأكيد حدوث التنقل فعلًا. لم يعد صالحًا منذ زمن. استبدله بآخر خاص بك إذا كنت تعيد الإنتاج.

المعالجة

بالنسبة للبائع، الإصلاح هو سمة واحدة:

root@kitploit:~
<service
    android:name="com.baidu.android.pushservice.CommandService"
    android:exported="false" />

أو، إذا كان لا بد فعليًا من أن يكون المكوّن قابلًا للوصول من الخارج، فاحمه بإذن بمستوى حماية signature وتحقق من PublicMsg بعد إزالة التسلسل قبل التعامل معه. أصدرت ASUS الإصلاح في 1.0.0.9.74.

للمستخدمين: حدّث تطبيق ASUS Router إلى 1.0.0.9.74 أو أحدث.

ولأي شخص آخر يُصدر تطبيقات أندرويد: راجع ما تصدّره حزم SDK التابعة لجهات خارجية. شغّل aapt dump xmltree base.apk AndroidManifest.xml على نسخة الإصدار الخاصة بك واقرأ كل exported="true" فيه. البيان الذي تصدره هو مجموع كل بيان دمجته، وأنت مسؤول عنه بالكامل.

الجدول الزمني

التاريخالحدث
2026-03-17أُبلغت ASUS مع APK لإثبات المفهوم وسكربت آلي وفيديو
2026-06-23حجزت ASUS CVE-2026-12960 بصفتها CNA
2026-07-03نُشر CVE؛ الإصلاح متاح في 1.0.0.9.74
2026-07-25نُشر التوثيق العام وإثبات المفهوم

التوثيقات

  • الحساب الشخصي: https://sedriclouissaint.com/blog/asus-router-app-exported-commandservice-cve-2026-12960
  • Show Up Show Out Security: https://susos.co/blog/improper-export-of-android-components-in-the-asus-router-app-cve-2026-12960

إخلاء مسؤولية

نُشر بعد إفصاح منسّق وإصلاح من البائع، للاستخدام الدفاعي والتعليمي. يستهدف إثبات المفهوم نسخة مصححة ولا يفعل شيئًا سوى إطلاق URIs. لا تشغّله على أجهزة لا تملكها أو ليس لديك إذن كتابي لاختبارها.

تنزيل الأداة
2Intent.parseUri(mPkgContent, 0) ثم startActivity() / sendBroadcast()
#المخططالنتيجة
1https:يفتح المتصفح صفحة تصيّد يتحكم فيها المهاجم
2sms:محرر SMS معبأ مسبقًا برسالة هندسة اجتماعية
3tel:مُطلِق الاتصال معبأ مسبقًا برقم يتحكم فيه المهاجم
4mailto:محرر البريد معبأ مسبقًا لسرقة بيانات الاعتماد
5market:إعادة توجيه متجر Play لتثبيت برمجية خبيثة
6geo:إعادة توجيه الخرائط إلى مركز خدمة مزيف
مُطلِق الاتصال معبأ مسبقًا برقم المهاجم
شاشة معلومات تطبيق أندرويد تعرض "لم يُطلب أي أذونات"