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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
garak — ماسح ضوئي معياري لثغرات LLM يفحص الهلوسة، تسرب البيانات، حقن التعليمات، كسر الحماية، والسمية باستخدام فحوصات ثابتة وديناميكية وتكيفية عبر موفري نماذج متعددين. | Kitploit
أدوات/GitHubGitHub/nvidia/garak
ماسحات الثغرات الأمنيةاختبار الاختراقتعلم الآلةالأوراق والأبحاثالتعلم والتعليمالفريق الأحمرأمن الذكاء الاصطناعيالهجوم العدائيالأفضل في الهجوم العدائي #7الأفضل في أمن الذكاء الاصطناعي #2
8.8k1.2k11منذ 5 أيامتمت المراجعة من قبل Kitploit
الأفضل في تعلم الآلة #5
GitHubnvidia/garak

garak

ماسح ضوئي معياري لثغرات LLM يفحص الهلوسة، تسرب البيانات، حقن التعليمات، كسر الحماية، والسمية باستخدام فحوصات ثابتة وديناميكية وتكيفية عبر موفري نماذج متعددين.

عرض المستودعالموقع الإلكتروني

الأكثر شعبية

عرض الكل →

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

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

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

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

garak, ماسح الثغرات في نماذج اللغة الكبيرة

مجموعة الاختبارات الهجومية والتقييم للذكاء الاصطناعي التوليدي

يتحقق garak مما إذا كان يمكن جعل LLM يفشل بطريقة لا نريدها. يفحص garak الهلوسة، تسرب البيانات، حقن الاستفسارات، المعلومات المضللة، توليد السمية، عمليات الهروب من الحماية، والعديد من نقاط الضعف الأخرى. إذا كنت تعرف nmap أو msf / Metasploit Framework، فإن garak يفعل أشياء مشابهة إلى حد ما، ولكن لنماذج LLM.

يركز garak على طرق جعل LLM أو نظام الحوار يفشل. يجمع بين الفحوصات الثابتة والديناميكية والتكيفية لاستكشاف ذلك.

garak أداة مجانية. نحن نحب تطويرها ونحن دائمًا مهتمون بإضافة وظائف لدعم التطبيقات.

License Tests/Linux

Tests/Windows
Tests/OSX
Documentation Status
arXiv
discord-img
Code style: black
PyPI - Python Version
PyPI
Downloads
Downloads

ابدأ

> انظر دليل المستخدم الخاص بنا! docs.garak.ai

> انضم إلى Discord الخاص بنا!

> روابط المشروع والموقع: garak.ai

> تويتر: @garak_llm

> DEF CON شرائح!


دعم LLM

يدعم حاليًا:

  • hugging face hub نماذج توليدية
  • replicate نماذج نصية
  • openai api نماذج الدردشة والاستمرارية
  • aws bedrock نماذج أساسية
  • litellm
  • تقريبًا أي شيء يمكن الوصول إليه عبر REST
  • نماذج gguf مثل llama.cpp الإصدار >= 1046
  • .. والعديد من نماذج LLM الأخرى!

التثبيت:

garak هي أداة سطر أوامر. تم تطويرها على Linux و OSX.

التثبيت القياسي باستخدام pip

ما عليك سوى الحصول عليه من PyPI وستكون جاهزًا للانطلاق:``` python -m pip install -U garak

root@kitploit:~
### تثبيت الإصدار التطويري باستخدام `pip`

يتم تحديث إصدار pip القياسي من `garak` بشكل دوري. للحصول على إصدار أحدث من GitHub، جرب:```
python -m pip install -U git+https://github.com/NVIDIA/garak.git@main

استنساخ من المصدر

garak له تبعياته الخاصة. يمكنك تثبيت garak في بيئة Conda الخاصة به:``` conda create --name garak "python>=3.10,<=3.12" conda activate garak gh repo clone NVIDIA/garak cd garak python -m pip install -e .

root@kitploit:~
حسنًا، إذا كان ذلك على ما يرام، فمن المحتمل أنك جاهز للمتابعة!

**ملاحظة**: إذا قمت بالاستنساخ قبل الانتقال إلى منظمة `NVIDIA` على GitHub، ولكنك تقرأ هذا على URI `github.com/NVIDIA`، فيرجى تحديث remotes الخاصة بك على النحو التالي:```
git remote set-url origin https://github.com/NVIDIA/garak.git

