مستودع-كمين بـ 1774 نجمة: فلتران لرصد البرمجيات الخبيثة والهلوسة

كل صباح يرسل الروبوت للكاتب خمسة مستودعات رائجة من trendshift.io مع ملخص لملف README. في 26 سبتمبر، ظهر في القائمة مشروع «Microsoft Activation Scripts» بـ 1774 نجمة — وكان كميناً. تم إنشاء حساب المالك قبل 94 ثانية فقط من إنشاء المستودع، وكانت أوامر التثبيت تحتوي على برمجية خبيثة متنكرة عبر PowerShell، حيث كُتب عنوان التنزيل بترتيب معكوس. بعد تحليل جميع 321 مستودعاً أرسلها الروبوت بين 15 يوليو و8 أكتوبر، اكتشف الكاتب أن الفلاتر الواضحة غير فعالة. فالتحقق من أسلوب التثبيت «نزّل ونفّذ فوراً» كان سيستبعد مشروعاً سليماً من كل ثمانية مشاريع. وبدلاً من ذلك، أنشأ الكاتب مؤشرين مستقلين، يكفي كل واحد منهما للحظر. • **lure-check**: يرصد أوامر التثبيت المتنكرة (سلاسل معكوسة عبر -join، وترميز base64، وتنفيذ مخفي عبر mshta/certutil/bitsadmin) والحسابات المؤقتة (التي أُنشئت قبل أقل من 30 يوماً من المستودع، وتحتوي على أقل من 10 كيلوبايت من الكود) • **ground-check**: يتحقق من هلوسة DeepSeek، عن طريق استبعاد الكلمات التي تبدأ بحرف كبير والأرقام غير الموجودة في المصدر • يُوزَّع كل من الأداتين كمستودع مستقل بترخيص MIT، وتتضمن ground-check اختبارات على 303 ملخصات حقيقية

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
مستودع-كمين بـ 1774 نجمة: فلتران لرصد البرمجيات الخبيثة والهلوسة
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
Ground-checkيتحقق من هلوسة DeepSeek، عن طريق استبعاد الكلمات التي تبدأ بحرف كبير والأرقام غير الموجودة في المصدر
حقيقة رئيسية #2يُوزَّع كل من الأداتين كمستودع مستقل بترخيص MIT، وتتضمن ground-check اختبارات على 303 ملخصات حقيقية
حقيقة رئيسية #3سلسلة نصية معكوسة عبر `-join"…"[-1..` مع `iex(irm(…))` وعنوان يُحسَب حسابياً

كمين بـ 1774 نجمة

كل صباح يرسل روبوت تيليغرام للكاتب خمسة مستودعات GitHub رائجة من trendshift.io. وتحت كل مستودع زر يعرض عند الضغط عليه ملخصاً لملف README لتسهيل المراجعة السريعة. يقرأ الكاتب هذه القائمة يومياً، ويضع أحياناً إعجاباً على المشاريع التي تلفت نظره.

في 26 سبتمبر، ظهر في القائمة مستودع «Microsoft Activation Scripts» بـ 1774 نجمة، ووصف منظم، وعلامات تصنيف. وقد عرضه الروبوت ضمن أربعة مشاريع متجاورة — وكان كميناً. يحتوي المستودع على ملف README واحد فقط، وتم إنشاء حساب المالك قبل 94 ثانية فقط من إنشاء المستودع. أمر التثبيت يبدو على الشكل `iex(irm(-join"…"[-1..-99]))` — حيث يُكتب عنوان التنزيل بترتيب معكوس. يقوم PowerShell أولاً بعكس السلسلة النصية، ثم يُنزّل النص البرمجي وينفذه فوراً. لا يمكن قراءة اسم النطاق بالعين المجردة، ولا يستطيع أي فاحص يبحث عن الروابط في النص رصده. يقود العنوان إلى نطاق يشبه النطاق الحقيقي. والواقع أن Microsoft Activation Scripts الأصلية موجودة فعلاً وتستخدم أيضاً أسلوب التثبيت عبر irm | iex — وعلى هذا التشابه بالضبط يقوم الكمين.

