
nuguard v0.9.1
مستودع مفتوح المصدر للتحقق من صحة تطبيقات الذكاء الاصطناعي الوكيل: redteam, behavior, supply-chain, static analysis
NuGuard مفتوح المصدر
NuGuard هي مجموعة أدوات أمان مفتوحة المصدر لتطبيقات الذكاء الاصطناعي. هدفها هو توفير أوسع نطاق من اختبارات الاختراق (redteaming) والتحقق السلوكي لتطبيقات الذكاء الاصطناعي العاملة بالوكالة (Agentic AI).
باستخدام NuGuard، يمكن لمطوري الذكاء الاصطناعي التركيز على بناء تطبيقاتهم بينما تقوم NuGuard باختبارها والتحقق منها باستمرار ضد مجموعة واسعة من المخاطر الأمنية، بما في ذلك هجمات سلسلة التوريد، وحقن المطالبات (prompt injection)، وإساءة استخدام أدوات MCP، وهجمات API، وسرقة البيانات، وغيرها. تتيح NuGuard للمطورين تسريع سير عملهم الأمني والوصول إلى مرحلة الإنتاج بثقة أكبر.
تتوفر نسخة تجارية من NuGuard كمنتج SaaS بميزات ودعم إضافيين، يمكنك الاطلاع عليها على http://nuguard.ai.
ما الذي يفعله
- إنشاء AI-SBOM من قاعدة بيانات محلية أو مستودع Git
- تحليل AI-SBOM للكشف عن المخاطر الأمنية الهيكلية للذكاء الاصطناعي ومشكلات سلسلة التوريد
- اقتراح سياسة سلوكية للذكاء الاصطناعي بناءً على AI-SBOM
- إجراء اختبارات سلوكية ثابتة وديناميكية مصممة خصيصًا حول AI-SBOM والسياسة السلوكية
- إجراء اختبار اختراق (red-teaming) لتطبيق ذكاء اصطناعي معزول: أحدث وأوسع كتالوج لناقلات الهجوم بالإضافة إلى سيناريوهات مخصصة. يشمل ذلك حقن المطالبات، وإساءة استخدام الأدوات، وسرقة البيانات، وسيناريوهات هجوم ذات صلة تختبر مختلف الوكلاء الفرعيين والأدوات والقدرات للنظام المستهدف.
- اقتراحات تلقائية لمعالجة النتائج، بما في ذلك مقتطفات التعليمات البرمجية وتعديلات السياسة
- تصدير النتائج بصيغ النص و JSON و Markdown وسير العمل الموجهة لـ SARIF
واجهة سطر الأوامر الحالية
منفذة وقابلة للاستخدام الآن:
nuguard sbomnuguard analyzenuguard scannuguard policynuguard behaviornuguard redteam
المتطلبات
- Python 3.12+
uvلسير العمل المحلي الموصى به
التثبيت
واجهة سطر الأوامر بايثون:
pip install nuguard
تصف الخطوات أدناه كيفية إعداد بيئة تطوير محلية. يوصى بهذا إذا كنت ترغب في تشغيل أحدث إصدار من الكود، أو المساهمة في المشروع، أو تشغيل واجهة سطر الأوامر مع ميزات مدعومة بنماذج لغوية كبيرة (LLM) تتطلب تكوين متغيرات البيئة المحلية.
uv sync --dev
تشغيل واجهة سطر الأوامر بـ:
uv run nuguard --help
أو، من البيئة الافتراضية:
. .venv/bin/activate
nuguard --help
يمكن لمستخدمي Claude استخدام أوامر الإضافات.
اتبع التعليمات في docs/plugin-guide.md لإعداد إضافة NuGuard لـ Claude واستخدامها لتشغيل أوامر مثل /nuguard-sbom و /nuguard-analyze و /nuguard-redteam مباشرة من محادثاتك مع Claude.
بداية سريعة
1. إنشاء AI-SBOM
nuguard sbom generate --source . --output app.sbom.json
يمكنك أيضًا فحص مستودع عن بُعد:
nuguard sbom generate \
--from-repo https://github.com/org/repo \
--ref main \
--output app.sbom.json
2. تشغيل التحليل الثابت
nuguard analyze --sbom app.sbom.json --format markdown
المخرجات النموذجية:
markdownللمراجعة البشريةjsonللأتمتةsarifلخطوط مسح الكود
3. الاختبارات السلوكية
nuguard behavior \
--sbom app.sbom.json \
--target http://localhost:3000 \
--format markdown
4. اختبار اختراق تطبيق مباشر (Red-Team)
nuguard redteam \
--config nuguard.yaml \
--output reports/redteam.md \
--format markdown
لتغطية أكثر شمولاً لاختبار الاختراق (red-team)، يمكنك أيضًا توفير:
- سياسة معرفية باستخدام
--policy - قيم canary باستخدام
--canary - ملف إعدادات باستخدام
--config
5. تشغيل خط الأنابيب الموحد
nuguard scan \
--source . \
--output-dir nuguard-reports
افتراضيًا، يقوم هذا بتشغيل إنشاء AI-SBOM بالإضافة إلى التحليل الثابت في مسار واحد. لتضمين عمليات التحقق من السياسة واختبار الاختراق، قم بتفعيل تلك الخطوات وتوفير المدخلات المطلوبة:
nuguard scan \
--source . \
--steps sbom,analyze,policy,redteam \
--policy cognitive_policy.md \
--target http://localhost:3000 \
--output-dir nuguard-reports
الإعدادات
يدعم NuGuard إعدادات المشروع من خلال nuguard.yaml. يوجد مثال جاهز للتعديل في nuguard.yaml.example.
المجالات الرئيسية في مثال الإعدادات:
sbom: مسار AI-SBOM الحاليsource: دليل المصدر للإنشاءpolicy: مسار السياسة المعرفيةllm: إعدادات النموذج للميزات المدعومة بنماذج لغوية كبيرةbehavior: عنوان URL الهدف، نقطة النهاية، وإعدادات ملف تعريف الاختبار للاختبارات السلوكيةredteam: عنوان URL الهدف، نقطة النهاية، ملف canary، ملفات التعريف، مرشحات السيناريو، إعدادات المحادثة الموجهة، وضوابط تشغيل النتائج (finding_triggers.*)analyze: الحد الأدنى لمستوى الخطورةdatabase: إعدادات التخزين المدعومة بـ SQLite أو Postgresoutput: تنسيق الإخراج وعتبة الفشل
تتجاوز خيارات سطر الأوامر إعدادات nuguard.yaml، التي تتجاوز متغيرات البيئة والإعدادات الافتراضية المضمنة.
Canary لاختبار الاختراق
يمكن لـ NuGuard مراقبة قيم canary المزروعة أثناء الاختبار الديناميكي لإنتاج نتائج عالية الثقة حول سرقة البيانات. ابدأ من canary.example.json، وأنشئ ملف canary.json المحلي الخاص بك، وقم بزرع تلك القيم في النظام المستهدف، ثم وجه nuguard redteam إلى ذلك الملف باستخدام --canary.
مزيد من التفاصيل متوفرة في docs/redteam-engine.md.
التطوير
تثبيت تبعيات التطوير:
make dev
تشغيل الاختبارات:
make test
تشغيل فحص الجودة (linting) والتحقق من الأنواع:
make lint
تنسيق قاعدة الكود:
make fmt
النشر
يتضمن هذا المستودع سير عمل GitHub Actions للنشر الموثوق (Trusted Publishing) إلى TestPyPI و PyPI:
قبل أن تتمكن سير العمل من النشر، قم بتكوين الناشرين الموثوقين (Trusted Publishers) في TestPyPI و PyPI لمشروع nuguard بـ:
- owner/org:
NuGuardAI - repository:
nuguard - workflow file:
publish-testpypi.ymlأوpublish-pypi.yml - environment:
testpypiأوpypi
سير العمل الموصى به للإصدار:
- قم بتشغيل سير عمل TestPyPI يدويًا من GitHub Actions.
- تحقق من تثبيت الحزمة وسلوك واجهة سطر الأوامر من TestPyPI.
- أنشئ إصدارًا على GitHub لتشغيل سير عمل نشر PyPI.
فحوصات السلامة قبل النشر
قبل النشر إلى TestPyPI أو PyPI، قم بتشغيل بوابة السلامة السريعة متعددة التطبيقات.
مشغل مرة واحدة:
bash tests/apps/prepublish-sanity.sh
يقوم هذا المشغل بـ:
- فحص سريع للتطبيق (
nuguard --helpبالإضافة إلى اختبارات محلية حرجة) - تشغيل سلوكي في الوضع الديناميكي مع سير عمل
intent_happy_path - تشغيل اختبار اختراق مع
profile: ci - بوابات الجودة والقطع الأثرية (تقارير غير فارغة، سيناريوهات منفذة غير صفرية، فحوصات صارمة للمصدر ونقطة النهاية، وحواجز حماية من أخطاء النقل)
ملفات الإعدادات قبل النشر التي يستخدمها المشغل:
tests/apps/openai-cs-agents-demo/nuguard.prepublish.yamltests/apps/Gemini-Auto-app/nuguard.prepublish.yamltests/apps/pinnacle-bank-app/nuguard-azure.prepublish.yaml
تشغيل يدويًا لكل تطبيق (إذا لزم الأمر):
# OpenAI CS agents demo
uv run nuguard sbom generate --config tests/apps/openai-cs-agents-demo/nuguard.prepublish.yaml --format json -o tests/apps/openai-cs-agents-demo/openai-cs.sbom.json
uv run nuguard behavior --config tests/apps/openai-cs-agents-demo/nuguard.prepublish.yaml --mode dynamic --format json --format markdown --output tests/apps/openai-cs-agents-demo/reports/openai-cs-prepublish-behavior --verbose
uv run nuguard redteam --config tests/apps/openai-cs-agents-demo/nuguard.prepublish.yaml --format json --format markdown --output tests/apps/openai-cs-agents-demo/reports/openai-cs-prepublish-redteam --verbose
# Gemini Auto app
uv run nuguard sbom generate --config tests/apps/Gemini-Auto-app/nuguard.prepublish.yaml --format json -o tests/apps/Gemini-Auto-app/gemini-auto.sbom.json
uv run nuguard behavior --config tests/apps/Gemini-Auto-app/nuguard.prepublish.yaml --mode dynamic --format json --format markdown --output tests/apps/Gemini-Auto-app/reports/gemini-auto-prepublish-behavior --verbose
uv run nuguard redteam --config tests/apps/Gemini-Auto-app/nuguard.prepublish.yaml --format json --format markdown --output tests/apps/Gemini-Auto-app/reports/gemini-auto-prepublish-redteam --verbose
# Pinnacle Bank app
uv run nuguard sbom generate --config tests/apps/pinnacle-bank-app/nuguard-azure.prepublish.yaml --format json -o tests/apps/pinnacle-bank-app/pinnacle-bank.sbom.json
uv run nuguard behavior --config tests/apps/pinnacle-bank-app/nuguard-azure.prepublish.yaml --mode dynamic --format json --format markdown --output tests/apps/pinnacle-bank-app/reports/pinnacle-bank-prepublish-behavior --verbose
uv run nuguard redteam --config tests/apps/pinnacle-bank-app/nuguard-azure.prepublish.yaml --format json --format markdown --output tests/apps/pinnacle-bank-app/reports/pinnacle-bank-prepublish-redteam --verbose
مهم:
- لا تستخدم
|| trueفي عمليات النشر المقررة. - رمز الخروج
2قد يشير إلى نتائج أو بوابات سياسة؛ تعامل معه كإشارة واعتمد على فحوصات جودة التقرير لتحديد النجاح/الفشل.
ملاحظات المستودع
- يحتوي المستودع حاليًا على مخرجات أمثلة وتركيبات اختبار مرجعية تحت
tests/output/ - بعض اختبارات الاختراق والاختبارات المرجعية اختيارية ومقيدة بمتغيرات البيئة
- تعتمد الميزات المدعومة بنماذج لغوية كبيرة على توفر بيانات اعتماد المزود عبر متغيرات البيئة
الترخيص
معلومات الترخيص متوفرة في ملف LICENSE.