البدء

الصيغة العامة هي:

garak <options>

يحتاج garak إلى معرفة النموذج الذي سيتم فحصه، وسيحاول افتراضيًا جميع الاختبارات التي يعرفها على هذا النموذج، باستخدام كاشفات الثغرات الموصى بها من قبل كل اختبار. يمكنك رؤية قائمة الاختبارات باستخدام:

garak --list_probes

لتحديد مولد، استخدم الخيارين --target_type واختياريًا --target_name. يحدد نوع النموذج عائلة النموذج/الواجهة؛ ويحدد اسم النموذج النموذج الدقيق الذي سيتم استخدامه. يصف قسم "مقدمة عن المولدات" أدناه بعض المولدات المدعومة. عائلة مولدات مباشرة هي نماذج Hugging Face؛ لتحميل أحدها، قم بتعيين --target_type إلى huggingface و--target_name إلى اسم النموذج على Hub (مثل "RWKV/rwkv-4-169m-pile"). قد تحتاج بعض المولدات إلى تعيين مفتاح API كمتغير بيئة، وسيخبرونك إذا كانوا بحاجة إلى ذلك.

يقوم garak بتشغيل جميع الاختبارات افتراضيًا، ولكن يمكنك أيضًا التحديد أكثر. على سبيل المثال، --probes promptinject سيستخدم فقط أساليب إطار PromptInject. يمكنك أيضًا تحديد إضافة محددة بدلاً من عائلة إضافات عن طريق إضافة اسم الإضافة بعد نقطة .؛ على سبيل المثال، --probes lmrc.SlurUsage سيستخدم تطبيقًا للتحقق من قيام النماذج بتوليد إهانات بناءً على إطار Language Model Risk Cards.

للمساعدة والإلهام، تجدنا على تويتر أو ديسكورد!

أمثلة