لماذا لم تنجح الفلاتر الواضحة

طبّق الكاتب القاعدة على 321 مستودعاً أرسلها الروبوت بين 15 يوليو و8 أكتوبر (ولا يزال 314 منها نشطاً). كانت الفكرة الأولى هي تصنيف أي تثبيت من نوع «نزّل ونفّذ فوراً» من موقع خارج GitHub بأنه مريب. لكن هذا هو أسلوب تثبيت 38 مشروعاً من أصل 314 مشروعاً سليماً: codex وopencode، وكذلك برنامجا التثبيت rustup وuv. كان هذا الفلتر سيحجب مستودعاً واحداً من كل ثمانية مستودعات رائجة، وهي من بين الأكثر فائدة.

كانت القاعدة الثانية هي «حساب المالك أصغر من 30 يوماً». وكان الكمين سيمر من هذا الفحص: فعند إرساله، كان عمر الحساب قد بلغ 34 يوماً بالفعل. فالحساب المؤقت لا يُحدَّد بعمره لحظة الفحص، بل بالفارق الزمني بين إنشاء الحساب وإنشاء المستودع.

الفلتران الناجحان

الفلتر الأول (أمر تثبيت متنكر)

يتحقق من وجود تنكّر داخل ملف README:

  • سلسلة نصية معكوسة عبر `-join"…"[-1..` مع `iex(irm(…))` وعنوان يُحسَب حسابياً
  • كود بترميز base64 يُفكّ ويُنفَّذ فوراً
  • تنفيذ مخفي عبر `mshta` أو `certutil` أو `bitsadmin` أو `-WindowStyle Hidden`

