تم تحميل أكثر من 400 حزمة ضارة مؤخرًا إلى PyPI (Python Package Index) ، وهو مستودع الشفرة الرسمي للغة برمجة Python ، في أحدث إشارة إلى أن استهداف مطوري البرامج باستخدام هذا النوع من الهجوم ليس بدعة عابرة.
جميع الحزم الـ 451 التي عثرت عليها شركة الأمن Phylum مؤخرًا تحتوي على حمولات ضارة متطابقة تقريبًا وتم تحميلها في دفعات متتالية. بمجرد التثبيت ، تنشئ الحزم امتداد JavaScript ضارًا يتم تحميله في كل مرة يتم فيها فتح متصفح على الجهاز المصاب ، وهي خدعة تمنح البرامج الضارة ثباتًا على عمليات إعادة التشغيل.
تراقب JavaScript حافظة المطور المصاب بحثًا عن عناوين للعملات المشفرة التي قد يتم نسخها إليها. عند العثور على عنوان ، يستبدله البرنامج الضار بعنوان ينتمي إلى المهاجم. الهدف: اعتراض المدفوعات التي ينوي المطور تقديمها لطرف آخر.
في نوفمبر ، حددت Phylum عشرات الحزم ، التي تم تنزيلها مئات المرات ، والتي استخدمت JavaScript عالي التشفير للقيام بنفس الشيء خلسة. على وجه التحديد:
- خلق textarea على الصفحة
- تم لصق أي محتويات حافظة بها
- استخدم سلسلة من التعبيرات العادية للبحث عن تنسيقات عناوين العملات المشفرة الشائعة
- تم استبدال أي عناوين محددة بالعناوين التي يتحكم فيها المهاجم في منطقة النص التي تم إنشاؤها مسبقًا
- نسخ منطقة النص إلى الحافظة
كتب لويس لانج ، كبير المسؤولين التقنيين في قسم اللجوء ، في منشور نوفمبر: “إذا قام مطور مخترق بنسخ عنوان المحفظة في أي وقت ، فإن الحزمة الخبيثة ستحل محل العنوان بعنوان يتحكم فيه المهاجم”. “سيؤدي هذا الاكتشاف / الاستبدال السري إلى قيام المستخدم النهائي بإرسال أمواله عن غير قصد إلى المهاجم.”
طريقة التعتيم الجديدة
بالإضافة إلى زيادة عدد الحزم الخبيثة التي تم تحميلها بشكل كبير ، تستخدم الحملة الأخيرة أيضًا طريقة مختلفة بشكل كبير لتغطية مساراتها. حيث استخدمت الحزم التي تم الكشف عنها في نوفمبر الترميز لإخفاء سلوك JavaScript ، تكتب الحزم الجديدة وظيفة ومعرفات متغيرة فيما يبدو أنها مجموعات عشوائية من 16 بت من إيديوغراف اللغة الصينية الموجودة في الجدول التالي:
نقطة رمز Unicode | إيديوغراف | تعريف |
---|---|---|
0x4eba | 人 | رجل؛ الناس؛ بشرية؛ شخص اخر |
0x5200 | 刀 | سكين؛ عملة قديمة يقيس |
0x53e3 | 口 | فم؛ نهاية مفتوحة؛ بوابة الدخول |
0x5973 | 女 | امرأة ، فتاة المؤنث |
0x5b50 | 子 | طفل؛ الفاكهة والبذور |
0x5c71 | 山 | قمة تل الجبل |
0x65e5 | 日 | شمس؛ يوم؛ النهار |
0x6708 | 月 | قمر؛ شهر |
0x6728 | 木 | شجرة؛ الخشب والخشب خشبي |
0x6c34 | 水 | ماء ، سائل ، غسول ، عصير |
0x76ee | 目 | عين؛ انظر ، انظر تقسيم الموضوع |
0x99ac | 馬 | حصان؛ اسم العائلة |
0x9a6c | 马 | حصان؛ اسم العائلة |
0x9ce5 | 鳥 | طائر |
0x9e1f | 鸟 | طائر |
باستخدام هذا الجدول ، سطر التعليمات البرمجية
''.join(map(getattr(__builtins__, oct.__str__()[-3 << 0] + hex.__str__()[-1 << 2] + copyright.__str__()[4 << 0]), [(((1 << 4) - 1) << 3) - 1, ((((3 << 2) + 1)) << 3) + 1, (7 << 4) - (1 << 1), ((((3 << 2) + 1)) << 2) - 1, (((3 << 3) + 1) << 1)]))
ينشئ الوظيفة المضمنة chr
وتعيين الوظيفة إلى قائمة الأعداد الصحيحة [119, 105, 110, 51, 50]
. ثم يدمجها الخط في سلسلة تخلق في النهاية 'win32'
.
أوضح باحثو حق اللجوء:
يمكننا أن نرى سلسلة من هذه الأنواع من المكالمات
oct.__str__()[-3 << 0]
. ال[-3 << 0]
بتقييم[-3]
وoct.__str__()
بتقييم السلسلة'<built-in function oct>'
. باستخدام مشغل فهرس بايثون[]
على سلسلة مع-3
سيأخذ الحرف الثالث من نهاية السلسلة ، في هذه الحالة'<built-in function oct>'[-3]
سيقيم ل'c'
. الاستمرار مع هذا في 2 الأخرى هنا يعطينا'c' + 'h' + 'r'
وببساطة تقييم المعادلات الحسابية المعقدة للبتات التي تم إجراؤها حتى النهاية يترك لنا:''.join(map(getattr(__builtins__, 'c' + 'h' + 'r'), [119, 105, 110, 51, 50]))
ال
getattr(__builtins__, 'c' + 'h' + 'r')
فقط يعطينا الوظيفة المضمنةchr
ومن ثم الخرائطchr
إلى قائمة ints[119, 105, 110, 51, 50]
ثم يجمعها معًا في سلسلة تعطينا في النهاية'win32'
. تستمر هذه التقنية في مجمل الكود.
قال الباحثون إنه في الوقت الذي يعطي فيه مظهر الشفرة المبهمة للغاية ، من السهل في النهاية التغلب على هذه التقنية ، وذلك ببساطة من خلال ملاحظة ما يفعله الكود عند تشغيله.
تحاول أحدث مجموعة من الحزم الضارة الاستفادة من الأخطاء المطبعية التي يقوم بها مطورو البرامج عند تنزيل إحدى هذه الحزم الشرعية:
- بيتكوينليب
- نسخة
- التشفير
- كريبتوفيد
- freqtrade
- السيلينيوم
- سولانا
- فايبير
- مآخذ ويب
- yfinance
- الباندا
- matplotlib
- aiohttp
- شوربة جميلة
- تينسورفلو
- السيلينيوم
- خردة
- كولوراما
- scikit- تعلم
- بيتورش
- القزم
- Pyinstaller
الحزم التي تستهدف حزمة vyper الشرعية ، على سبيل المثال ، استخدمت 13 اسمًا للملفات أغفلت أو كررت حرفًا واحدًا أو نقلت حرفين من الاسم الصحيح:
- نعم
- vper
- فاير
- فايب
- vvyper
- فايبر
- فايبير
- فايبر
- فيبير
- يفر
- vpyer
- vyepr
- vypre
كتب الباحثون: “هذه التقنية سهلة التشغيل الآلي باستخدام برنامج نصي (نترك هذا كتمرين للقارئ) ، وكلما زاد طول اسم الحزمة الشرعية ، تزداد أيضًا الحروف المطبعية المحتملة”. على سبيل المثال ، اكتشف نظامنا 38 كاتبا مطبعيًا من cryptocompare
تم نشر الحزمة في وقت واحد تقريبًا بواسطة المستخدم المسمى pinigin.9494
. “
يعود توفر الحزم الخبيثة في مستودعات الأكواد الشرعية التي تشبه إلى حد كبير أسماء الحزم الشرعية إلى عام 2016 على الأقل عندما قام طالب جامعي بتحميل 214 حزمة مفخخة إلى مستودعات PyPI و RubyGems و NPM التي تحتوي على أسماء معدلة قليلاً للحزم الشرعية . النتيجة: تم تنفيذ كود المحتال أكثر من 45000 مرة على أكثر من 17000 مجال منفصل ، وتم منح أكثر من نصف الحقوق الإدارية الكاملة. منذ ذلك الحين ، ازدهرت ما يسمى بهجمات الاستيلاء المطبعي.
تم تضمين أسماء جميع الحزم الخبيثة البالغ عددها 451 التي وجدها باحثو اللجوء في منشور المدونة. إنها ليست فكرة سيئة لأي شخص ينوي تنزيل إحدى الحزم الشرعية المستهدفة للتحقق مرة أخرى من أنها لم تحصل عن غير قصد على شبيه ضار.