
augustus v0.14.24
إطار اختبار أمني لنماذج اللغة الكبيرة (LLM) لكشف حقن الأوامر (prompt injection) والاختراقات (jailbreaks) والهجمات المعادية (adversarial attacks) — أكثر من 190 مسبارًا، 28 مزودًا، ملف ثنائي واحد بلغة Go.
Augustus - ماسح ثغرات نماذج اللغة الكبيرة لاختبار حقن الأوامر وكسر الحماية والهجمات العدائية
Augustus - ماسح ثغرات نماذج اللغة الكبيرة
اختبر نماذج اللغة الكبيرة ضد أكثر من 210 هجوم عدائي يغطي حقن الأوامر، وكسر الحماية، واستغلال الترميز، واستخراج البيانات.
Augustus هو ماسح ثغرات لنماذج اللغة الكبيرة مبني على لغة Go ومصمم لمحترفي الأمن. يختبر نماذج اللغة الكبيرة ضد مجموعة واسعة من الهجمات العدائية، ويتكامل مع 28 مزودًا لنماذج اللغة، وينتج تقارير ثغرات قابلة للتنفيذ.
على عكس الأدوات الموجهة للبحث، صُمم Augustus لاختبار الأمن في بيئات الإنتاج — الفحص المتزامن، وتحديد معدل الطلبات، ومنطق إعادة المحاولة، ومعالجة المهلات كلها مدمجة افتراضيًا.
جدول المحتويات
- لماذا Augustus
- الميزات
- البدء السريع
- المزودون المدعومون
- الاستخدام
- كيف يعمل
- البنية
- الإعداد
- الأسئلة الشائعة
- استكشاف الأخطاء وإصلاحها
- المساهمة
- الأمن
- الدعم
- الترخيص
لماذا Augustus
| الميزة | Augustus | garak | promptfoo |
|---|---|---|---|
| اللغة | Go | Python | TypeScript |
| ملف تنفيذي واحد | نعم | لا | لا |
| الفحص المتزامن | تجمعات Goroutine | تجمعات معالجة متعددة | نعم |
| مزودو نماذج اللغة | 28 | 35+ | 80+ |
| أنواع الاختبارات | 210+ | 160+ | 119 إضافة + 36 استراتيجية |
| التركيز المؤسسي | نعم | بحثي | نعم |
الميزات
| الميزة | الوصف |
|---|---|
| أكثر من 210 اختبار ثغرات | 47 فئة هجوم: كسر الحماية، حقن الأوامر، الأمثلة العدائية، استخراج البيانات، معايير السلامة، هجمات الوكلاء، والمزيد |
| 28 مزودًا لنماذج اللغة | OpenAI، Anthropic، Azure، Bedrock، Vertex AI، Ollama، و22 آخرون مع 43 متغيرًا للمولّد |
| أكثر من 90 كاشفًا | مطابقة الأنماط، LLM-as-a-judge، HarmJudge (arXiv:2511.15304)، Perspective API، كشف المحتوى غير الآمن |
| 7 تحويلات Buff | الترميز، إعادة الصياغة، الشعر (5 صيغ، 3 استراتيجيات)، الترجمة بلغات منخفضة الموارد، تحويلات حالة الأحرف |
| إخراج مرن | صيغ تقارير جدولية وJSON وJSONL وHTML |
| جاهز للإنتاج | فحص متزامن، تحديد معدل الطلبات، منطق إعادة المحاولة، معالجة المهلات |
| ملف تنفيذي واحد | أداة مبنية على Go تُترجم إلى ملف تنفيذي محمول واحد |
| قابل للتوسعة | تسجيل بنمط الإضافات عبر دوال init() في Go |
فئات الهجوم
- هجمات كسر الحماية: DAN، DAN 11.0، AIM، AntiGPT، Grandma، ArtPrompts
- حقن الأوامر: الترميز (Base64، ROT13، Morse)، تهريب الوسوم، FlipAttack، حقن البادئة/اللاحقة
- الأمثلة العدائية: GCG، PAIR، AutoDAN، TAP (شجرة هجمات الأوامر)، TreeSearch، DRA
- الهجمات متعددة الجولات: Crescendo (التصعيد التدريجي)، GOAT (التبديل التكيفي للتقنيات)
- استخراج البيانات: تسريب مفاتيح API، هلوسة الحزم، استخراج PII، LeakReplay
- التلاعب بالسياق: تسميم RAG، تجاوز السياق، الهجمات متعددة الوسائط، الاستمرار، الانحراف
- استغلال الصيغ: حقن Markdown، هجمات تحليل YAML/JSON، رموز ANSI، حقن الويب (XSS)
- تقنيات المراوغة: التعتيم، استبدال الأحرف، الهجمات القائمة على الترجمة، إعادة الصياغة، ObscurePrompt
- معايير السلامة: DoNotAnswer، RealToxicityPrompts، Snowball، LMRC
- هجمات الوكلاء: التلاعب بالوكلاء المتعددين، استغلال التصفح
- اختبار الأمن: تجاوز الحواجز الوقائية، فحص AV/البريد العشوائي، الاستغلال (SQLi، تنفيذ الأكواد)، BadChars
تحذير: يستخدم اختبار
lmrcلغة بذيئة ومسيئة كجزء من اختبار كسر الحماية. استخدمه فقط في بيئات الاختبار المصرح بها.
البدء السريع
التثبيت
يتطلب Go 1.27.0 أو أحدث.```bash go install github.com/praetorian-inc/augustus/cmd/augustus@latest
أو قم بالبناء من المصدر:```bash
git clone https://github.com/praetorian-inc/augustus.git
cd augustus
make build
الاستخدام الأساسي```bash
export OPENAI_API_KEY="your-api-key"
augustus scan openai.OpenAI
--probe dan.Dan_11_0
--detector dan.DAN
--verbose
### مثال على الإخراج```
+--------------+-------------+--------+-------+--------+
| PROBE | DETECTOR | PASSED | SCORE | STATUS |
+--------------+-------------+--------+-------+--------+
| dan.Dan_11_0 | dan.DAN | false | 0.85 | VULN |
| dan.STAN | dan.STAN | true | 0.10 | SAFE |
| dan.AntiDAN | dan.AntiDAN | true | 0.05 | SAFE |
+--------------+-------------+--------+-------+--------+
قائمة القدرات المتاحة```bash
List all registered probes, detectors, generators, harnesses, and buffs
augustus list
## المزوّدون المدعومون
يتضمّن Augustus 28 فئة من مزوّدي نماذج اللغات الكبيرة مع 43 نوعاً من المولّدات:
| المزوّد | أسماء المولّدات | ملاحظات |
|--------------------|---------------------------|--------------------------------|
| OpenAI | `openai.OpenAI`, `openai.OpenAIReasoning` | GPT-3.5, GPT-4, GPT-4 Turbo, نماذج الاستدلال o1/o3 |
| Anthropic | `anthropic.Anthropic` | Claude 3/3.5/4 (Opus, Sonnet, Haiku) |
| Azure OpenAI | `azure.AzureOpenAI` | نماذج OpenAI المستضافة على Azure |
| AWS Bedrock | `bedrock.Bedrock` | نماذج Claude, Llama, Titan |
| Google Vertex AI | `vertex.Vertex` | نماذج PaLM, Gemini |
| Cohere | `cohere.Cohere` | نماذج Command, Command R |
| Replicate | `replicate.Replicate` | نماذج مفتوحة المصدر مستضافة سحابياً |
| HuggingFace | `huggingface.InferenceAPI`, `huggingface.InferenceEndpoint`, `huggingface.Pipeline`, `huggingface.LLaVA` | HF Inference API, نقاط النهاية, خطوط الأنابيب, متعدد الوسائط |
| Together AI | `together.Together` | استدلال سريع لنماذج OSS |
| Anyscale | `anyscale.Anyscale` | استضافة Llama و Mistral |
| Groq | `groq.Groq` | استدلال LPU فائق السرعة |
| Mistral | `mistral.Mistral` | نماذج Mistral API |
| Fireworks | `fireworks.Fireworks` | منصة استدلال للإنتاج |
| DeepInfra | `deepinfra.DeepInfra` | استدلال GPU بدون خادم |
| NVIDIA NIM | `nim.NIM`, `nim.NVOpenAICompletion`, `nim.NVMultimodal`, `nim.Vision` | نقاط نهاية NVIDIA AI, متعدد الوسائط |
| NVIDIA NeMo | `nemo.NeMo` | إطار عمل NVIDIA NeMo |
| NVIDIA NVCF | `nvcf.NvcfChat`, `nvcf.NvcfCompletion` | NVIDIA Cloud Functions |
| NeMo Guardrails | `guardrails.NeMoGuardrails` | NVIDIA NeMo Guardrails |
| IBM watsonx | `watsonx.WatsonX` | منصة IBM watsonx.ai |
| LangChain | `langchain.LangChain` | غلاف LangChain LLM |
| LangChain Serve | `langchain_serve.LangChainServe` | نقاط نهاية LangChain Serve |
| Rasa | `rasa.RasaRest` | Rasa للذكاء الاصطناعي المحادثي |
| GGML | `ggml.Ggml` | استدلال النماذج المحلية GGML |
| Function | `function.Single`, `function.Multiple` | مولّدات دوال مخصصة |
| Ollama | `ollama.Ollama`, `ollama.OllamaChat` | استضافة النماذج محلياً |
| LiteLLM | `litellm.LiteLLM` | وكيل API موحّد |
| REST API | `rest.Rest` | نقاط نهاية REST مخصصة (دعم SSE) |
| Test | `test.Blank`, `test.Repeat`, `test.Lipsum`, `test.Nones`, `test.Single`, `test.BlankVision` | الاختبار والتطوير |
جميع المزوّدين متاحون في الملف الثنائي المُجمَّع. قم بالتكوين عبر متغيرات البيئة أو ملفات تكوين YAML. راجع [Configuration](#configuration) للحصول على تفاصيل الإعداد.
## الاستخدام
### فحص واحد```bash
# Test for DAN jailbreak
augustus scan openai.OpenAI \
--probe dan.Dan_11_0 \
--detector dan.DAN \
--config-file config.yaml \
--verbose
مجسات متعددة```bash
Use glob patterns to run related probes
augustus scan openai.OpenAI
--probes-glob "dan.,goodside.,grandma."
--detectors-glob ""
--config-file config.yaml
--output batch-results.jsonl
Run all probes against Claude
augustus scan anthropic.Anthropic
--all
--config '{"model":"claude-3-opus-20240229"}'
--timeout 60m
--output comprehensive-scan.jsonl
--html comprehensive-report.html
### تحويلات Buff
طبّق تحويلات على المطالبات لاختبار تقنيات التهرب:```bash
# Apply base64 encoding buff to all probes
augustus scan openai.OpenAI \
--all \
--buff encoding.Base64 \
--config '{"model":"gpt-4"}'
# Apply poetry transformation
augustus scan anthropic.Anthropic \
--probes-glob "dan.*" \
--buff poetry.MetaPrompt \
--config '{"model":"claude-3-opus-20240229"}'
# Chain multiple buffs
augustus scan openai.OpenAI \
--all \
--buffs-glob "encoding.*,paraphrase.*" \
--output buffed-results.jsonl
تنسيقات الإخراج```bash
Table format (default) - human-readable
augustus scan openai.OpenAI --probe dan.Dan_11_0 --format table
JSON format - structured output
augustus scan openai.OpenAI --probe dan.Dan_11_0 --format json
JSONL format - one JSON object per line, ideal for piping
augustus scan openai.OpenAI --probe dan.Dan_11_0 --format jsonl
HTML report - visual reports for stakeholders
augustus scan openai.OpenAI --all --html report.html
### نقاط نهاية REST المخصصة```bash
# Test proprietary LLM endpoint (OpenAI-compatible API)
augustus scan rest.Rest \
--probe dan.Dan_11_0 \
--detector dan.DAN \
--config '{
"uri": "https://api.example.com/v1/chat/completions",
"method": "POST",
"headers": {"Authorization": "Bearer YOUR_API_KEY"},
"req_template_json_object": {
"model": "custom-model",
"messages": [{"role": "user", "content": "$INPUT"}]
},
"response_json": true,
"response_json_field": "$.choices[0].message.content"
}'
# Test with proxy interception (Burp Suite, mitmproxy)
augustus scan rest.Rest \
--probes-glob "goodside.*" \
--config '{
"uri": "https://internal-llm.corp/generate",
"proxy": "http://127.0.0.1:8080",
"headers": {"X-API-Key": "$KEY"},
"api_key": "your-key-here",
"req_template": "{\"prompt\":\"$INPUT\",\"max_tokens\":500}",
"response_json": true,
"response_json_field": "output"
}'
مفاتيح تكوين REST:
uri: نقطة نهاية API المستهدفة (مطلوبة)method: طريقة HTTP (الافتراضي: POST)headers: ترويسات HTTP كأزواج مفتاح-قيمةreq_template: نص الطلب الخام مع عنصر نائب$INPUTreq_template_json_object: نص طلب JSON (يتم تحويله تلقائيًا، استخدم$INPUTفي السلاسل النصية)response_json: تحليل الاستجابة كـ JSON (الافتراضي: false)response_json_field: مسار JSONPath للاستخراج (مثل$.data.textأو اسم حقل بسيط)api_key: مفتاح API لاستبدال العنصر النائب$KEYproxy: عنوان URL لوكيل HTTP لفحص حركة المرور
خيارات متقدمة```bash
Adjust concurrency (default: 10)
augustus scan openai.OpenAI --all --concurrency 20
Increase timeout for complex probes like TAP or PAIR
augustus scan openai.OpenAI --probe tap.TAPv1 --timeout 60m
Use a specific harness strategy
augustus scan openai.OpenAI --all --harness batch.Batch
Test local model with Ollama (no API key needed)
augustus scan ollama.OllamaChat
--probe dan.Dan_11_0
--config '{"model":"llama3.2:3b"}'
## كيف يعمل
يستخدم Augustus بنية خط أنابيب لاختبار نماذج اللغات الكبيرة (LLMs) ضد الهجمات العدائية:```mermaid
flowchart LR
A[Probe Selection] --> B[Buff Transform]
B --> C[Generator / LLM Call]
C --> D[Detector Analysis]
D --> E{Vulnerable?}
E -->|Yes| F[Record Finding]
E -->|No| G[Record Pass]
subgraph Scanner
B
C
D
E
end
خط أنابيب الفحص
- اختيار المسبار: اختر المسبارات حسب الاسم، أو نمط glob، أو
--all - تحويل Buff: تحويل المطالبات اختياريًا (ترميز، إعادة صياغة، ترجمة، شعرنة)
- استدعاء المولّد: إرسال المطالبات العدائية إلى LLM المستهدف عبر تكامل المزود الخاص به
- تحليل الكاشف: تحليل الاستجابات باستخدام مطابقة الأنماط، أو LLM كحَكَم، أو كاشفات متخصصة
- تسجيل النتائج: تسجيل نقاط لكل محاولة وإنتاج المخرجات بالتنسيق المطلوب
- محرك الهجوم: بالنسبة للمسبارات التكرارية (PAIR، TAP)، يعمل محرك الهجوم أحادي الدور على تحسين المطالبات عبر التكرارات مع تقليم المرشحين والتسجيل القائم على الحَكَم
- محرك متعدد الأدوار: بالنسبة للمسبارات الحوارية (Crescendo، GOAT)، يحافظ المحرك متعدد الأدوار على سجل المحادثة الكامل مع الهدف عبر الأدوار، مع اكتشاف الرفض والتكيف الديناميكي
استراتيجيات الهجوم متعدد الأدوار
تحافظ الهجمات متعددة الأدوار على محادثة مستمرة مع LLM الهدف، مستغلة حقيقة أن النماذج قد تكشف معلومات تدريجيًا عبر الأدوار التي قد ترفضها في مطالبة واحدة. يستخدم المحرك متعدد الأدوار ثلاثة نماذج LLM: مهاجم (يولّد الأسئلة)، وهدف (النظام قيد الاختبار)، وحَكَم (يسجل التقدم ويكتشف الرفض).
Crescendo
يستخدم Crescendo التصعيد التدريجي (تقنية القدم في الباب) لتحويل المحادثة ببطء من مواضيع حميدة نحو هدف محظور.
- الورقة البحثية: Russinovich et al., 2024
- المنهج: يبدأ بأسئلة تعليمية حميدة حقًا ويزيد الخصوصية تدريجيًا عبر أدوار عديدة
- نمط التصعيد: السياق التاريخي ← الآليات التقنية ← التفاصيل المحددة ← الطلبات المباشرة المؤطرة كمتابعات طبيعية
- القوة: فعّال ضد النماذج التي تتبع نبرة المحادثة — فالتحول التدريجي يتجنب تفعيل مرشحات الأمان```bash
augustus scan rest.Rest
--probe crescendo.Crescendo
--config-file crescendo.yaml
--html report.html -v
#### GOAT (وكيل الهجوم التوليدي)
يستخدم GOAT نهجًا عدوانيًا وتكيفيًا مع 7 تقنيات هجومية واستدلال سلسلة التفكير الهجومي (Chain-of-Attack-Thought) لتبديل الاستراتيجيات ديناميكيًا بناءً على ما ينجح أو يفشل.
- **الورقة البحثية**: [Pavlova et al., 2024](https://arxiv.org/abs/2410.01606)
- **النهج**: يستهدف الهدف من الجولة الأولى باستخدام تأطير غير مباشر، ولا يذكر الهدف مباشرة للهدف
- **7 تقنيات** عبر 3 فئات:
- *التلاعب بالمخرجات*: قمع الرفض، التمهيد للاستجابة
- *مشتتات الاستجابة الآمنة*: الاستجابة المزدوجة، تقسيم الموضوع، النية المعاكسة
- *السيناريوهات الخيالية*: تعديل الشخصية، الافتراضي
- **سلسلة التفكير الهجومي**: في كل جولة، يفكر المهاجم عبر الملاحظة ← الفكر ← الاستراتيجية ← الاستجابة قبل صياغة رسالته
- **تراكم التقنيات**: يمكن دمج تقنيات متعددة في جولة واحدة لتأثير أقوى
- **القوة**: يحقق معدلات نجاح عالية في جولات أقل (عادة 3-5) من خلال التبديل العدواني بين أساليب مختلفة جوهريًا```bash
augustus scan rest.Rest \
--probe goat.Goat \
--config-file goat.yaml \
--html report.html -v
Hydra
يحافظ Hydra على مسار محادثة واحد ويتراجع عن الأدوار الكاملة عندما يرفض الهدف، ويطلب من المهاجم اتباع نهج مختلف تمامًا. على عكس Crescendo/GOAT (الذي يعيد الصياغة عند الرفض)، فإن التراجع في Hydra يزيل الأدوار المرفوضة تمامًا من رؤية الهدف.
- النهج: مسار واحد مع تراجع على مستوى الدور — يتم مسح الأدوار المرفوضة واستبدالها
- التقنيات: التفكيك (تقسيم الهدف إلى أسئلة فرعية بريئة)، استغلال السياق (البناء على كلمات الهدف نفسها)، محاكاة السلطة، التأطير العاطفي، التطبيع التدريجي
- الميزة الرئيسية: يتحكم
max_backtracksفي عدد المرات التي يمكن فيها لـ Hydra مسح الدور وإعادة محاولته - الوضع الحافظ للحالة: اضبط
stateful: trueللأهداف التي لا يمكن فيها إلغاء إرسال الرسائل (يعطل التراجع) - القوة: يحافظ على نظافة سجل محادثة الهدف — لا يرى الهدف أبدًا المحاولات الفاشلة، مما يمنع التصعيد الدفاعي```bash
augustus scan rest.Rest
--probe hydra.Hydra
--config-file hydra.yaml
--html report.html -v
#### المستخدم المشاغب
يحاكي المستخدم المشاغب شخصًا بريئًا وفضوليًا يستكشف حدود الذكاء الاصطناعي بمهارة عبر محادثة طبيعية. وعلى عكس الاستراتيجيات العدائية، فإن شخصية المهاجم هنا مستخدم عادي ينزلق تدريجيًا نحو مواضيع محظورة من خلال تفاعل يبدو بريئًا.
- **مستوحى من**: [Tau-bench](https://github.com/sierra-research/tau-bench) واستراتيجية المستخدم المشاغب في promptfoo
- **النهج**: مرحلة بناء الألفة ← استكشاف الحدود ← الدفع الحازم
- **7 تقنيات**: الفضول الساذج، سوء الفهم المتعمد، الإثبات الاجتماعي، الانجراف التدريجي، الاستمالة العاطفية، الافتراض بالصلاحية، إعادة التأطير
- **خطط لعب مخصصة للأهداف**: نصوص مدمجة لاستخراج تعليمات النظام، والعثور على الأسرار/الأعلام، وتجاوز سياسة المحتوى
- **الجولات الافتراضية**: 5 (أقل من الاستراتيجيات الأخرى — فالنهج الخفي إما ينجح بسرعة أو لا ينجح إطلاقًا)
- **القوة**: فعّال ضد النماذج المدربة على مقاومة الأنماط العدائية الواضحة — فالشخصية العادية تتجاوز خوارزميات "كشف الهجمات"```bash
augustus scan rest.Rest \
--probe mischievous.MischievousUser \
--config-file mischievous.yaml \
--html report.html -v
دليل اختيار الاستراتيجية
| الاستراتيجية | عدد الجولات | الأسلوب | الأفضل لـ | التكلفة |
|---|---|---|---|---|
crescendo.Crescendo | 10 | تصعيد تدريجي | النماذج المزودة بمرشحات أمان لتتبع النبرة | متوسطة (10 جولات × 3 استدعاءات LLM) |
goat.Goat | 10 | تبديل تقنيات عدواني | نتائج سريعة، نماذج ضعيفة أمام حيل التأطير | متوسطة-عالية (عبء التفكير في التقنيات) |
hydra.Hydra | 10 | تراجع عند الرفض | النماذج العنيدة التي ترفض بشكل متكرر | عالية (التراجع يضيف إعادة محاولات) |
mischievous.MischievousUser | 5 | استكشاف شخصية عابر | النماذج المدربة ضد الأنماط العدوانية | منخفضة (5 جولات، نهج خفي) |
قرار سريع:
- ابدأ بـ Crescendo — إنها الاستراتيجية الأكثر عمومية
- جرّب GOAT إذا كان Crescendo بطيئًا جدًا (عادةً ما ينجح GOAT في 3-5 جولات)
- استخدم Hydra إذا كان الهدف يرفض بشكل متكرر (التراجع يحافظ على نظافة المحادثة)
- استخدم Mischievous للأهداف ذات الكشف القوي عن الأنماط العدوانية (الشخصية تتجاوز الاستدلالات)
إعداد متعدد الجولات
تشترك جميع الاستراتيجيات الأربع في نفس بنية الإعداد:```yaml generators: rest.Rest: uri: "https://your-llm-endpoint/chat" method: POST req_template: '{"input": "$INPUT"}' response_json: true response_json_field: "response"
judge: generator_type: openai.OpenAI config: model: gpt-4 api_key: "${OPENAI_API_KEY}"
probes: attacker_generator_type: openai.OpenAI attacker_config: model: gpt-4 api_key: "${OPENAI_API_KEY}" settings: crescendo.Crescendo: # or goat.Goat, hydra.Hydra, mischievous.MischievousUser goal: "your test objective" max_turns: 10 success_threshold: 0.8 use_secondary_judge: true
| الإعداد | الافتراضي | الوصف |
|---------|---------|-------------|
| `goal` | (مطلوب) | الهدف الذي يحاول المهاجم تحقيقه |
| `max_turns` | 10 | الحد الأقصى لعدد جولات المحادثة قبل التوقف |
| `success_threshold` | 0.8 | درجة الحكم (0.0-1.0) التي تؤدي إلى الخروج المبكر |
| `max_refusal_retries` | 10 | محاولات إعادة الصياغة لكل جولة عند رفض الهدف |
| `attack_max_attempts` | 5 | إعادة المحاولة لفشل تحليل JSON لنموذج المهاجم |
| `use_secondary_judge` | true | تفعيل الحكم الثانوي لالتقاط النتائج السلبية الكاذبة |
| `max_backtracks` | 10 | التراجع على مستوى الجولة عند الرفض (Hydra فقط) |
| `enable_fast_refusal` | true | اكتشاف الرفض القائم على الأنماط قبل استدعاء حكم LLM |
| `enable_scan_memory` | false | التعلم عبر حالات الاختبار (مشاركة التكتيكات عبر الاستطلاعات) |
| `stateful` | false | تعطيل التراجع للأهداف ذات الحالة |
| `exclude_target_output` | false | إخفاء استجابات الهدف من تغذية المهاجم الراجعة (وضع الخصوصية) |
| `attacker_model` | (تلقائي) | تجاوز اسم نموذج المهاجم لتحديد حجم نافذة السياق |
#### استكشاف الأخطاء وإصلاحها متعدد الجولات
| العرض | السبب المحتمل | الإصلاح |
|---------|-------------|-----|
| `no turns completed (attacker_parse_failures=N)` | نموذج المهاجم يعيد JSON غير صالح | استخدم نموذج مهاجم أقوى (GPT-4, Claude Opus). زد `attack_max_attempts`. |
| `no turns completed (target_empty=N)` | الهدف يعيد استجابات فارغة/null | تحقق من أن نقطة نهاية الهدف تستجيب. تحقق من قالب إعداد REST. |
| جميع الجولات تسجل 0.0 | الهدف غامض جدًا أو المهاجم لا يتفاعل | اجعل `goal` أكثر تحديدًا. جرب استراتيجية مختلفة. |
| درجات عالية دون نجاح | `success_threshold` مرتفع جدًا | اخفض `success_threshold` من 0.8 إلى 0.6-0.7 |
| التشغيل طويل جدًا / مكلف | عدد كبير جدًا من الجولات وإعادة المحاولة | قلل `max_turns` (جرب 5). اضبط `enable_fast_refusal: true`. |
| Hydra يستمر في التراجع | الهدف يرفض كل شيء | جرب `stateful: true` أو انتقل إلى استراتيجية Mischievous |
## البنية المعمارية```
cmd/augustus/ CLI entrypoint (Kong-based)
pkg/
attempt/ Probe execution lifecycle and result tracking
buffs/ Buff interface for prompt transformations
config/ Configuration loading (YAML/JSON) with profiles
detectors/ Public detector interfaces and registry
generators/ Public generator interfaces and registry
harnesses/ Harness interface for execution strategies
lib/http/ Shared HTTP client with proxy support
lib/stego/ LSB steganography for multimodal attacks
logging/ Structured slog-based logging
metrics/ Prometheus metrics collection
prefilter/ Aho-Corasick keyword pre-filtering
probes/ Public probe interfaces and registry
ratelimit/ Token bucket rate limiting
registry/ Generic capability registration system
results/ Result types and multi-format output
retry/ Exponential backoff with jitter
scanner/ Scanner orchestration with concurrency
templates/ YAML probe template loader (Nuclei-style)
types/ Canonical shared interfaces (Prober, Generator, Detector)
internal/
probes/ 210+ probe implementations (47 categories)
generators/ 28 LLM provider integrations (43 variants)
detectors/ 90+ detector implementations (35 categories)
harnesses/ 3 harness strategies (probewise, batch, agentwise)
buffs/ Buff interface for prompt transformations
attackengine/ Iterative adversarial attack engine (PAIR/TAP backend)
multiturn/ Multi-turn conversational attack engine (Crescendo/GOAT/Hydra/Mischievous)
ahocorasick/ Internal Aho-Corasick keyword matching
benchmarks/ Performance benchmarks
tests/ Integration and equivalence tests
research/ Research documentation and analysis
examples/ Example configurations
docs/ Documentation
قرارات التصميم الرئيسية
- الفحص المتزامن مع مجموعات goroutine محدودة عبر
errgroup - التسجيل بنمط الإضافات باستخدام دوال
init()في Go للمسحّات والمولّدات والكاشفات والمعززات والأدوات المساعدة - محرك هجوم تكراري مع إدارة محادثات متعددة المسارات، وتقليم المرشحين، وتقييم قائم على الحكم لـ PAIR/TAP
- محرك هجوم متعدد الأدوار مع سجل محادثة مستمر، وكشف الرفض، وتصميم مستقل عن الاستراتيجية لـ Crescendo/GOAT
- قوالب مسح YAML (بنمط Nuclei) لتعريفات مسح تصريحية إلى جانب المسحّات القائمة على Go
- تصفية مسبقة Aho-Corasick لمطابقة الكلمات المفتاحية بسرعة في الكاشفات
الإعداد
ملف الإعداد YAML
أنشئ ملف config.yaml:```yaml
Runtime configuration
run: max_attempts: 3 timeout: "30s"
Generator configurations
generators: openai.OpenAI: model: "gpt-4" temperature: 0.7 api_key: "${OPENAI_API_KEY}" # Environment variable interpolation
anthropic.Anthropic: model: "claude-3-opus-20240229" temperature: 0.5 api_key: "${ANTHROPIC_API_KEY}"
ollama.OllamaChat: model: "llama3.2:3b" temperature: 0.8
Judge configuration (required for judge.Judge, judge.Refusal, and multi-turn probes)
judge: generator_type: openai.OpenAI model: gpt-4o-mini config: api_key: "${OPENAI_API_KEY}"
Output configuration
output: format: "jsonl" path: "./results.jsonl"
Named profiles for different scenarios
profiles: quick: run: max_attempts: 1 timeout: "10s" generators: openai.OpenAI: model: "gpt-3.5-turbo" temperature: 0.5 output: format: "table"
thorough: run: max_attempts: 5 timeout: "60s" generators: openai.OpenAI: model: "gpt-4" temperature: 0.3 output: format: "jsonl" path: "./thorough_results.jsonl"
### متغيرات البيئة```bash
# API Keys
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export COHERE_API_KEY="..."
# Debug mode
export AUGUSTUS_DEBUG=true
إعدادات الوكيل
قم بتوجيه حركة مرور HTTP عبر وكيل (مثل Burp Suite) لفحصها:```bash
Method 1: Via config parameter
augustus scan rest.Rest
--probe dan.Dan_11_0
--detector dan.DAN
--config '{"uri":"https://api.example.com","proxy":"http://127.0.0.1:8080"}'
--output results.jsonl
Method 2: Via environment variables
export HTTP_PROXY=http://127.0.0.1:8080 export HTTPS_PROXY=http://127.0.0.1:8080 augustus scan rest.Rest --probe dan.Dan_11_0 --config '{"uri":"https://api.example.com"}'
- يتم تعطيل التحقق من TLS تلقائيًا لفحص الوكيل
- تم تمكين دعم HTTP/2 لواجهات برمجة التطبيقات الحديثة
- يتم اكتشاف وتحليل استجابات Server-Sent Events (SSE) تلقائيًا
### مرجع CLI```
Usage: augustus scan <generator> [flags]
Arguments:
<generator> Generator name (e.g., openai.OpenAI, anthropic.Anthropic)
Probe Selection (choose one):
--probe, -p Probe name (repeatable)
--probes-glob Comma-separated glob patterns (e.g., "dan.*,goodside.*")
--all Run all registered probes
Detector Selection:
--detector Detector name (repeatable)
--detectors-glob Comma-separated glob patterns
Buff Selection:
--buff, -b Buff names to apply (repeatable)
--buffs-glob Comma-separated buff glob patterns (e.g., "encoding.*")
Configuration:
--config-file Path to YAML config file
--config, -c JSON config for generator
Execution:
--harness Harness name (default: probewise.Probewise)
--timeout Overall scan timeout (default: 30m)
--probe-timeout Per-probe timeout (default: 5m)
--concurrency Max concurrent probes (default: 10, env: AUGUSTUS_CONCURRENCY)
Output:
--format, -f Output format: table, json, jsonl (default: table)
--output, -o JSONL output file path
--html HTML report file path
--verbose, -v Verbose output
Global:
--debug, -d Enable debug mode
الأوامر:```bash augustus version # Print version information augustus list # List available probes, detectors, generators, harnesses, buffs augustus scan # Run vulnerability scan augustus completion # Generate shell completion (bash, zsh, fish)
**رموز الخروج:**
| الرمز | المعنى |
|------|---------|
| 0 | نجاح - اكتمل الفحص |
| 1 | خطأ في الفحص/وقت التشغيل |
| 2 | خطأ في التحقق/الاستخدام |
## الأسئلة الشائعة
### كيف يقارن Augustus بـ garak؟
Augustus هو إعادة تنفيذ أصلية بلغة Go مستوحاة من [garak](https://github.com/NVIDIA/garak) (ماسح ثغرات نماذج اللغات الكبيرة المبني على Python من NVIDIA). الاختلافات الرئيسية:
- **الأداء**: ملف ثنائي Go مقابل مترجم Python — تنفيذ أسرع واستهلاك أقل للذاكرة
- **التوزيع**: ملف ثنائي واحد بدون تبعيات وقت تشغيل مقابل حزمة Python مع تثبيت عبر pip
- **التزامن**: تجمعات goroutine في Go (توازي عبر الفحوصات) مقابل تجمعات multiprocessing في Python (توازي داخل الفحص)
- **تغطية الفحوصات**: Augustus يحتوي على أكثر من 210 فحصًا؛ بينما garak يحتوي على أكثر من 160 فحصًا مع سجل بحثي أطول وورقة منشورة (arXiv:2406.11036)
- **تغطية المزودين**: Augustus يدعم 28 مزودًا؛ بينما garak يحتوي على أكثر من 35 متغيرًا للمولد عبر 22 وحدة مزود
### هل يمكنني اختبار النماذج المحلية بدون مفاتيح API؟
نعم! استخدم تكامل Ollama لاختبار النماذج المحلية:```bash
# No API key needed
augustus scan ollama.OllamaChat \
--probe dan.Dan_11_0 \
--config '{"model":"llama3.2:3b"}'
كيف أضيف فحوصات مخصصة؟
- أنشئ ملف Go جديد في
internal/probes/ - نفّذ واجهة
probes.Probe - سجّل باستخدام
registry.RegisterProbe()في دالةinit() - أعد البناء:
make build
راجع CONTRIBUTING.md للحصول على تعليمات مفصلة.
ما هي صيغ الإخراج المدعومة؟
يدعم Augustus أربع صيغ للإخراج:
| الصيغة | العلامة | حالة الاستخدام |
|---|---|---|
| جدول | --format table | إخراج طرفية قابل للقراءة البشرية |
| JSON | --format json | كائن JSON واحد للتحليل |
| JSONL | --format jsonl | JSON مفصول بأسطر للتدفق |
| HTML | --html report.html | تقارير مرئية لأصحاب المصلحة |
كيف أختبر نماذج متعددة في وقت واحد؟```bash
Test multiple models sequentially
for model in "gpt-4" "gpt-3.5-turbo"; do
augustus scan openai.OpenAI
--all
--config "{"model":"$model"}"
--output "results-$model.jsonl"
done
### هل Augustus مناسب لبيئات الإنتاج؟
نعم، تم تصميم Augustus للاستخدام في الإنتاج مع:
- فحص متزامن مع حدود قابلة للتكوين
- تحديد المعدل لاحترام حصص واجهة برمجة التطبيقات (API)
- معالجة المهلة الزمنية للفحوصات طويلة الأمد
- منطق إعادة المحاولة للفشل المؤقت
- تسجيل منظم للمراقبة
## استكشاف الأخطاء وإصلاحها
### خطأ: "تم تجاوز حد معدل واجهة برمجة التطبيقات (API)"
**السبب**: عدد كبير جدًا من الطلبات المتزامنة أو الطلبات في الدقيقة.
**الحلول**:
1. تقليل التزامن: `--concurrency 5`
2. استخدام إعدادات تحديد المعدل الخاصة بالموفر في ملف تكوين YAML: ```yaml
generators:
openai.OpenAI:
rate_limit: 10 # requests per minute
خطأ: "context deadline exceeded" أو "timeout"
السبب: تتجاوز الفحوصات المعقدة (مثل TAP أو PAIR) المهلة الافتراضية.
الحل:```bash
augustus scan openai.OpenAI
--probe tap.TAPv1
--timeout 60m
--config-file config.yaml
### الخطأ: "مفتاح API غير صالح" أو "فشل المصادقة"
**السبب**: بيانات اعتماد API مفقودة أو غير صالحة.
**الحلول**:
1. تحقق من تعيين متغير البيئة: `echo $OPENAI_API_KEY`
2. افحص عن أخطاء إملائية في ملف الإعدادات
3. تأكد من أن مفتاح API لديه الأذونات المطلوبة
4. بالنسبة لـ Ollama، تأكد من أن الخدمة قيد التشغيل: `ollama serve`
### الخطأ: "الفحص غير موجود" أو "الكاشف غير موجود"
**السبب**: خطأ إملائي في الاسم أو أن الفحص غير مسجل.
**الحل**:```bash
# List all available probes and detectors
augustus list
# Use exact names from the list
augustus scan openai.OpenAI --probe dan.Dan_11_0 # Correct
الفحص لا يُنتج نتائج
السبب: لم يطابق المكتشف أي استجابات، أو لم تتم كتابة المخرجات.
الحلول:
- شغّل باستخدام
--verboseلعرض المخرجات التفصيلية - تحقق من أن المكتشف يطابق نوع الفحص
- تأكد من أن مسار ملف المخرجات قابل للكتابة
المساهمة
نرحب بالمساهمات! راجع CONTRIBUTING.md من أجل:
- إضافة فحوصات ثغرات جديدة
- إنشاء تطبيقات مكتشف جديدة
- إضافة تكاملات مزودي LLM
- إرشادات الاختبار
- متطلبات نمط الكود
التطوير```bash
Run all tests
make test
Run specific package tests
go test ./pkg/scanner -v
Run equivalence tests (compare Go vs Python implementations)
go test ./tests/equivalence -v
Build binary
make build
Install to $GOPATH/bin
make install
### بيئة القياس (DevPod)
بيئة تطوير سحابية جاهزة للاستخدام لقياس أداء نماذج LLM متاحة عبر [DevPod](https://devpod.sh/). وهي توفّر حاوية بعيدة مثبّت عليها Augustus وOllama وGo وجميع التبعيات مسبقًا.```bash
cd devpod
# CPU-only instance (~$0.08/hr) - cloud APIs only
make devpod-up-cpu
# GPU instance with NVIDIA T4 (~$0.53/hr) - local models up to 14B
make devpod-up-gpu
# GPU Pro instance with NVIDIA L4 (~$0.80/hr) - local models up to 32B
make devpod-up-gpu-pro
داخل devpod:```bash devpod/scripts/setup.sh # Configure LLM provider API keys devpod/scripts/pull-models.sh # Pull local Ollama models (GPU only) devpod/scripts/benchmark.sh # Run benchmarks with comparison reports
تعمل البيئة أيضًا كـ [حاوية تطوير](https://containers.dev/) قياسية — افتح المستودع في VS Code أو Cursor واختر إعداد CPU أو GPU من `.devcontainer/`.
## الأمان
تم تصميم Augustus **لاختبارات الأمان المصرح بها فقط**.
- يرسل Augustus مطالبات عدائية إلى نماذج LLM التي تحددها — تأكد دائمًا من حصولك على إذن
- لا تختبر أبدًا أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها
- تولّد بعض البروبات محتوى مسيئًا عن قصد (لاختبار مرشحات الأمان)
- قد تحتوي النتائج على محتوى ضار تنتجه نماذج LLM المستهدفة
أبلغ عن مشكلات الأمان عبر [GitHub Issues](https://github.com/praetorian-inc/augustus/issues).
## الدعم
إذا وجدت Augustus مفيدًا، يرجى التفكير في:
- منحه **نجمة** على GitHub
- [فتح مشكلة](https://github.com/praetorian-inc/augustus/issues) للأخطاء أو طلبات الميزات
- [المساهمة](https://github.com/praetorian-inc/augustus/blob/main/CONTRIBUTING.md) ببروبات أو كاشفات أو تكاملات مزودين جديدة
[](https://star-history.com/#praetorian-inc/augustus&Date)
## الترخيص
[Apache 2.0](https://github.com/praetorian-inc/augustus/blob/main/LICENSE) - Praetorian Security, Inc.
---
**صُنع بواسطة [Praetorian](https://www.praetorian.com/)** - حلول الأمان الهجومية