Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
safe-chain — احمِ ضد التعليمات البرمجية الخبيثة المثبتة عبر npm وyarn وpnpm وnpx وpnpx وpip وuv وpoetry باستخدام Aikido Safe Chain. مجاني للاستخدام، لا يتطلب رموزًا. | Kitploit
أدوات/GitHubGitHub/aikidosec/safe-chain
أدوات دفاعيةماسحات الثغرات الأمنيةتحليل البرمجيات الخبيثةDevSecOpsاستخبارات التهديداتأمن سلسلة التوريد
GitHubaikidosec/safe-chain

safe-chain

احمِ ضد التعليمات البرمجية الخبيثة المثبتة عبر npm وyarn وpnpm وnpx وpnpx وpip وuv وpoetry باستخدام Aikido Safe Chain. مجاني للاستخدام، لا يتطلب رموزًا.

عرض المستودعالموقع الإلكتروني
1.7k106منذ يوم واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Aikido Safe Chain

Aikido Safe Chain

NPM Version NPM Downloads

  • ✅ احظر البرمجيات الخبيثة على أجهزة المطورين وفي أنظمة CI/CD
  • ✅ يدعم npm و PyPI مع دعم المزيد من مديري الحزم قريبًا
  • ✅ يحظر الحزم الأحدث من 48 ساعة دون كسر بنية برمجياتك
  • ✅ بدون رموز، مجاني، ولا تتم مشاركة بيانات البناء

هل تحتاج حماية تتجاوز npm و PyPI؟

Aikido Device Protection يبني على Safe Chain، ويوسّع أمان الحزم والإضافات ليشمل المزيد من النظم البيئية: npm، PyPI، VS Code، Open VSX - (Cursor، Windsurf، Kiro، Vs Codium، ...)، Maven، NuGet، إضافات Chrome، Go، مهارات Skills.sh AI، Ruby، Rust، والمزيد.

احصل على إدارة مركزية للسياسات، وسير عمل للطلب والموافقة، ورؤية عبر كل محطة عمل للمطورين في مؤسستك. مدعوم من نفس مصدر بيانات Aikido Intel. انشره يدويًا أو أدره عبر أداة MDM الخاصة بك (Jamf أو Fleet أو Iru).


يدعم Aikido Safe Chain مديري الحزم الآتية:

  • 📦 npm
  • 📦 npx
  • 📦 yarn
  • 📦 pnpm
  • 📦 pnpx
  • 📦 rush
  • 📦 rushx
  • 📦 bun
  • 📦 bunx
  • 📦 pip
  • 📦 pip3
  • 📦 uv
  • 📦 poetry
  • 📦 uvx
  • 📦 pipx
  • 📦 pdm

الاستخدام

عرض Aikido Safe Chain التجريبي

التثبيت

تثبيت Aikido Safe Chain سهل باستخدام سكربت التثبيت.

Unix/Linux/macOS```shell

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh
&& rm /tmp/install-safe-chain.sh

root@kitploit:~
### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1"
if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {
    Remove-Item $installer -ErrorAction SilentlyContinue
    throw "Checksum verification failed for install-safe-chain.ps1"
}
& $installer
Remove-Item $installer

أوامر التثبيت أعلاه تشير دائمًا إلى إصدار محدد. لتثبيت إصدار مختلف، استبدل الإصدار برقم الإصدار الذي تريده. جميع الإصدارات المتاحة موجودة في صفحة الإصدارات.

سلامة التنزيل

يتم تقديم نصوص التثبيت من رابط إصدار مُرقّم (releases/download/1.5.15/...). إصدارات GitHub غير قابلة للتغيير — بمجرد نشر ملف على رابط مُرقّم لا يمكن تعديله أو استبداله، لذا فإن الملف الذي تنزّله مضمون ليكون مطابقًا تمامًا لما تم إصداره.

التحقق من التثبيت

  1. ❗أعد تشغيل الطرفية لبدء استخدام Aikido Safe Chain.

    • هذه الخطوة ضرورية لأنها تضمن تحميل الأسماء المستعارة في الصدفة الخاصة بـ npm، npx، yarn، pnpm، pnpx، rush، rushx، bun، bunx، pip، pip3، poetry، uv، uvx، pipx و pdm بشكل صحيح. إذا لم تقم بإعادة تشغيل الطرفية، فلن تكون الأسماء المستعارة متاحة.
  2. تحقق من التثبيت عن طريق تشغيل أمر التحقق: ```shell npm safe-chain-verify pnpm safe-chain-verify pip safe-chain-verify uv safe-chain-verify

    Any other supported package manager: {packagemanager} safe-chain-verify

    root@kitploit:~
  • يجب أن يُظهر الإخراج الرسالة "OK: Safe-chain works!"، مما يؤكد أن Aikido Safe Chain مثبّت بشكل صحيح ويعمل.
  1. (اختياري) اختبار حظر البرمجيات الخبيثة من خلال محاولة تثبيت حزمة اختبار:

    لـ JavaScript/Node.js: ```shell npm install safe-chain-test

    root@kitploit:~

لـ Python: ```shell pip3 install safe-chain-pi-test

