مشروع مفتوح المصدر · أمن سلسلة التوريد (Supply Chain)

SafeInstall

بوابة التثبيت لعصر وكلاء الذكاء الاصطناعي.

تعمل السياسة أولاً. ثم مدير الحزم. وليس العكس.

SafeInstall أداة سطر أوامر مفتوحة المصدر تحظر عمليات التثبيت الخطرة لـ npm وpnpm وbun قبل تشغيلها. طوّرناها لأن وكلاء البرمجة بالذكاء الاصطناعي يقترحون الحزم اليوم ويثبّتونها خلال ثوانٍ — دون التحقق من الجهة الناشرة أو مما يحدث أثناء التثبيت.

رخصة MIT · يعمل محلياً · بلا خدمة سحابية · بلا حساب · مجاني

لا توجد خطوة تحقق بين «npm install» و«الاختراق»

عند كل عملية تثبيت حزمة تحدث ثلاثة أمور لا يتحقق منها أحد تقريباً — وأصبحت أكثر شيوعاً بكثير مع العمل بوكلاء الذكاء الاصطناعي.

سكربتات التثبيت تعمل فوراً.

يُسمح للحزمة بتنفيذ أي كود أثناء التثبيت — عبر preinstall أو install أو postinstall. يعمل هذا الكود قبل أن يبدأ أي سطر من التطبيق نفسه، وبصلاحيات الشخص على الجهاز. من لم يقرأ الحزمة مسبقاً، لم يتحقق منها أيضاً.

وكلاء الذكاء الاصطناعي يثبّتون دون تحقق.

يقترح وكيل البرمجة حزمة وينفّذ الأمر. لا يتحقق من تاريخ النشر، ولا يقرأ سكربتات التثبيت، ولا يتحقق من المصدر. يوافق الإنسان ويكمل عمله. وإذا جاء اسم الحزمة من هلوسة نموذج أو دليل مُتلاعَب به، يكون المهاجم قد استحوذ على الاسم فعلاً.

أدوات الفحص الكلاسيكية تُبلّغ متأخرة.

قواعد بيانات الثغرات لا تعرف إلا ما هو معروف ومنشور بالفعل. عند حزمة اخترقت للتو، لا يوجد سجل لها في قاعدة البيانات وقت التثبيت. قاعدة بيانات الثغرات تُنذر بعد فوات الأوان — وهي ليست بوابة.

أداة واحدة، ثلاث طبقات دفاع

تعمل SafeInstall عند ثلاث نقاط: الأشخاص الذين يثبّتون الحزم، والوكلاء الذين يقومون بذلك نيابة عنهم — والملفات التي توجّه هؤلاء الوكلاء.

الطبقة 1 — للأشخاص الذين يثبّتون الحزم

يضع المستخدم الأمر في المقدمة: safeinstall pnpm add axios. تعمل السياسة أولاً، ثم يبدأ pnpm. يتم التحقق من عمر الإصدار وسكربتات التثبيت والمصدر وتراجع مستوى الثقة قبل كتابة أي شيء على القرص.

الطبقة 2 — لوكلاء الذكاء الاصطناعي الذين يثبّتون الحزم

يوفّر خادم MCP للوكلاء أداة check_package التي يمكنهم استدعاؤها قبل التثبيت. بالإضافة إلى ذلك، يعترض Shell Guard أوامر التثبيت في Claude Code وCodex وCursor قبل تنفيذها. إذا لم يجد خادم MCP تهيئة مشروع، فإنه يشغّل عمداً ملفاً أكثر صرامة من الاستخدام البشري: يُضبط كشف Typo-Squat وفحص استمرارية Provenance حينها على الحظر — ففي تشغيل الوكلاء، أقصى إشارة هي ما يهم.

الطبقة 3 — للملفات التي تبرمج الوكلاء

