
إثبات مفهوم يوضح تشفير AES-CBC غير الآمن مع اشتقاق مفتاح MD5 في تطبيق Meesho لنظام Android، مما يتيح العبث بالنص المشفر وهجمات محتملة عبر padding oracle.
المؤلف: Soyam Arya (المعروف بـ honest_corrupt)
تاريخ الاكتشاف: مارس 2026
التطبيق المتأثر: تطبيق ميشو للأندرويد (com.meesho.supply)
الحالة: قيد التحقق
الفئة: تشفير غير كافٍ / فشل تكامل البيانات
يوثق هذا التقرير ثغرة تشفيرية في تطبيق ميشو للأندرويد حيث يتم تشفير البيانات الحساسة باستخدام AES/CBC/PKCS5Padding بدون حماية التكامل، ويتم اشتقاق مفتاح التشفير باستخدام خوارزمية التجزئة غير الآمنة MD5.
يقوم التطبيق ببناء الحمولات المشفرة بالتنسيق التالي:
Base64(IV) . Base64(ciphertext)
ومع ذلك، نظرًا لغياب المصادقة (مثل HMAC أو وضع AEAD مثل AES-GCM)، فإن التنفيذ عرضة لما يلي:
ينتهك هذا العديد من OWASP Mobile Top 10 وإرشادات MASVS للتشفير.
| الفئة | الوصف |
|---|---|
| M5: تشفير غير كافٍ | استخدام بدائيات تشفير ضعيفة (MD5، AES-CBC بدون تكامل) |
| CWE-327 | استخدام خوارزمية تشفير معطوبة أو محفوفة بالمخاطر |
| CWE-649 | الاعتماد على التشفير دون التحقق من التكامل |
| OWASP MASVS | MSTG-CRYPTO-3، MSTG-CRYPTO-4 |
كشف الهندسة العكسية عن المنطق التالي:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] iv = new byte[16];
new SecureRandom().nextBytes(iv);
SecretKeySpec key = new SecretKeySpec(
MD5(str), "AES"
);
cipher.init(ENCRYPT_MODE, key, new IvParameterSpec(iv));
String message = Base64(iv) + "." + Base64(ciphertext);
يتم إرسال الحمولة المشفرة في طلبات API على النحو التالي:
http POST /api/endpoint
message=Base64(IV).Base64(ciphertext)

اعتراض الطلب عبر Burp Suite:
` message=AbCdEfGhIj...xyz.KLMNOPQRST... ``
تغيير بايت واحد في النص المشفر:
`` الأصلي: ...KLMNOPQRST...
المعدل: ...KLMNOPQRSU... ``
--
إرسال الطلب المعدل إلى الخادم.
message| التاريخ | الحدث |
|---|---|
| مارس 2026 | اكتشاف الثغرة |
| مارس 2026 | اكتمال الهندسة العكسية |
| قيد الانتظار | إشعار البائع |
| قيد الانتظار | طلب CVE |
Soyam Arya (المعروف بـ honest_corrupt) معرفات CVE: CVE-2025-5154، CVE-2025-6748 مختبِر اختراق تطبيقات الجوال والويب