root@kitploit:~
- يجب أن يُظهر الناتج أن Aikido Safe Chain يمنع تثبيت حزم الاختبار هذه لأنها مُعلَّمة كبرمجيات خبيثة.

عند تشغيل أوامر `npm`، `npx`، `yarn`، `pnpm`، `pnpx`، `rush`، `rushx`، `bun`، `bunx`، `pip`، `pip3`، `uv`، `uvx`، `poetry`، `pipx` و `pdm`، ستتحقق Aikido Safe Chain تلقائيًا من وجود برمجيات خبيثة في الحزم التي تحاول تثبيتها. كما تعترض استدعاءات وحدات Python النمطية لأداة pip عند توفّرها (مثل: `python -m pip install ...`، `python3 -m pip download ...`). إذا تم اكتشاف أي برمجية خبيثة، فسيتم مطالبتك بالخروج من الأمر.

يمكنك التحقق من الإصدار المثبّت عن طريق تشغيل:```shell
safe-chain --version

كيف يعمل

حظر البرمجيات الخبيثة

يعمل Aikido Safe Chain عن طريق تشغيل خادم وكيل خفيف الوزن يعترض تنزيلات الحزم من سجل npm وPyPI. عند تشغيل أوامر npm أو npx أو yarn أو pnpm أو pnpx أو rush أو rushx أو bun أو bunx أو pip أو pip3 أو uv أو uvx أو poetry أو pipx أو pdm، يتم توجيه جميع تنزيلات الحزم عبر هذا الوكيل المحلي، الذي يتحقق من الحزم في الوقت الفعلي مقابل Aikido Intel - Open Sources Threat Intelligence. إذا تم اكتشاف برمجيات خبيثة في أي حزمة (بما في ذلك التبعيات العميقة)، يقوم الوكيل بحظر التنزيل قبل وصول الكود الخبيث إلى جهازك.

الحد الأدنى لعمر الحزمة

يطبّق Safe Chain فحوصات الحد الأدنى لعمر الحزمة على الأنظمة البيئية المدعومة.

يختلف التنفيذ الحالي حسب النظام البيئي:

  • مديرو حزم npm:
    • أثناء حل الحزم بشكل طبيعي، يمنع Safe Chain الإصدارات الأحدث من العمر الأدنى المُعرَّف من بيانات الحزمة التي يعيدها السجل
    • بالنسبة لطلبات تنزيل الحزم المباشرة التي تتجاوز تدفق البيانات الوصفية هذا، يمكن لـ Safe Chain حظر الطلب نفسه باستخدام قائمة مخزنة مؤقتًا من الحزم المنشورة حديثًا
  • مديرو حزم Python:
    • أثناء حل الحزم، يمنع Safe Chain الملفات والإصدارات الحديثة جدًا من استجابات بيانات PyPI الوصفية
    • بالنسبة لطلبات تنزيل الحزم المباشرة التي تتجاوز تدفق البيانات الوصفية هذا، يمكن لـ Safe Chain حظر الطلب نفسه باستخدام قائمة مخزنة مؤقتًا من الحزم المنشورة حديثًا

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

التكامل مع الصدفة

يتكامل Aikido Safe Chain مع الصدفة لديك لتوفير تجربة سلسة عند استخدام npm وnpx وyarn وpnpm وpnpx وrush وrushx وbun وbunx ومديري حزم Python (pip وuv وuvx وpoetry وpipx وpdm). يقوم بإعداد أسماء مستعارة لهذه الأوامر بحيث يتم تغليفها بأوامر Aikido Safe Chain، التي تدير خادم الوكيل قبل تنفيذ الأوامر الأصلية. ندعم حاليًا:

  • ✅ Bash
  • ✅ Zsh
  • ✅ Fish
  • ✅ PowerShell
  • ✅ PowerShell Core

يمكن العثور على مزيد من المعلومات حول التكامل مع الصدفة في وثائق التكامل مع الصدفة.

إلغاء التثبيت

لإلغاء تثبيت Aikido Safe Chain، استخدم أداة إلغاء التثبيت المكونة من سطر واحد:

Unix/Linux/macOS```shell

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.sh | sh