وقبل الفحص، يُنظَّف النص من الأحرف غير المرئية وعلامات الاقتباس الخلفية الخاصة بـ PowerShell (مثل i\`e\`x).

الفلتر الثاني (مالك مؤقت وغياب الكود)

يحجب المستودعات إذا:

  • أُنشئ الحساب قبل أقل من 30 يوماً من المستودع
  • كان حجم المستودع أقل من 10 كيلوبايت، أو يحتوي فقط على ملفي README وLICENSE

وإذا لم يستجب GitHub، تُعتبر النتيجة «غير معروفة» وليس «لا يوجد كود» — فعطل في الشبكة لا ينبغي أن يحجب مشروعاً سليماً.

على جميع المستودعات الـ 314، ظهر كل مؤشر مرة واحدة فقط بالضبط — في حالة المفعّل المزيف. ومنذ 9 أكتوبر، أصبح هذا الفحص جزءاً من الروبوت. فإذا بدا مستودع ما كميناً، يزيله الروبوت من القائمة، ويضع بدلاً منه المستودع التالي في الترتيب، ويكتب سطراً واحداً يوضح ما جرى حجبه ولماذا.

المشكلة الثانية: هلوسة الشبكة العصبية

يطلب الروبوت من DeepSeek تلخيص كل مستودع بعبارة واحدة بالروسية. وقد وصف النموذج مشروعاً لم يذكر في وصفه سوى meat.dev بأنه «إطار عمل ويب لـ Ruby». وفي حالة أخرى، قارن أداة اختبار بـ Cypress، وهو غير مذكور أصلاً في المصدر. كل هذا يبدو منطقياً، ولا يمكن رصده بالعين المجردة.

جمع الكاتب 303 ملخصاً حقيقياً وقارنها بمصادرها. والقاعدة بسيطة: يجب أن تظهر في المصدر كل كلمة بالحروف اللاتينية تبدأ بحرف كبير أو تحتوي على رقم (مثل Ruby، GPT-5)، وكل رقم من ثلاث خانات أو أكثر، بفاصلة عشرية أو علامة نسبة مئوية. وإذا لم يكن الأمر كذلك، يعرض الروبوت الوصف الأصلي من GitHub.

الإصدار الأول رفض 9 من أصل 303 ملخصات. وتبيّن أن أربعة منها كانت فقط اختلافاً في طريقة الكتابة لنفس الشيء: Open-source و«open source»، وWi-Fi و«WiFi»، و2234 و«2,234». فأضاف الكاتب مقارنة دون شرطات أو فراغات، وأزال الفواصل الخاصة بالآلاف. وتبقّى 5 حالات رفض: ثلاث اختراعات حقيقية (Ruby، Cypress، Scratch)، وحالتان لم يؤكدهما المصدر (NVIDIA والقرن التاسع عشر). وعلى مدى أربعة أيام، تمت معالجة 20 ملخصاً دون أي حالة رفض.

أين تجد الأدوات

lure-check: `python3 lure_check.py owner/repo` — رمز الخروج 1 يشير إلى كمين، وهو مناسب للاستخدام في أنظمة CI

ground-check: `python3 ground_check.py --source source.txt --text summary.txt`

كل من الأداتين هي ملف Python واحد، يستخدم فقط المكتبة القياسية، مرخّص بموجب MIT، ويحتوي على اختبارات مبنية على حالات حقيقية. وقد تم تعطيل الكمين في الاختبارات، واستُبدلت جميع العناوين.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول كمين بـ 1774 نجمة؟

كل صباح يرسل روبوت تيليغرام للكاتب خمسة مستودعات GitHub رائجة من trendshift.io. وتحت كل مستودع زر يعرض عند الضغط عليه ملخصاً لملف README لتسهيل المراجعة السريعة. يقرأ الكاتب هذه القائمة يومياً، ويضع أحياناً إعجاباً على المشاريع التي تلفت نظره. في 26 سبتمبر، ظهر في القائمة مستودع «Microsoft Activation Scripts» بـ 1774 نجمة، ووصف منظم، وعلامات تصنيف. وقد عرضه الروبوت ضمن أربعة مشاريع متجاورة — وكان كميناً. يحتوي المستودع على ملف README واحد فقط، وتم إنشاء حساب المالك قبل 94 ثانية فقط من إنشاء المستودع. أمر التثبيت يبدو على الشكل `iex(irm(-join"…"[-1..-99]))` — حيث يُكتب عنوان

ما أبرز التفاصيل حول لماذا لم تنجح الفلاتر الواضحة؟

طبّق الكاتب القاعدة على 321 مستودعاً أرسلها الروبوت بين 15 يوليو و8 أكتوبر (ولا يزال 314 منها نشطاً). كانت الفكرة الأولى هي تصنيف أي تثبيت من نوع «نزّل ونفّذ فوراً» من موقع خارج GitHub بأنه مريب. لكن هذا هو أسلوب تثبيت 38 مشروعاً من أصل 314 مشروعاً سليماً: codex وopencode، وكذلك برنامجا التثبيت rustup وuv. كان هذا الفلتر سيحجب مستودعاً واحداً من كل ثمانية مستودعات رائجة، وهي من بين الأكثر فائدة. كانت القاعدة الثانية هي «حساب المالك أصغر من 30 يوماً». وكان الكمين سيمر من هذا الفحص: فعند إرساله، كان عمر الحساب قد بلغ 34 يوماً بالفعل. فالحساب المؤقت لا يُحدَّد بعمره لحظة الفحص

ما أبرز التفاصيل حول الفلتران الناجحان؟

الفلتر الأول (أمر تثبيت متنكر) يتحقق من وجود تنكّر داخل ملف README: سلسلة نصية معكوسة عبر `-join"…"[-1..` مع `iex(irm(…))` وعنوان يُحسَب حسابياً كود بترميز base64 يُفكّ ويُنفَّذ فوراً تنفيذ مخفي عبر `mshta` أو `certutil` أو `bitsadmin` أو `-WindowStyle Hidden` وقبل الفحص، يُنظَّف النص من الأحرف غير المرئية وعلامات الاقتباس الخلفية الخاصة بـ PowerShell (مثل i\`e\`x). الفلتر الثاني (مالك مؤقت وغياب الكود) يحجب المستودعات إذا: أُنشئ الحساب قبل أقل من 30 يوماً من المستودع كان حجم المستودع أقل من 10 كيلوبايت، أو يحتوي فقط على ملفي README وLICENSE وإذا لم يستجب GitHub، تُعتبر الن

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…