هذا هو الجزء الذي نادراً ما يوجد في أي مكان آخر. لا يحتاج وكيل مُتلاعَب به إلى محاربة البوابة إطلاقاً — يمكنه ببساطة إعادة كتابة القواعد: إضعاف التهيئة، حذف Hook، إخفاء تعليمات غير مرئية في AGENTS.md، أو تسجيل خادم MCP خبيث. توجّه هذه الملفات جلسة الوكيل التالية؛ وهي آلية الاستمرارية (Persistence) الجديدة.

في المقابل، تضع Agent Trust Surface خط أساس تجزئة (Hash Baseline) لهذه الملفات داخل المستودع (Repository). تقارن SafeInstall الحالة الفعلية بهذا الأساس قبل كل قرار — وتتحقق منها إضافياً في CI عند كل Pull Request، على جهاز لا يتحكم فيه الوكيل. أي تغيير يُضعف الحماية يتطلّب إلزامياً إنساناً أمام الطرفية (Terminal).

هكذا يبدو الأمر عملياً

لا لوحة تحكم، لا تقرير لاحق — يُتّخذ القرار قبل التثبيت، في الطرفية (Terminal).

$ safeinstall pnpm add compromised-pkg@9.9.9
Install blocked.
- compromised-pkg@9.9.9
Blocked: release too new (published 3 hours ago; minimum is 72 hours).
Blocked: install script present (has postinstall).

سببان مستقلان، اكتُشف كلاهما قبل أي وصول للكتابة. إذا سمحت السياسة بالعملية، تستدعي SafeInstall مدير الحزم الفعلي وتتنحى جانباً.

أربعة فحوصات افتراضية، وأربعة اختيارية

هذا الفصل مقصود. المفعّل افتراضياً هو ما يصح في كل مشروع تقريباً دون تعطيل سير العمل. وكل ما قد يسبب إنذارات كاذبة بحسب المشروع مُعطَّل افتراضياً ويُفعَّل عمداً.

مفعّلة افتراضياً

  • عمر الإصداريحظر الإصدارات الأحدث من 72 ساعة (قابل للتهيئة)

  • سكربتات التثبيتيُحظر preinstall وinstall وpostinstall حتى يُسمح بها صراحة

  • مصادر الحزميُسمح بالسجل (Registry) وWorkspace والملف والمجلد؛ ويُحظر Git وURL

  • تراجع مستوى الثقةيكتشف تحوّل تبعية من السجل إلى Git/URL، أو ظهور سكربتات جديدة عند تحديث

قابلة للتفعيل

  • كشف Typo-Squatتشابه الاسم مع حزم معروفة وشائعة

  • التحقق من Provenanceتحقق تشفيري من إثبات Sigstore

  • الفحص غير المباشريفحص شجرة التبعيات بأكملها، لا الحزم المباشرة فقط

  • استمرارية Provenanceيكتشف عندما يفقد إصدار جديد إثبات الإصدار السابق أو يأتي فجأة من مستودع مصدر مختلف

البيانات الوصفية غير الواضحة أو الناقصة تؤدي إلى الحظر، لا إلى السماح. عند الشك، القرار ضد التثبيت — هذا هو الموقف الأساسي للأداة.

ثلاثة قرارات تحدد ملامح الأداة

محلي بدلاً من سحابي.

تعمل SafeInstall بالكامل على الجهاز الخاص أو في CI الخاص بكم. لا توجد خدمة تُرسَل إليها بيانات التبعيات، ولا حساب، ولا قياس عن بُعد (Telemetry). من يتحقق من الحزم التي تستخدمها شركة ما يعرف بذلك شيئاً عن هذه الشركة أيضاً — وهذه المعلومة لا تغادر المؤسسة.

عند الشك، الحظر.

أداة أمان تسمح بالمرور عند غموض الموقف لا تفعل سوى نقل المخاطرة وخلق شعور زائف بالأمان. تقرر SafeInstall ضد التثبيت عند الشك. وهذا يكلّف أحياناً إدخال استثناء واعٍ — وهذا الاستثناء بالذات يصبح حينها قراراً موثقاً بدلاً من افتراض صامت.