root@kitploit:~
### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.ps1" -UseBasicParsing)

❗أعد تشغيل الطرفية بعد إلغاء التثبيت لضمان إزالة جميع الأسماء المستعارة.

الإعدادات

السجلات

يمكنك التحكم في مخرجات Aikido Safe Chain باستخدام الخيار --safe-chain-logging أو متغير البيئة SAFE_CHAIN_LOGGING.

خيارات الإعداد

يمكنك تعيين مستوى التسجيل من خلال مصادر متعددة (بترتيب الأولوية):

  1. وسيطة سطر الأوامر (أعلى أولوية):

    • --safe-chain-logging=silent - يمنع جميع مخرجات Aikido Safe Chain إلا عند حظر البرمجيات الخبيثة. تتم كتابة مخرجات مدير الحزم إلى stdout بشكل طبيعي، ولا يكتب Safe Chain إلا رسالة قصيرة إذا قام بحظر برمجيات خبيثة ويتسبب في خروج العملية.

      root@kitploit:~
      npm install express --safe-chain-logging=silent
      
    • --safe-chain-logging=verbose - يتيح مخرجات تشخيصية مفصّلة من Aikido Safe Chain. مفيد لاستكشاف الأخطاء وإصلاحها أو فهم ما يفعله Safe Chain خلف الكواليس.

      root@kitploit:~
      npm install express --safe-chain-logging=verbose
      
  2. متغير البيئة: ```shell export SAFE_CHAIN_LOGGING=verbose npm install express

    root@kitploit:~

القيم الصالحة: silent, normal, verbose

هذا مفيد لتعيين مستوى تسجيل افتراضي لجميع أوامر مدير الحزم في جلسة الطرفية أو بيئة CI/CD لديك.

تسجيل الملفات

يمكنك عكس مخرجات Aikido Safe Chain إلى ملف سجل باستخدام العلم --safe-chain-log-file أو متغير البيئة SAFE_CHAIN_LOG_FILE. تسجيل الملفات معطّل افتراضيًا ويتم تفعيله عند تعيين مسار. يتم التحكم في تنسيق الملف (--safe-chain-log-file-format) ومستوى التفصيل (--safe-chain-log-file-verbosity) بشكل مستقل عن مخرجات الطرفية.

خيارات الإعداد

يمكن الإعداد عبر أي من هذه (حسب ترتيب الأولوية):

  1. وسيطة CLI (الأولوية القصوى): ```shell npm install express
    --safe-chain-log-file=~/safe-chain.log
    --safe-chain-log-file-format=plain
    --safe-chain-log-file-verbosity=normal
    root@kitploit:~
  2. متغير البيئة: ```shell export SAFE_CHAIN_LOG_FILE=~/safe-chain.log export SAFE_CHAIN_LOG_FILE_FORMAT=plain export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
    root@kitploit:~
  3. ملف التكوين (~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
    root@kitploit:~

logFileFormat — json (الافتراضي) أو plain.

logFileVerbosity — silent أو normal أو verbose (الافتراضي). مستقل عن --safe-chain-logging.

الحد الأدنى لعمر الحزمة

يمكنك تكوين المدة التي يجب أن توجد فيها الحزم قبل أن يسمح Safe Chain بتثبيتها. افتراضيًا، يجب أن يكون عمر الحزم 48 ساعة على الأقل قبل أن يمكن تثبيتها.

بالنسبة لمديري الحزم القائمة على npm، يحتوي هذا الفحص حاليًا على وضعين للتنفيذ:

  • يقوم Safe Chain بقمع الإصدارات الأحدث من المسموح به من بيانات الحزمة أثناء حل التبعيات العادي.
  • يحظر Safe Chain طلبات تنزيل الحزمة المباشرة عندما تتم مطابقتها مع قائمة الحزم المنشورة حديثًا المخزنة مؤقتًا.

بالنسبة لمديري حزم Python، يحتوي هذا الفحص حاليًا على وضعين للتنفيذ:

  • يقوم Safe Chain بقمع الملفات والإصدارات الأحدث من المسموح به من بيانات PyPI أثناء حل التبعيات.
  • يحظر Safe Chain طلبات تنزيل الحزمة المباشرة عندما تتم مطابقتها مع قائمة الحزم المنشورة حديثًا المخزنة مؤقتًا.

خيارات التكوين

يمكنك تعيين الحد الأدنى لعمر الحزمة من خلال مصادر متعددة (حسب الأولوية):

  1. وسيط CLI (أعلى أولوية): ```shell npm install express --safe-chain-minimum-package-age-hours=48
    root@kitploit:~
  2. متغير البيئة: ```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48 npm install express
    root@kitploit:~
  3. ملف الإعدادات (~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }
    root@kitploit:~

استبعاد الحزم

استبعد الحزم الموثوقة من تصفية الحد الأدنى للعمر عبر متغير بيئة أو ملف إعدادات (يتم دمج كلاهما). استخدم @scope/* للثقة بجميع الحزم من مؤسسة ما:```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="@aikidosec/*"