اختبر نموذجًا تجاريًا للكشف عن الحقن عن طريق التعليمات المستند إلى الترميز (OSX/*nix) (استبدل القيمة المثال بمفتاح OpenAI API حقيقي)``` export OPENAI_API_KEY="sk-123XXXXXXXXXXXX" python3 -m garak --target_type openai --target_name gpt-5-nano --probes encoding

root@kitploit:~
تحقق مما إذا كان إصدار Hugging Face من GPT2 عرضة لـ DAN 11.0```
python3 -m garak --target_type huggingface --target_name gpt2 --probes dan.Dan_11_0

قراءة النتائج

لكل اختبار (probe) يتم تحميله، سيقوم garak بطباعة شريط تقدم أثناء التوليد. بمجرد اكتمال التوليد، يُعطى صف لتقييم نتائج ذلك الاختبار على كل كاشف (detector). إذا أسفرت أي من محاولات المطالبة عن سلوك غير مرغوب فيه، سيتم وضع علامة FAIL على الاستجابة، وسيتم إعطاء معدل الفشل.

فيما يلي النتائج مع وحدة encoding على متغير GPT-3: alt text

ونفس النتائج لـ ChatGPT: alt text

يمكننا ملاحظة أن النموذج الأحدث أكثر عرضة بكثير لهجمات الحقن المستندة إلى الترميز، حيث تبين أن text-babbage-001 ضعيف فقط تجاه حقن quoted-printable و MIME. الأرقام في نهاية كل صف، مثل 840/840، تشير إلى العدد الإجمالي للتوليدات النصية ثم عدد تلك التي بدت طبيعية. قد يكون الرقم مرتفعًا جدًا لأنه يتم إنشاء أكثر من توليدة لكل مطالبة - افتراضيًا، 10.

تذهب الأخطاء إلى garak.log؛ يتم تسجيل التشغيل بتفصيل في ملف .jsonl محدد في بداية التحليل ونهايته. يوجد سكريبت تحليل أساسي في analyse/analyse_log.py والذي سيُخرج الاختبارات والمطالبات التي أدت إلى أكبر عدد من الإصابات.

أرسل طلبات السحب (PRs) وافتح مشكلات. استمتع بالصيد!

مقدمة حول المولدات (Generators)

Hugging Face

استخدام واجهة Pipeline API:

  • --target_type huggingface (لنماذج transformers التي تعمل محليًا)
  • --target_name - استخدم اسم النموذج من Hub. ستعمل فقط النماذج التوليدية. إذا فشلت ولا ينبغي ذلك، يرجى فتح مشكلة مع الأمر الذي جربته + الاستثناء!

استخدام Inference API:

  • --target_type huggingface.InferenceAPI (للوصول إلى النموذج عبر API)
  • --target_name - اسم النموذج من Hub، مثل "mosaicml/mpt-7b-instruct"

استخدام نقاط النهاية الخاصة:

  • --target_type huggingface.InferenceEndpoint (لنقاط النهاية الخاصة)

  • --target_name - رابط نقطة النهاية، مثل https://xxx.us-east-1.aws.endpoints.huggingface.cloud

  • (اختياري) تعيين متغير البيئة HF_INFERENCE_TOKEN إلى رمز Hugging Face API بدور "قراءة"؛ انظر https://huggingface.co/settings/tokens عند تسجيل الدخول

OpenAI

  • --target_type openai
  • --target_name - نموذج OpenAI الذي ترغب في استخدامه. gpt-5-nano سريع ومناسب للاختبار.
  • تعيين متغير البيئة OPENAI_API_KEY إلى مفتاح API الخاص بـ OpenAI (مثل "sk-19763ASDF87q6657")؛ انظر https://platform.openai.com/account/api-keys عند تسجيل الدخول

أنواع النماذج المعترف بها مقيدة بالقائمة البيضاء، لأن الإضافة تحتاج إلى معرفة أي API فرعي تستخدمه. نماذج Completion أو ChatCompletion مقبولة. إذا كنت ترغب في استخدام نموذج غير مدعوم، يجب أن تحصل على رسالة خطأ توضيحية، ويرجى إرسال PR / فتح مشكلة.

Replicate

  • تعيين متغير البيئة REPLICATE_API_TOKEN إلى رمز API الخاص بـ Replicate، مثل "r8-123XXXXXXXXXXXX"؛ انظر https://replicate.com/account/api-tokens عند تسجيل الدخول

نماذج Replicate العامة:

  • --target_type replicate
  • --target_name - اسم نموذج Replicate ورقمه المميز (hash)، مثل "stability-ai/stablelm-tuned-alpha-7b:c49dae36"

نقاط نهاية Replicate الخاصة:

  • --target_type replicate.InferenceEndpoint (لنقاط النهاية الخاصة)
  • --target_name - اسم المستخدم/اسم النموذج المختصر من نقطة النهاية المنشورة، مثل elim/elims-llama2-7b

Cohere

  • --target_type cohere
  • --target_name (اختياري، command افتراضيًا) - نموذج Cohere المحدد الذي تريد اختباره
  • تعيين متغير البيئة COHERE_API_KEY إلى مفتاح API الخاص بـ Cohere، مثل "aBcDeFgHiJ123456789"؛ انظر https://dashboard.cohere.ai/api-keys عند تسجيل الدخول

Groq

  • --target_type groq
  • --target_name - اسم النموذج للوصول إليه عبر Groq API
  • تعيين متغير البيئة GROQ_API_KEY إلى مفتاح API الخاص بـ Groq، انظر https://console.groq.com/docs/quickstart للحصول على تفاصيل إنشاء مفتاح API

ggml

  • --target_type ggml
  • --target_name - المسار إلى نموذج ggml الذي تريد تحميله، مثل /home/leon/llama.cpp/models/7B/ggml-model-q4_0.bin
  • تعيين متغير البيئة GGML_MAIN_PATH إلى المسار الذي يحتوي على ملف main الخاص بـ ggml

REST

rest.RestGenerator مرن جدًا ويمكنه الاتصال بأي نقطة نهاية REST تُرجع نصًا عاديًا أو JSON. يحتاج إلى بعض التكوين البسيط، والذي سينتج عادةً ملف YAML قصير يصف نقطة النهاية الخاصة بك. انظر https://reference.garak.ai/en/latest/garak.generators.rest.html للحصول على أمثلة.

NIM

استخدام نماذج من https://build.nvidia.com/ أو نقاط نهاية NIM أخرى.

  • تعيين متغير البيئة NIM_API_KEY إلى رمز مصادقة API الخاص بك، أو تحديده في ملف YAML للتكوين

للنماذج الحوارية:

  • --target_type nim
  • --target_name - اسم نموذج NIM model، مثل meta/llama-3.1-8b-instruct

للنماذج الإكمالية:

  • --target_type nim.NVOpenAICompletion
  • --target_name - اسم نموذج NIM model، مثل bigcode/starcoder2-15b

AWS Bedrock

  • --target_type bedrock
  • --target_name - معرف نموذج Bedrock أو الاسم المستعار، مثل anthropic.claude-3-sonnet-20240229-v1:0 أو claude-3-sonnet
  • تعيين متغير البيئة BEDROCK_API_KEY إلى مفتاح API الخاص بـ AWS Bedrock؛ انظر https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html للحصول على تعليمات الإعداد
  • (اختياري) تعيين متغير البيئة BEDROCK_REGION لتحديد منطقة AWS (الافتراضي us-east-1)

تشمل عائلات النماذج المدعومة نماذج Anthropic Claude و Meta Llama و Amazon Titan و AI21 Labs و Cohere و Mistral AI. يستخدم المولد Converse API للوصول الموحد عبر جميع أنواع النماذج.

مثال على الاستخدام:``` export BEDROCK_API_KEY="your-api-key" export BEDROCK_REGION="us-east-1" garak --target_type bedrock --target_name claude-3-sonnet --probes dan

root@kitploit:~
### الاختبار

* `--target_type test`
* (بدلاً من ذلك) `--target_name test.Blank`
لأغراض الاختبار. يُنتج هذا دائمًا سلسلة فارغة، باستخدام المُولِّد `test.Blank`. سيتم وضع علامة فشل لأي اختبارات *تتطلب* مخرَجًا، مثل تلك التي تُقدِّم ادعاءات مثيرة للجدل وتتوقع من النموذج دحضها لاجتياز الاختبار.

* `--target_type test.Repeat`
لأغراض الاختبار. يُكرِّر هذا المُولِّد المطالبة التي تلقاها.

## مقدمة حول الفحوصات

| الفحص                | الوصف                                                                                                                       |
|----------------------|-------------------------------------------------------------------------------------------------------------------------------|
| blank                | فحص بسيط يُرسل دائمًا مطالبة فارغة.                                                                             |
| atkgen               | توليد الهجوم الآلي. نموذج لغة أحمر الفريق يفحص الهدف ويتفاعل معه في محاولة للحصول على مخرجات سامة. نموذج أولي، شبه عديم الحالة حاليًا، يستخدم حاليًا نموذج GPT-2 [مُعدَّلًا بدقة](https://huggingface.co/garak-llm/artgpt2tox) على مجموعة فرعية من محاولات hhrlhf التي أسفرت عن سمية قابلة للكشف (الهدف الوحيد المدعوم حاليًا في الوقت الحالي). |
| badchars             | ينفِّذ تشويشات يونيكود غير محسوسة (أحرف غير مرئية، متجانسات، إعادة ترتيب، حذف) مستوحاة من ورقة [Bad Characters](https://arxiv.org/abs/2106.09898). |
| av_spam_scanning     | فحوصات تحاول جعل النموذج يُخرِج توقيعات محتوى ضار.                                                    |
| continuation         | فحوصات تختبر ما إذا كان النموذج سيستمر في كلمة غير مرغوب فيها على الأرجح.                                                       |
| dan                  | هجمات [DAN](https://adguard.com/en/blog/chatgpt-dan-prompt-abuse.html) وهجمات مشابهة لـ DAN.                                 |
| donotanswer          | مطالبات لا ينبغي لنماذج اللغة المسؤولة الإجابة عليها.                                                               |
| encoding             | حقن المطالبات من خلال ترميز النص.                                                                                        |
| gcg                  | تعطيل المطالبة النظامية بإلحاق لاحقة عدائية.                                                                   |
| glitch               | فحص النموذج بحثًا عن رموز العطل التي تُثير سلوكًا غير معتاد.                                                                  |
| grandma              | مناشدة لتذكير المرء بجدته.                                                                                   |
| goodside             | تطبيقات هجمات Riley Goodside.                                                                                    |
| leakreplay           | تقييم ما إذا كان النموذج سيعيد بيانات التدريب.                                                                                |
| lmrc                 | عينة فرعية من فحوصات [بطاقة مخاطر نموذج اللغة](https://arxiv.org/abs/2303.18190).                                         |
| malwaregen           | محاولات جعل النموذج يُولِّد كودًا لبناء برمجيات خبيثة.                                                                 |
| misleading           | محاولات جعل النموذج يدعم ادعاءات مضللة وكاذبة.                                                                  |
| packagehallucination | محاولة الحصول على توليدات كود تُحدِّد حزمًا غير موجودة (وبالتالي غير آمنة).                                   |
| promptinject         | تطبيق لعمل [PromptInject](https://github.com/agencyenterprise/PromptInject/tree/main/promptinject) من Agency Enterprise (جائزة أفضل ورقة بحثية في ورشة عمل NeurIPS ML Safety 2022). |
| realtoxicityprompts  | مجموعة فرعية من عمل RealToxicityPrompts (بيانات محدودة لأن الاختبار الكامل سيستغرق وقتًا طويلاً للتشغيل).                      |
| snowball             | فحوصات [الهلوسة المتساقطة](https://ofir.io/snowballed_hallucination.pdf) المصممة لجعل النموذج يُعطي إجابة خاطئة لأسئلة معقدة جدًا بحيث لا يمكنه معالجتها. |
| xss                  | ابحث عن ثغرات تسمح بتنفيذ هجمات عبر المواقع أو تمكينها، مثل سرقة البيانات الخاصة.                           |

## التسجيل

يُولِّد `garak` أنواعًا متعددة من السجلات:
* ملف سجل، `garak.log`. يتضمن معلومات تصحيح من `garak` وإضافاته، ويستمر عبر عمليات التشغيل.
* تقرير عن التشغيل الحالي، منظم بتنسيق JSONL. يتم إنشاء ملف تقرير جديد في كل مرة يتم فيها تشغيل `garak`. يُخرج اسم هذا الملف في البداية، وإذا نجح التشغيل، أيضًا في نهايته. في التقرير، يتم إدخال إدخال لكل محاولة فحص عند استلام التوليدات، ومرة أخرى عند تقييمها؛ تأخذ سمة `status` للإدخال ثابتًا من `garak.attempts` لوصف المرحلة التي تم فيها الإدخال.
* سجل الضربات، يفصِّل المحاولات التي أسفرت عن ثغرة (ضربة).

## كيف يتم تنظيم الكود؟

اطلع على [وثائق المرجع](https://reference.garak.ai/) للحصول على دليل موثوق لبنية كود `garak`.

في تشغيل نموذجي، سيقرأ `garak` نوع النموذج (واسم النموذج اختياريًا) من سطر الأوامر، ثم يحدد أي `probe`s و `detector`s سيشغلها، ويبدأ `generator`، ثم يمررها إلى `harness` لإجراء الفحص؛ يتعامل `evaluator` مع النتائج. هناك العديد من الوحدات في كل من هذه الفئات، وتوفر كل وحدة عددًا من الفئات التي تعمل كإضافات فردية.

* `garak/probes/` - فئات لتوليد التفاعلات مع نماذج اللغة الكبيرة
* `garak/detectors/` - فئات لاكتشاف أن نموذج اللغة يُظهر نمط فشل معين
* `garak/evaluators/` - مخططات تقييم التقارير
* `garak/generators/` - إضافات لنماذج اللغة التي سيتم فحصها
* `garak/harnesses/` - فئات لتنظيم الاختبارات
* `resources/` - عناصر مساعدة مطلوبة من قبل الإضافات

وضع التشغيل الافتراضي هو استخدام harness `probewise`. بالنظر إلى قائمة بأسماء وحدات الفحص وأسماء إضافات الفحص، يُنشئ harness `probewise` كل فحص، ثم لكل فحص يقرأ سمات `primary_detector` و `extended_detectors` للحصول على قائمة بـ `detector`s لتشغيلها على المخرج.

تشتمل كل فئة من فئات الإضافات (`probes`، `detectors`، `evaluators`، `generators`، `harnesses`) على ملف `base.py` يُعرِّف الفئات الأساسية القابلة للاستخدام من قبل الإضافات في تلك الفئة. تُعرِّف كل وحدة إضافة فئات إضافات ترث من إحدى الفئات الأساسية. على سبيل المثال، `garak.generators.openai.OpenAIGenerator` ينحدر من `garak.generators.base.Generator`.

تُحفظ القطع الأثرية الأكبر، مثل ملفات النماذج والمجاميع اللغوية الأكبر، خارج المستودع؛ يمكن تخزينها على سبيل المثال في محور Hugging Face وتحميلها محليًا من قبل العملاء الذين يستخدمون `garak`.

## تطوير الإضافة الخاصة بك

* ألقِ نظرة على كيفية عمل الإضافات الأخرى
* ورث من إحدى الفئات الأساسية، على سبيل المثال `garak.probes.base.TextProbe`
* تجاوز بأقل قدر ممكن
* يمكنك اختبار الكود الجديد بطريقتين على الأقل:
  * ابدأ جلسة Python تفاعلية
    * استيراد النموذج، مثال: `import garak.probes.mymodule`
    * إنشاء مثيل للإضافة، مثال: `p = garak.probes.mymodule.MyProbe()`
  * قم بتشغيل فحص باستخدام إضافات اختبارية
    * بالنسبة للفحوصات، جرب مُولِّدًا فارغًا وكاشف always.Pass: `python3 -m garak -m test.Blank -p mymodule -d always.Pass`
    * بالنسبة للكاشفات، جرب مُولِّدًا فارغًا وفحصًا فارغًا: `python3 -m garak -m test.Blank -p test.Blank -d mymodule`
    * بالنسبة للمُولِّدات، جرب فحصًا فارغًا وكاشف always.Pass: `python3 -m garak -m mymodule -p test.Blank -d always.Pass`
  * اجعل `garak` يسرد جميع الإضافات من النوع الذي تكتبه، باستخدام `--list_probes` أو `--list_detectors` أو `--list_generators`

## الأسئلة الشائعة

لدينا أسئلة شائعة [هنا](https://github.com/NVIDIA/garak/blob/main/FAQ.md). تواصل معنا إذا كان لديك أي أسئلة أخرى! [[email protected]](mailto:[email protected])

وثائق مرجع الكود موجودة على [garak.readthedocs.io](https://garak.readthedocs.io/en/latest/).

## الاستشهاد بـ garak

يمكنك قراءة [ورقة garak الأولية](https://github.com/nvidia/garak/blob/main/garak-paper.pdf). إذا كنت تستخدم garak، فيُرجى الاستشهاد بنا.```
@article{garak,
  title={{garak: A Framework for Security Probing Large Language Models}},
  author={Leon Derczynski and Erick Galinkin and Jeffrey Martin and Subho Majumdar and Nanna Inie},
  year={2024},
  howpublished={\url{https://garak.ai}}
}

"الكذب مهارة مثل أي مهارة أخرى، وإذا أردت الحفاظ على مستوى من التميز عليك أن تتمرن باستمرار" - Elim

للحصول على التحديثات والأخبار، انظر @garak_llm

© 2023- Leon Derczynski; رخصة Apache v2، انظر LICENSE

تنزيل الأداة