بشر عند النقاط الحرجة.

كل إجراء يُضعف الحماية يتطلب شخصاً حقيقياً أمام طرفية حقيقية. تقرأ الأوامر المعنية تأكيدها مباشرة من الطرفية المتحكمة، وترفض العمل في بيئات CI وسياقات الوكلاء المعروفة. لا يستطيع أي وكيل تعطيل الحماية أثناء مروره.

ما لا تقوم به SafeInstall

من الصعب تقييم أداة أمان لا يتحدث مزوّدها إلا عن نقاط قوتها. لذلك نوثّق هنا الحدود بأنفسنا — وهي مذكورة بالطريقة نفسها في التوثيق العام.

اختراق CI مع Provenance صالحة. إذا استُحوذ على خط بناء (Build Pipeline) مشروع شرعي نفسه، ينتج إصدار موثَّق بشكل صحيح من المستودع الصحيح. لا يرى فحص الاستمرارية أي انقطاع هناك. ترفع SafeInstall الحاجز أمام نمط الهجوم الأكثر شيوعاً — لكنها لا تُغلق كل باب.

اعتراض الأوامر طبقة، لا ضمانة. يعمل Shell Guard حتى مع وكيل لا يتعاون. لكن برنامجاً يكتبه الوكيل نفسه ويشغّله لا يُكتشف إلا عند المطابقة التالية — لا في لحظة استدعائه.

مرئي التلاعب محلياً، لا محصّن ضد التلاعب. داخل حساب المستخدم نفسه، يمكن لمهاجم ماهر بما يكفي إعادة كتابة ملفات يمكن للمستخدم نفسه إعادة كتابتها أيضاً. الطبقة الموثوقة هي خط الأساس المُسجَّل في المستودع، والمُتحقَّق منه في CI، والمقروء من قِبل إنسان في الـ Pull Request.

معرفة هذه الحدود جزء من الحماية. الأداة التي يمكن تقدير مدى فعاليتها هي أداة يمكن استخدامها بالشكل الصحيح.

لماذا بنينا هذا

SafeInstall ليست منتجاً جانبياً. إنها الإجابة على مشكلة رأيناها بأنفسنا في العمل اليومي مع التطوير المدعوم بالذكاء الاصطناعي — وهي قابلة للتحقق علناً. الكود المصدري الكامل متاح على GitHub برخصة MIT. يمكن قراءة كل قرار وكل حد وكل مفاضلة هناك.

نعتبر هذا أصدق دليل كفاءة يمكن لشركة تقنية تقديمه: ليس الادعاء بفهم الأمان، بل الكود القابل للاطلاع الذي يمكن التحقق منه.

إذا كنتم تستخدمون وكلاء ذكاء اصطناعي في تطويركم وتريدون معرفة أين يكمن سطح هجومكم، تواصلوا معنا.

نظرة سريعة

المشروعSafeInstall
النوعمفتوح المصدر، رخصة MIT
الحزمةsafeinstall-cli (npm)
مديرو الحزمnpm, pnpm, bun
المتطلباتNode.js 20 أو أحدث
التشغيلمحلي بالكامل — بلا خدمة سحابية، بلا حساب
الكود المصدريgithub.com/Mickdownunder/SafeInstall
التوثيقsafeinstall.dev
$ npm install -g safeinstall-cli
$ safeinstall init

الأمان في التطوير المدعوم بالذكاء الاصطناعي

نستشير الشركات التي تستخدم وكلاء الذكاء الاصطناعي في تطوير البرمجيات — من تأمين بيئة التطوير إلى سؤال أي الضوابط تنجح فعلياً في مسار التسليم.

Cyntro Systems GmbH · كنيتلفيلد، النمسا