root@kitploit:~
## الحل: التشغيل الآلي باستخدام Playwright  

- يتمثل الحل في استخدام **Playwright** لتشغيل متصفح بدون واجهة رسومية لكل خطوة تتطلب JavaScript.  
- داخل سكريبت Playwright، يمكنك تخزين ملفات تعريف الارتباط ورؤوس الطلبات في متغيرات، ثم تطبيقها للطلبات اللاحقة.  
- يمكن تحقيق ذلك إما باستدعاء **python requests** في دالة `page.evaluate()` أو باستخدام واجهة برمجة التطبيقات **`playwright.request`** لإرسال طلبات HTTP مباشرة ضمن سياق المتصفح.```json
{
  "npm": {
    "minimumPackageAgeExclusions": ["@aikidosec/*"]
  },
  "pip": {
    "minimumPackageAgeExclusions": ["requests"]
  }
}

السجلات المخصصة

قم بتكوين Safe Chain لفحص الحزم من السجلات المخصصة أو الخاصة.

الأنظمة البيئية المدعومة:

  • Node.js
  • Python

خيارات التكوين

يمكنك تعيين السجلات المخصصة عبر متغير بيئة أو ملف إعداد. يتم دمج كلا المصدرين معًا.

  1. متغير البيئة (مفصول بفواصل): ```shell export SAFE_CHAIN_NPM_CUSTOM_REGISTRIES="npm.company.com,registry.internal.net" export SAFE_CHAIN_PIP_CUSTOM_REGISTRIES="pip.company.com,registry.internal.net"
    root@kitploit:~
  2. ملف الإعدادات (~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }
    root@kitploit:~

ملف تكوين PYPI

إذا كنت تعتمد على ملف pip.conf لإعداد pip، فيجب عليك توجيه pip إليه صراحةً عبر متغير البيئة PIP_CONFIG_FILE حتى تتمكن Safe Chain من دمجه.

تقوم Safe Chain بتشغيل pip خلف وكيل MITM الخاص بها وتكتب ملف تكوين pip مؤقتًا لحقن شهادة وإعدادات الوكيل الخاصة بها. عندما يكون PIP_CONFIG_FILE معينًا، تقوم Safe Chain بدمج إعداداتها في نسخة من ملفك (لا يتم تعديل ملفك الأصلي أبدًا) بحيث يتم الحفاظ على index-url وبيانات الاعتماد والخيارات الأخرى. عندما لا يكون PIP_CONFIG_FILE معينًا، قد يتم استبدال إعدادات المستخدم الخاصة بـ pip (مثل ~/.config/pip/pip.conf) بملف Safe Chain المؤقت ولن يتم أخذ إعداداتك في الاعتبار.

عنوان URL الأساسي لقائمة البرامج الضارة

قم بتكوين Safe Chain لجلب قواعد بيانات البرامج الضارة وقوائم الحزم الجديدة من عنوان URL مخصص للمرآة. يتيح لك ذلك استضافة نسختك الخاصة من قاعدة بيانات البرامج الضارة Aikido.

خيارات التكوين

