خبراء جامعة كامبريدج قاموا بوصف ثغرة يقولون إنها تؤثر على معظم مجمعي البيانات المعاصرين. تستخدم طريقة الهجوم الجديدة ميزة مشروعة لأدوات التطوير، حيث تعرض شفرة المصدر شيئًا واحدًا ولكنها تجمع شيئًا مختلفًا تمامًا. يحدث ذلك من خلال سحر أحرف التحكم في التمييز الموحد (Unicode).
أحرف تنسيق اتجاهات Unicode ذات الصلة بإعادة ترتيب الهجمات.
في معظم الأحيان، لا تظهر أحرف التحكم على الشاشة مع باقي الشفرة (على الرغم من أن بعض المحررين يعرضونها)، لكنهم يعدلون النص بطريقة ما. هذه الطاولة تحتوي، على سبيل المثال؛ على شفرات خوارزمية Unicode ثنائية الاتجاه (bidi).
كما تعلم في الغالب؛ تتم كتابة بعض اللغات البشرية من اليسار إلى اليمين (على سبيل المثال، الإنجليزية)، والبعض الآخر من اليمين إلى اليسار (على سبيل المثال، العربية). عندما تحتوي الشفرة على لغة واحدة فقط، فلا توجد مشكلة، ولكن عند الضرورة – عندما يحتوي سطر واحد، على سبيل المثال، على كلمات باللغتين الإنجليزية والعربية – تحدد الشفرات ثنائية الاتجاه اتجاه النص.
لقد استخدم المؤلفون في عملهم تلك الشفرات، على سبيل المثال، لنقل فاصل التعليق في شفرة Python من منتصف السطر إلى النهاية. لقد قاموا بتطبيق شفرة RLI لتغيير عدد قليل من الأحرف فقط، وترك الباقي دون تأثر.
مثال على شفرة Python الضعيف باستخدام الرموز ثنائية الاتجاه
على اليمين هو الإصدار الذي يراه المبرمجون عند التحقق من شفرة المصدر؛ ويوضح ما هو موجود على اليسار كيف سيتم تنفيذ الشفرة. يتجاهل معظم جامعي البيانات أحرف التحكم. سيعتقد أي شخص يقوم بفحص الشفرة أن السطر الخامس هو تعليق غير ضار، على الرغم من أن بيان الإرجاع المبكر المخفي بالداخل سيؤدي في الواقع إلى تخطي البرنامج للعملية التي تخصم أموال الحساب المصرفي. في هذا المثال، بعبارة أخرى؛ سيوزع البرنامج المصرفي المحاكي الأموال، ولكن لن يقلل من رصيد الحساب.
لماذا هي خطيرة؟
للوهلة الأولى؛ ستبدو الثغرة الأمنية بسيطة للغاية. من الذي يقوم بإدخال الأحرف غير المرئية، على أمل خداع مدققي شفرة المصدر؟ ومع ذلك، فقد اعتُبرت المشكلة خطيرة بما يكفي لتبرير معرف الثغرة (CVE-2021-42574). قبل نشر البحث، أخطر المؤلفون مطوري البرامج المجمعة للبيانات الأكثر شيوعًا، مما أتاح لهم الوقت لإعداد التصحيحات.
يحدد التقرير قدرات الهجوم الأساسية. إستراتيجيتا التنفيذ هما إخفاء أمر داخل التعليقات، وإخفاء شيء ما في سطر يظهر، على سبيل المثال، على الشاشة. من الممكن، من الناحية النظرية، تحقيق التأثير المعاكس: إنشاء شفرة تشبه الأمر ولكنها في الحقيقة جزء من تعليق ولن يتم تشغيله. لا بد من وجود طرق أكثر إبداعًا لاستغلال هذا الضعف.
على سبيل المثال؛ يمكن لشخص ما استخدام الحيلة لتنفيذ هجوم متطور لسلسلة التوريد، حيث يقوم المقاول بتزويد الشركة بشفرة تبدو صحيحة، ولكنها لا تعمل على النحو المنشود. وبعد ذلك، بعد طرح المنتج النهائي، يمكن لطرف خارجي استخدام “الوظيفة البديلة” لمهاجمة العملاء.
ما مدى خطورة ذلك في الحقيقة ؟
بعد وقت قصير من نشر الورقة، المبرمج روس كوكس انتقد هجوم مصدر حصان طروادة. لقد كان بعبارة ملطفة، غير متأثر. حججه هي كما يلي:
- إنه ليس هجومًا جديدًا على الإطلاق؛
- يستخدم العديد من محرري الشفرة إبراز بناء الجملة لإظهار الشفرة “غير المرئية”؛
- التصحيحات لجامعي البيانات ليست ضرورية — فحص الشفرة بعناية لاكتشاف أي أخطاء عرضية أو ضارة بارزة.
في الواقع، لقد ظهرت مشكلة أحرف التحكم في Unicode، على سبيل المثال، طريق العودة 2017. كذلك، ثمة مشكلة مماثلة مع المتجانسات — الأحرف التي تبدو متشابهة ولكن لها شفرات مختلفة — ليست جديدة ويمكن أن تعمل أيضًا على التسلل إلى شفرة غريبة عبر أدوات التحقق اليدوية.
ومع ذلك، فإن تحليل كوكس النقدي لا ينكر وجود المشكلة، بل يدين التقارير باعتبارها مفرطة في الدراماتيكية – وهي توصيف مناسب، على سبيل المثال، للصحفي بريان كريبس. تهدد ثغرة “مصدر حصان طروادة” المروعة أمان جميع الشفرات.
المشكلة حقيقية، لكن لحسن الحظ؛ فالحل بسيط للغاية. ستمنع جميع التصحيحات التي تم إصدارها بالفعل أو المتوقع قريبًا إصدارها تجميع الشفرات التي تحتوي على هذه الأحرف. (انظر، على سبيل المثال، هذه الاستشارات الأمنية من مطوري جامع البيانات Rust.) إذا كنت تستخدم أدوات إنشاء البرامج الخاصة بك، فنحن نوصي بإضافة فحص مماثل للأحرف المخفية، والتي لا ينبغي أن تكون موجودة عادةً في شفرة المصدر.
خطر هجمات سلسلة التوريد
يقوم العديد من الشركات بتعهيد مهام التطوير للمقاولين، أو استخدام وحدات جاهزة مفتوحة المصدر في مشاريعهم. هذا يفتح دائمًا الباب أمام الهجمات عن طريق الموردين. يمكن لمجرمي الإنترنت مساومة متعاقد أو تضمين شفرة ما في مشروع مفتوح المصدر وإدخال شفرة ضارة في الإصدار الأخير من البرنامج. تكشف عمليات تدقيق الشفرة عادةً عن مثل هذه الأبواب الخلفية، ولكن إذا لم يحدث ذلك، فقد يحصل المستخدمون النهائيون على برامج من مصادر موثوقة، ولكنهم يستمرون في فقدان بياناتهم رغم ذلك.
مصدر حصان طروادة هو مثال على هجوم أكثر أناقة. وبدلًا من محاولة تهريب ميغا بايت من الشفرة الضارة إلى منتج نهائي، يمكن للمهاجمين استخدام مثل هذا الأسلوب لدس ثغرة يصعب اكتشافها في جزء مهم من البرنامج واستغلالها لسنوات قادمة.
كيف تحافظ على سلامتك
للحماية من الهجمات من نوع مصدر حصان طروادة:
- قم بتحديث جميع برامج جمع بيانات لغات البرمجة التي تستخدمها (إذا تم إصدار تصحيح لها)، و
- اكتب البرامج النصية الخاصة بك التي تكشف عن نطاق محدود من أحرف التحكم في شفرة المصدر.
على نطاق أوسع، تتطلب مكافحة هجمات سلسلة التوريد المحتملة عمليات تدقيق يدوية للشفرة ومجموعة من الاختبارات الآلية. ليس ثمة بُدٌّ أبدًا من النظر إلى الشفرة الخاصة بك من منظور المجرمين الإلكترونيين، في محاولة لتحديد هذا الخطأ البسيط الذي قد يؤدي إلى تمزيق آلية الأمان بأكملها. إذا كنت تفتقر إلى الموارد الداخلية لهذا النوع من التحليل، ففكر في مشاركة الخبراء الخارجيين بدلًا من ذلك.