كيف يُغفَل عنه
يثبّت عميلك تبعية. يُسمّي بيان الحزمة أيضاً سكريبتاً يعمل أثناء التثبيت. ما يبدو كإعداد يمكن أن يتضمن تنفيذ كود يستحق مراجعته المستقلة.
قد يستخدم مشروع خطافات التثبيت لخطوات بناء عادية تماماً. قد يحتوي أيضاً على أمر غير متوقع. النقطة المهمة هي أن السكريبت يعيش في البيان، حيث يمكن إغفاله إذا اكتفيت بفحص أمر التثبيت الرئيسي.
ما يكشفه ClawMetry
يفحص ClawMetry بيان حزمة بيئة العمل بحثاً عن خطافات دورة حياة التثبيت المدعومة. يُثير تحذير تنفيذ بيان الحزمة ويُحدّد الخطاف. يقرأ الماسح الملف، ولا ينفّذ الأمر الذي يجده.
الفارق الذي يغير النتيجة
مثال مُفعِّل
postinstall: node build.js
نتيجة تحذيرية
مقارنة هادئة
test: node build.js
لا نتيجة لهذا الكاشف.
يحتوي المثال المفحوص على سكريبت postinstall يُسمّي برنامج بناء فينتج تحذيراً. ضع البرنامج ذاته تحت سكريبت اختبار عادي، ويظل هذا الكاشف صامتاً. التمييز يكمن في متى يقول البيان إن البرنامج سيعمل.
افحص نتيجة الكاشف
{
"kind": "package_manifest_exec",
"severity": "warning",
"evidence": {
"hooks": [
"postinstall"
],
"hits": [
{
"hook": "postinstall",
"command": "node build.js",
"tool": null,
"alarm": null
}
],
"manifest": "package.json",
"tools": [],
"observed": "package_manifest"
}
}تنزيل المدخلات والنتائج الكاملة (JSON)كيف تم فحص المثال
تُقيِّم هذه الأمثلة الكاشف المنشور باستخدام بيانات أحداث محررة أو ملفات إعداد مؤقتة. الفيديوهات توضح تلك السلوكيات. ليست تسجيلات لوكلاء حية أو لواجهة المنتج. لم يُنفَّذ أي أمر في الأمثلة.
تحدد النتيجة السلوك لهذه المدخلات. لا تُثبت استيعاب بيئة التشغيل أو الوقاية أو اختراقاً فعلياً. افحص عقد المصدر المثبَّت.
ماذا تفحص بعد ذلك
اقرأ أمر الخطاف والبرنامج الذي يُشير إليه. تحقق مما إذا كان سلوك التثبيت هذا ينتمي إلى المشروع وما إذا كان مصدر التبعية موثوقاً. إذا حدث التثبيت بالفعل، راجع التأثيرات الفعلية بشكل منفصل قبل قبول البيئة.
- اقرأ خطاف دورة الحياة
- افحص البرنامج المُشار إليه
- راجع سلوك التثبيت المتوقع
ما تُثبته هذه الإشارة
خطاف التثبيت ليس عدائياً تلقائياً. تُبلّغ هذه النتيجة عن إدخال البيان، وليس دليلاً على حدوث التثبيت أو التنفيذ.