يمكنك تعيين عنوان URL الأساسي لقائمة البرامج الضارة من خلال عدة مصادر (حسب الأولوية):

  1. وسيطة سطر الأوامر (الأولوية القصوى): ```shell npm install express --safe-chain-malware-list-base-url=https://your-mirror.com
    root@kitploit:~
  2. متغير البيئة: ```shell export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com npm install express
    root@kitploit:~
  3. ملف الإعداد (~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }
    root@kitploit:~

يجب أن يشير عنوان URL الأساسي إلى خادم يعكس بنية https://malware-list.aikido.dev/، بما في ذلك المسارات التالية:

  • /malware_predictions.json (قاعدة بيانات البرمجيات الخبيثة في نظام JavaScript البيئي)
  • /malware_pypi.json (قاعدة بيانات البرمجيات الخبيثة في نظام Python البيئي)
  • /releases/npm.json (قائمة الحزم الجديدة في JavaScript)
  • /releases/pypi.json (قائمة الحزم الجديدة في Python)

ملف إعدادات المشروع

بالإضافة إلى ملف الإعدادات في الدليل الرئيسي (~/.safe-chain/config.json)، يدعم Safe Chain ملف إعدادات المشروع بحيث يمكن إيداع الإعدادات في مستودع ومشاركتها عبر الفريق، بدلاً من تكوينها لكل جهاز على حدة.

أضف قسم safe-chain: إلى ملف .aikido في جذر المستودع الخاص بك (نفس الملف الذي تستخدمه أدوات Aikido الأخرى؛ يقرأ Safe Chain قسم safe-chain: الخاص به فقط ويتجاهل الباقي). عند العثور عليه، يتم دمج إعداداته فوق ملف الإعدادات في الدليل الرئيسي: القيم المحددة في إعدادات المشروع لها الأولوية، ويتم دمج المصفوفات (مثل customRegistries) من كلا الملفين بدلاً من أن يحل أحدهما محل الآخر.

يمكن ضبط الإعدادات التالية فقط من ملف إعدادات المشروع:```yaml safe-chain: minimumPackageAgeHours: 48 npm: customRegistries: - npm.company.com minimumPackageAgeExclusions: - "@aikidosec/*" pip: customRegistries: - pip.company.com minimumPackageAgeExclusions: - requests

root@kitploit:~
الإعدادات مثل `scanTimeout` و`malwareListBaseUrl` وخيارات `logFile*` لا يمكن تعيينها من ملف إعدادات المشروع - يمكنها فقط أن تأتي من إعدادات دليل منزلك، أو وسائط سطر الأوامر، أو متغيرات البيئة.

## دليل التثبيت المخصص

افتراضيًا، يقوم Safe Chain بتثبيت نفسه في `~/.safe-chain`. يمكنك تغيير ذلك عن طريق تمرير دليل تثبيت صريح إلى أداة التثبيت. هذا مفيد للتثبيتات على مستوى النظام (مثل داخل صورة Docker) أو عندما تحتاج إلى تجنب التعارضات مع الأدوات الأخرى.

عند الضبط، يتم وضع جميع بيانات Safe Chain (الملف الثنائي، والروابط، والبرامج النصية، والإعدادات) تحت الدليل المخصص بدلاً من `~/.safe-chain`.

### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c - \
  && sh /tmp/install-safe-chain.sh --install-dir /usr/local/.safe-chain \
  && rm /tmp/install-safe-chain.sh

Windows```powershell

$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -InstallDir 'C:\ProgramData\safe-chain' Remove-Item $installer

root@kitploit:~
# Usage in CI/CD

You can protect your CI/CD pipelines from malicious packages by integrating Aikido Safe Chain into your build process. This ensures that any packages installed during your automated builds are checked for malware before installation.

## Installation for CI/CD

Use the `--ci` flag to automatically configure Aikido Safe Chain for CI/CD environments. This sets up executable shims in the PATH instead of shell aliases.

### Unix/Linux/macOS (GitHub Actions, Azure Pipelines, etc.)```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c - \
  && sh /tmp/install-safe-chain.sh --ci \
  && rm /tmp/install-safe-chain.sh

Windows (Azure Pipelines، إلخ.)```powershell

$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -ci Remove-Item $installer

root@kitploit:~
## المنصات المدعومة

- ✅ **GitHub Actions**
- ✅ **Azure Pipelines**
- ✅ **CircleCI**
- ✅ **Jenkins**
- ✅ **Bitbucket Pipelines**
- ✅ **GitLab Pipelines**

## مثال GitHub Actions```yaml
- name: Setup Node.js
  uses: actions/setup-node@v4
  with:
    node-version: "22"
    cache: "npm"

- name: Install safe-chain
  run: |
    curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
    sh /tmp/install-safe-chain.sh --ci
    rm /tmp/install-safe-chain.sh

- name: Install dependencies
  run: npm ci

مثال Azure DevOps```yaml

  • task: NodeTool@0 inputs: versionSpec: "22.x" displayName: "Install Node.js"

  • script: | curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c - sh /tmp/install-safe-chain.sh --ci rm /tmp/install-safe-chain.sh displayName: "Install safe-chain"

  • script: npm ci displayName: "Install dependencies"

root@kitploit:~
## مثال CircleCI```yaml
version: 2.1
jobs:
  build:
    docker:
      - image: cimg/node:lts
    steps:
      - checkout
      - run: |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
          sh /tmp/install-safe-chain.sh --ci
          rm /tmp/install-safe-chain.sh
      - run: npm ci
workflows:
  build_and_test:
    jobs:
      - build

مثال Jenkins

ملاحظة: يفترض هذا أن Node.js وnpm مثبتان على وكيل Jenkins.```groovy pipeline { agent any

environment { // Jenkins does not automatically persist PATH updates from setup-ci, // so add the shims + binary directory explicitly for all stages. // If you installed into a custom directory, replace ~/.safe-chain with that path here. PATH = "${env.HOME}/.safe-chain/shims:${env.HOME}/.safe-chain/bin:${env.PATH}" }

stages { stage('Install safe-chain') { steps { sh ''' set -euo pipefail

root@kitploit:~
      # Install Safe Chain for CI
      curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
      echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
      sh /tmp/install-safe-chain.sh --ci
      rm /tmp/install-safe-chain.sh
    '''
  }
}

stage('Install project dependencies etc...') {
  steps {
    sh '''
      set -euo pipefail
      npm ci
    '''
  }
}

} }

root@kitploit:~
## مثال على Bitbucket Pipelines```yaml
image: node:22

steps:
  - step:
      name: Install
      script:
        - |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
          sh /tmp/install-safe-chain.sh --ci
          rm /tmp/install-safe-chain.sh
        - export PATH=~/.safe-chain/shims:~/.safe-chain/bin:$PATH
        - npm ci

بعد الإعداد، ستكون جميع أوامر مدير الحزم اللاحقة في خط أنابيب CI الخاص بك محمية تلقائيًا بواسطة كشف البرمجيات الخبيثة من Aikido Safe Chain.

مثال على خطوط أنابيب GitLab

لإضافة safe-chain في خطوط أنابيب GitLab، تحتاج إلى تثبيته في الصورة التي تشغّل خط الأنابيب. يمكن القيام بذلك عن طريق:

  1. تعريف ملف dockerfile لتشغيل البناء الخاص بك ```dockerfile FROM node:lts

    Install safe-chain

    RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
    && sh /tmp/install-safe-chain.sh --ci
    && rm /tmp/install-safe-chain.sh

    Add safe-chain to PATH (update paths if you used a custom install dir)

    ENV PATH="/root/.safe-chain/shims:/root/.safe-chain/bin:${PATH}"

    root@kitploit:~
  2. قم ببناء صورة Docker في خط أنابيب CI الخاص بك ```yaml build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest

    root@kitploit:~
  3. استخدم الصورة في خط أنابيبك: ```yaml npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

    root@kitploit:~

يبدو خط الأنابيب الكامل لهذا المثال كما يلي:```yaml stages:

  • build-image
  • install

build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest

npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

root@kitploit:~
# استكشاف الأخطاء وإصلاحها

هل تواجه مشكلات؟ راجع [دليل استكشاف الأخطاء وإصلاحها](https://github.com/aikidosec/safe-chain/blob/HEAD/docs/troubleshooting.md) للحصول على مساعدة بشأن المشكلات الشائعة.

# الإبلاغ عن المشكلات

إذا واجهت مشكلات:

1. قم بزيارة [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues)
2. قم بتضمين:
   * نظام التشغيل والإصدار
   * نوع Shell والإصدار
   * مخرجات `safe-chain --version`
   * مخرجات أوامر التحقق
   * سجلات مفصّلة للأمر الفاشل (أضف الوسيط `--safe-chain-logging=verbose`)
تنزيل الأداة