
AttackGen هي أداة اختبار للاستجابة للحوادث في مجال الأمن السيبراني، تستفيد من قوة نماذج اللغات الكبيرة وإطار عمل MITRE ATT&CK الشامل. تولّد الأداة سيناريوهات استجابة للحوادث مصممة خصيصاً بناءً على مجموعات الجهات الفاعلة في التهديدات التي يختارها المستخدم وتفاصيل مؤسستك.
# AttackGen AttackGen هي أداة لاختبار الاستجابة للحوادث الأمنية السيبرانية تستفيد من قوة النماذج اللغوية الكبيرة وأطر MITRE ATT&CK وATLAS الشاملة. تُنشئ الأداة سيناريوهات استجابة للحوادث مُخصّصة بناءً على مجموعات الجهات الفاعلة في التهديدات التي يختارها المستخدم، ودراسات حالات هجمات الذكاء الاصطناعي، وتفاصيل مؤسستك. ## جدول المحتويات - [Star the Repo](#star-the-repo) - [الميزات](#features) - [الإصدارات](#releases) - [المتطلبات](#requirements) - [التثبيت](#installation) - [إعداد LangSmith](#langsmith-setup) - [إعداد البيانات](#data-setup) - [تشغيل AttackGen](#running-attackgen) - [خادم MCP](#mcp-server) - [مهارات الوكيل](#agent-skills) - [الاستخدام](#usage) - [أفضل ممارسات الأمان](#security-best-practices) - [المساهمة](#contributing) - [الترخيص](#licence) ## Star the Repo إذا وجدت AttackGen مفيدة، فيُرجى التفكير في وضع نجمة على المستودع على GitHub. يساعد ذلك المزيد من الأشخاص على اكتشاف الأداة. دعمكم محل تقدير كبير! ⭐ ## الميزات - يُنشئ سيناريوهات استجابة للحوادث فريدة بناءً على مجموعات الجهات الفاعلة في التهديدات المختارة أو دراسات حالة ATLAS. - يتيح لك تحديد حجم مؤسستك وقطاعها للحصول على سيناريو مُخصّص. - يدعم أطر MITRE ATT&CK Enterprise وICS (أنظمة التحكم الصناعي) وATLAS (المشهد المتطور للتهديدات في أنظمة الذكاء الاصطناعي). - يعرض قائمة مفصّلة بالتقنيات التي تستخدمها مجموعة الجهات الفاعلة في التهديدات أو دراسة الحالة المختارة. - إنشاء سيناريوهات مخصّصة بناءً على مجموعة مختارة من تقنيات ATT&CK أو ATLAS. - استخدام قوالب السيناريوهات لإنشاء سيناريوهات مخصّصة بسرعة بناءً على الأنواع الشائعة من الحوادث السيبرانية، بما في ذلك أنماط الهجوم الخاصة بالذكاء الاصطناعي/التعلّم الآلي. - إنشاء **سيناريوهات تهديد داخلي بالذكاء الاصطناعي** - تمارين استجابة للحوادث يتصرف فيها وكيل ذكاء اصطناعي متقدّم منتشر داخل مؤسستك كتهديد داخلي، بناءً على نموذج التهديد من [*Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents*](https://ai-insider-threat.matt-adams.co.uk). تتشكّل السيناريوهات وفقًا لنموذج نشر الوكيل (مستوى الاستقلالية)، وفئة التهديد، وتهديدات STRIDE، وبذرة سيناريو نصية حرّة اختيارية. - AttackGen Assistant - واجهة محادثة لتحديث السيناريوهات المُنشأة و/أو طرح الأسئلة حولها، مع مسار مباشر للعودة إلى الصفحة التي جاء منها السيناريو. - إعداد موجّه: تعرض كل صفحة الشريط الجانبي نفسه **Setup**، وتُدرج كل متطلب معلّق في ملخّص جاهزية واحد، وتُبقي زر **Generate** معطّلًا حتى يصبح سير العمل جاهزًا. - تبقى النتائج محفوظة طوال الجلسة: تحتفظ كل صفحة سيناريو بآخر نتيجة خاصة بها، والمدخلات الملتقطة، والتنزيلات عبر إعادات التشغيل والتنقّل، ولا يستبدلها أو يزيلها سوى **Regenerate** أو **Clear result** صراحةً. - تأتي السيناريوهات الطويلة بملخّص موجز وتنقّل بين الأقسام، بما في ذلك اختصارات إلى الحقن ومعايير النجاح والمقاييس والمنتجات وقواعد الاشتباك التي يدير منها الميسّر التمرين. - التقاط ملاحظات المستخدمين حول جودة السيناريوهات المُنشأة. - رفيق الكشف والاستجابة: بالنسبة لتقنيات السيناريو، يُدرج AttackGen استراتيجيات الكشف المطابقة في ATT&CK والتحليلات ومصادر السجلات والتخفيفات، قابلة للتنزيل كملف `_detection.md` منفصل. - تنزيل طبقة ATT&CK Navigator لسيناريوهات مجموعات التهديدات والسيناريوهات المخصّصة، حتى تتمكن من عرض تقنيات السيناريو في [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/). - مفاتيح تبديل اختيارية في صفحتي مجموعات التهديدات والسيناريوهات المخصّصة: **AI-enhanced adversary** يعيد صياغة سلسلة القتل نفسها بوصفها مُعزّزة بالذكاء الاصطناعي، و**Purple-team narrative** يضيف شرحًا مرحليًا من منظور المدافع مبنيًا على عمليات الكشف والتخفيفات المقدّمة. - سيناريوهات قابلة للتنزيل بصيغة Markdown، بالإضافة إلى تقرير الكشف وطبقة Navigator. - خادم MCP (`attackgen-mcp`) يعرض سلاسل القتل وتقارير الكشف وطبقات Navigator وإنشاء السيناريوهات للعملاء الوكيلين، بالإضافة إلى مهارة الوكيل `attackgen-tabletop` لتحويل هذا الناتج إلى تمرين طاولة جاهز للميسّر. - استخدام OpenAI API أو Anthropic API (نماذج Claude) أو Google AI API أو Mistral API أو Groq API أو أي نقطة نهاية مخصّصة متوافقة مع OpenAI (Ollama، LM Studio، Azure OpenAI، OpenRouter، إلخ) لإنشاء سيناريوهات استجابة للحوادث. تُوجَّه جميع المزوّدين عبر [LiteLLM](https://github.com/BerriAI/litellm) خلف غلاف داخلي واحد، لذا فإن إضافة نموذج جديد تغيير من سطر واحد. - متاح كصورة حاوية Docker لسهولة النشر. - تكامل اختياري مع [LangSmith](https://docs.smith.langchain.com/) لتصحيح الأخطاء والاختبار ومراقبة أداء النموذج بشكل فعّال. - إدارة آمنة لبيانات الاعتماد باستخدام ملف .env لمفاتيح API والأسرار.  ## الإصدارات ### v0.17 | ما الجديد؟ | لماذا هو مفيد؟ | | ----------- | ----------------- | | تطبيق تحسينات المساعد على التنزيلات | - التغييرات تصل إلى الملفات: كان محادثة المساعد تُستخدم لتحسين المحادثة فقط، لذا لم يتغير سيناريو التنزيلات ولا تنزيلات الكشف والاستجابة أبدًا. زر **Apply changes to downloads** الجديد يعيد كتابتهما من المحادثة، في استدعاء نموذج مخصص يُرجع المستند المنقّح الكامل. في وضع **Scenario + Detection & Response** يُنقّح كليهما، مع إعطاء كل منهما النص الحالي للآخر حتى يبقيا متوافقين.<br><br>- قسم المراجع يبقى دقيقًا: تطبيق Detection & Response يعيد كتابة السرد فقط. المرجع الحتمي للكشف والتخفيف المستمد من بيانات ATT&CK يُنقل بايتًا ببايت. لا يُعاد توليد طبقة Navigator وتُوصف بأنها تعكس تقنيات السيناريو الأصلي.<br><br>- آمن للتجربة: الرد الفارغ من النموذج يُرفض دون إجراء أي تغييرات. صفحة السيناريو والمساعد كلاهما يوضّحان نتيجة منقّحة مع وقت آخر تطبيق، و**Revert to original** يستعيد السيناريو والسرد معًا.<br><br>- التنزيل من حيث تحرّر: يقدّم المساعد الآن نفس أزرار **Download Scenario** و**Download Detection & Response** الموجودة في صفحة السيناريو.<br><br>- محادثة واحدة لكل سيناريو: كل محادثة تنتمي إلى السيناريو الذي تتناوله، لذا يبدأ السيناريو المولّد حديثًا محادثة جديدة، ويبقى السجل بأكمله مرئيًا بعد التطبيق. | | سير عمل سيناريو موجّه ومرن | - الجاهزية قبل النقر: كل صفحة الآن تسرد ما لا يزال ناقصًا — اختيار الصفحة نفسه أولًا، ثم أي حقل إعداد غير مكتمل — وتُبقي **Generate** معطّلًا حتى لا يبقى شيء معلّق، لذا لا يُهدر النقر في اكتشاف خطأ تحقق.<br><br>- الخيارات قبل الإجراء: مفاتيح تبديل الخصم المعزّز بالذكاء الاصطناعي والفريق البنفسجي تقع فوق **Generate**، مع ذكر خيار الفريق البنفسجي أنه يُجري استدعاء نموذج ثانيًا.<br><br>- التأكيد قبل الإنفاق: يُعرض ملخص من سطر واحد للإطار وملف المؤسسة والاختيار والمعدّلات قبل بدء التوليد.<br><br>- نتائج تصمد أمام التنقل: كل صفحة تحتفظ بآخر نتيجة خاصة بها، والمدخلات التي أنتجتها وأسماء التنزيل الخاصة بها للجلسة — افتح المساعد ثم عُد وستجد السيناريو وطبقة Navigator وتقرير Detection & Response لا تزال موجودة. تعديل النموذج يترك النتيجة في مكانها مع ملاحظة أن اختياراتك تغيّرت؛ **Regenerate** و**Clear result** إجراءان صريحان.<br><br>- اعثر على طريقك في سيناريو طويل: ملخص مدمج وفهرس أقسام يقعان فوق Markdown الكامل، مع اختصارات إلى الحقن وأسئلة النقاش ومعايير النجاح والمقاييس والمنتجات وقواعد الاشتباك.<br><br>- حالات فارغة مفيدة: بدون سيناريو، يربط المساعد بجميع الطرق الثلاث لإنشاء واحد؛ ومع وجود سيناريو، يسمّي السيناريو الذي يناقشه ويربط مرة أخرى بالصفحة التي ولّدته. | | التعافي من سرد فاشل أو بطيء | - احتفظ بما نجح: إذا فشل سرد الفريق البنفسجي الاختياري أو توقف، يبقى السيناريو الأساسي وتنزيلاته وطبقة Navigator ومرجع Detection & Response الحتمي قابلة للاستخدام بالكامل، مع رسالة توضح ما فشل.<br><br>- أعد المحاولة لما فشل فقط: **Retry purple-team narrative** يعيد تشغيل السرد وحده، دون استدعاء ثانٍ للسيناريو الأساسي، ويدمجه في عرض Detection & Response وتنزيله. السيناريو الأساسي الفاشل يقدّم إعادة محاولة خاصة به باستخدام المدخلات الملتقطة عند **Generate**.<br><br>- مؤقت يستمر في التقدم: الوقت المنقضي الآن يتقدم أثناء انتظار أول رمز من النموذج، لذا لم يعد الانتظار الطويل يبدو كتعلّق. | | إخفاقات أوضح عندما تفشل التقنيات في التحميل | - الإخفاقات تُبلَّغ كإخفاقات: مجموعة تهديد فشل البحث عن تقنياتها لم تعد تُعرض كمجموعة بلا تقنيات، ولم يعد Custom Scenarios يخفي منتقي التقنيات ويطلب منك اختيار تقنيات عندما فشلت القائمة في التحميل.<br><br>- خطوة تالية، لا طريق مسدود: كلا العائقين الآن يوضحان ما يمكنك فعله بشأن الفشل. | | إمكانية الوصول والنصوص الأكثر إيجازًا | - متوافق مع لوحة المفاتيح وقارئ الشاشة: عناصر التحكم التي تعتمد على الأيقونات فقط لها أسماء يسهل الوصول إليها وذات معنى، وتسميات النماذج فريدة، وترتيب لوحة المفاتيح والتركيز مرئيان ومنطقيان. لم يعد التخطيط يتجاوز الحدود أفقيًا عند عرض الهاتف، واختفت تحذيرات وحدة التحكم الفارغة الخاصة بلون السمة.<br><br>- يتم التحقق في CI: تُشغَّل الآن اختبارات دخان عبر متصفح حقيقي لنظافة وحدة التحكم وإمكانية الوصول على كل طلب سحب، وتتحكم في صورة الإصدار.<br><br>- أقل للقراءة: لم تعد صفحات السيناريو تكرر ملخص ما قبل التشغيل في لوحة توسيع ثانية أو تشرح إدارة حالتها الخاصة. | | تحديث سجل النماذج | - أحدث النماذج: تم تحديث قائمة النماذج وفقًا للوثائق الحالية لكل مزوّد — يتصدر **GPT-6 Astra** قائمة OpenAI، وينضم **Claude Opus 5.5** و**Claude Opus 5** و**Claude Fable 5.1** إلى قائمة Anthropic، وتكتسب Google **Gemini 3.8 Flash** إلى جانب **Gemini 3.5 Flash Lite**، مع الاحتفاظ بجيل سابق واحد للاستمرارية في كل حالة. تتصدر قائمة Anthropic الآن **Claude Opus 5.5** — وهو الافتراضي في الشريط الجانبي عندما لم تختر نموذجًا — بدلًا من Fable 5.1 الأغلى سعرًا.<br><br>- إزالة الإدخالات المتقاعدة: تم حذف المعرّفات التي استبدلها المزوّدون أو أوقفوها — Claude Opus 4.7 و4.8 (أكثر من جيل Opus واحد للخلف بمجرد وصول Opus 5.5) و`llama-3.3-70b-versatile` و`llama-3.1-8b-instant` من Groq (كلاهما أُوقف في 16 أغسطس 2026) — حتى لا يتمكن الشريط الجانبي من عرض نموذج لا ينتج سوى خطأ بمجرد الضغط على **Generate**. أصبحت فئة الاستدلال مفتوحة الأوزان لدى Groq الآن `qwen/qwen3.8-27b`.<br><br>- قاعدة درجة الحرارة تبقى صادقة: يتم تعيين `supports_temperature` بناءً على سلوك أخذ العينات الفعلي لكل نموذج من Anthropic — كل نموذج Claude من 4.7 فصاعدًا يرفض درجة حرارة مخصصة، ويبقى Haiku 4.5 النموذج المدرج الوحيد الذي يقبل واحدة. يفشل الاختبار الذي يحمي هذا الآن عندما يحذف إدخال Anthropic جديد العلامة، بدلًا من أن يفشل فقط عندما يعيّنها شخص يدويًا. | | تدبير شؤون المنصة والأمان | - الحد الأدنى Python 3.11: لم يعد Python 3.10 مدعومًا. يستورد LiteLLM 1.98.0 وما بعده ميزة كتابة أنواع لا توجد إلا من 3.11.<br><br>- صورة أساسية مُرقّعة: أُعيد بناء صورة Docker على `python:3.14-slim` الحالية، مما يزيل ثغرات CVE الخاصة بالصورة الأساسية Debian التي رصدها Trivy، بما في ذلك ثلاث ثغرات حرجة في `perl-base`.<br><br>- أخطاء حقيقية من الاستدعاءات الفاشلة: أصبح `tenacity` معلنًا الآن، لذا يُبلّغ استدعاء النموذج الفاشل عن خطأ المزوّد الفعلي (على سبيل المثال مفتاح API غير صالح) بدلًا من تعليمات لتثبيت `tenacity`.<br><br>- تبقى الملاحظات مع سيناريوها: تُسجَّل التقييمات مقابل التشغيل الذي أنتج السيناريو المعروض على الشاشة، وليس أبدًا مقابل أحدث تشغيل لصفحة أخرى. | <details> <summary>الإصدارات السابقة (v0.16 وما قبلها)</summary> ### v0.16 | ما الجديد؟ | لماذا هو مفيد؟ | | ----------- | ----------------- | | التوليد القائم على السيناريو الأساسي أولاً | - السيناريو قبل الانتظار: أصبح التوليد الآن يعمل على مراحل — يُعرض السيناريو الأساسي أولاً مع أزرار **Download Scenario** و**Download ATT&CK Navigator Layer** جاهزة للاستخدام، ثم يُبثّ السرد الاختياري للفريق البنفسجي (purple-team) بعد ذلك. وإذا كانت هذه المرحلة الثانية بطيئة، أو لم تكن بحاجة إليها، يصبح السيناريو قابلاً للاستخدام فوراً بدلاً من حجبه حتى اكتمال كل شيء.<br><br>- تجميد المدخلات عند التوليد: تعمل كل عملية تشغيل من لقطة مأخوذة في لحظة الضغط على **Generate**، لذا لا يمكن لتغيير الشريط الجانبي أثناء التشغيل أن يعيد كتابة السيناريو الجاري إنتاجه جزئياً.<br><br>- تقدّم صادق: يُظهر تسمية الوقت المنقضي الجاري ومراحل مسمّاة — تحضير المدخلات، توليد السيناريو الأساسي، بناء التصديرات الحتمية، توليد سرد الفريق البنفسجي — إلى أين وصل التشغيل الطويل فعلياً. | | محدّدات محايدة خالية من الطرق المسدودة | - خيارات تعمل فقط: أصبح محدّدا مجموعة التهديد ودراسة الحالة يقدّمان الآن فقط الخيارات التي تُنتج سيناريو فعلياً، لذا لم يعد بإمكان أي اختيار أن يؤدي إلى طريق مسدود.<br><br>- ترتيب طبيعي: تُرتَّب المجموعات بترتيب رقمي طبيعي، لذا يأتي APT3 قبل APT28 وAPT30 بدلاً من ترتيبه كنص والوقوع بينهما. | | شريط إعداد مشترك في كل صفحة | - الإعداد مرة واحدة: أصبح المزوّد والنموذج والإطار والقطاع وحجم الشركة الآن في شريط جانبي مشترك واحد باسم **Setup** في كل صفحة سيناريو — Threat Group وCustom وAI Insider Threat — بدلاً من إعادة إدخالها في كل صفحة.<br><br>- يبقى عبر التنقل: تستمر الاختيارات غير السرية أثناء تنقّلك بين الصفحات وتُعكس في عنوان URL، بينما تُستبعد مفاتيح API عمداً من سلسلة الاستعلام. | | أعمال صيانة المنصة والأمان | - MCP على SDK الإصدار 2.x: انتقل خادم MCP إلى SDK الإصدار `mcp` 2.x.<br><br>- صورة أساس أحدث: أصبحت صورة Docker الآن مبنية على `python:3.14-slim`.<br><br>- بوابات CI بدلاً من التحذير: أصبحت فحوصات الأمان الآن تُفشل البناء عند وجود نتائج بدلاً من الاكتفاء بالإبلاغ عنها — تعمل pip-audit وBandit كبوابات، ولم يعد Trivy يخطئ في حساب SBOM المضمّن في pip كحزم مثبّتة، وتمت معالجة ثغرات CVE القابلة للمعالجة في الصورة. انتقلت GitHub Actions بعيداً عن بيئة تشغيل Node 20، وأصبح Dependabot الآن يتتبّع إجراءات سير العمل نفسها. | ### v0.15 | ما الجديد؟ | لماذا هو مفيد؟ | | ----------- | ----------------- | | إعداد مسبق للهروب من بيئة التقييم وبذرة سيناريو | - التدرب على حادثة محددة: قالب جديد للتهديد الداخلي بالذكاء الاصطناعي يتدرب على وكيل تقييم يصل إلى أنظمة حقيقية من بيئة يُفترض أنها معزولة — مما يفرض الاحتواء وتدوير بيانات الاعتماد وإخطار الأطراف الثالثة والحفاظ على الأدلة. ويغطي إفصاحات يوليو 2026 عن وكلاء التقييم الذين هربوا من صناديق الحماية الخاصة بهم، حيث كان حد العزل *مفترضًا* بدلًا من أن يكون مفروضًا.<br><br>- القوالب تصل الآن إلى الموجّه (Prompt): كانت قوالب البدء السريع سابقًا تملأ فقط عناصر واجهة الصفحة ولا تؤثر أبدًا في السيناريو المُولَّد. وهي الآن تحمل `brief` سرديًا و`required_decisions` التي يجب أن تفرضها أسئلة النقاش، وكلاهما يُمرَّر إلى الموجّه — بحيث يُنتج القالب تمرينًا محاكيًا مؤقتًا قابلاً للاستخدام بدلًا من مجموعة عشوائية من الأسئلة. وهذا يقسمها إلى فئتين: قوالب **النماذج الأصلية** الستة تحدد القرارات فقط، فيبتكر النموذج الفرضية ويؤدي إعادة تشغيل أحدها إلى تمرين جديد لنفس ملف التهديد؛ أما قوالب **الحوادث** فتحدد أيضًا موجزًا يثبّت الموقف.<br><br>- بذرة سيناريو نصية حرة: مربع بذرة اختياري في صفحة التهديد الداخلي بالذكاء الاصطناعي يوجّه السرد في أي سيناريو. اختيار قالب يملؤه مسبقًا، ويمكنك تعديله أو كتابة سيناريوك الخاص من الصفر.<br><br>- توسيع التصنيف إلى 27 تهديدًا / 6 فئات: يضيف فئة تهديد سادسة (**الاحتواء وتأثير الأطراف الثالثة**) وأربعة تهديدات STRIDE يدور حولها التمرين — `S5` إعادة تشغيل بيانات اعتماد أحمال العمل القابلة لإعادة الاستخدام، و`R4` كبت القياس عن بُعد من جانب الوكيل، و`I5` اختراق الأطراف الثالثة والجهات اللاحقة، و`E5` فشل ضمان حد الاحتواء. أصبح AttackGen الآن *يوسّع* نموذج التهديد المنشور بدلًا من أن يعكسه فقط.<br><br>- القوالب قابلة للاستخدام عبر MCP: يقبل `get_ai_insider_prompt` و`generate_ai_insider_scenario` المعاملين `template=` و`scenario_seed=`، ويُعيد `list_ai_insider_options` كل قالب مع التحديدات والموجز الذي يطبقه — بحيث يمكن للعميل اختيار إعداد مسبق بناءً على جدارته والاستدعاء بقالب فقط وصناعة وحجم شركة. سابقًا كانت أسماء القوالب تُدرَج لكن لا تقبلها أي أداة. | | مهارة attackgen-tabletop: مسار التهديد الداخلي بالذكاء الاصطناعي | - مسار تمرين ثانٍ: تبني [مهارة الوكيل](https://github.com/mrwadams/attackgen/blob/main/skills) الآن تمرينًا محاكيًا من نموذج التهديد الداخلي بالذكاء الاصطناعي بالإضافة إلى سلسلة قتل MITRE. اختر قالب بدء سريع (أو نموذج نشر وفئات تهديد) وسيحوّل حمولة `get_ai_insider_prompt` إلى MSEL.<br><br>- نفس الشكل، عمود فقري مختلف: يحتفظ التمرين بالأقسام الستة نفسها، لكن جدول سلسلة القتل يصبح ملف تعريف الوكيل ونطاق تهديد STRIDE، وتُحكَم بطاقة تقييم الكشف مقابل وضع الكشف الخاص بنموذج النشر — بحيث تصبح الصفوف التي *لن* تُطلق هي النتيجة — وتصبح القرارات المطلوبة في القالب أسئلة نقاش إلزامية.<br><br>- المسار يُختار لك: وصف المهارة الآن يُفعَّل عند صياغة تتعلق بالوكيل المارق، بحيث يصل طلب "تمرين محاكي للتهديد الداخلي بالذكاء الاصطناعي" إلى المسار الصحيح. أما الفاعل الخارجي ذو الأساليب المعززة بالذكاء الاصطناعي فيبقى على مسار MITRE.<br><br>- استجابة، لا استغلال: كلا المسارين محدودان صراحةً بالتدرب على القرارات التي يجب أن يتخذها فريق الاستجابة — لا كود استغلال ولا حمولات ولا ثغرات حقيقية غير مُرقَّعة — ومسار الذكاء الاصطناعي ينسب سلوك الوكيل إلى التكوين والوصول والهدف بدلًا من الدافع البشري. | | إصلاح: حذف مطالبات MCP AI-Insider لقدرات الوكيل | - القالب نفسه، المطالبة نفسها: حُذفت كتلة قدرات الوكيل المتقدم — الأسطر المستندة إلى المعايير التي تجعل سيناريو AI insider موثوقًا — من كل استدعاء لـ `get_ai_insider_prompt` / `generate_ai_insider_scenario` لم يحدد `capabilities` صراحةً. لا يوفر أي قالب هذه القدرات، لذا سقطت الوسيطة إلى قيمة فارغة واستبدلت المطالبة بسطر عام "افترض وجود وكيل برمجي متقدم قادر"، بينما أرسلت الصفحة 3 القدرات الأربع جميعها للقالب نفسه.<br><br>- القيم الافتراضية الآن تطابق التطبيق: يؤدي حذف `capabilities` إلى تطبيق المجموعة الكاملة، كما يفعل التحديد المتعدد في الصفحة. لا يزال تمرير `[]` يتركها غير محددة، لذا فإن الإلغاء المتعمد يبقى دون تغيير. | | إصلاح: توليد سيناريو Anthropic Claude 4.7+ | - كل نموذج Claude يعمل مجددًا: ترفض نماذج Claude 4.7 وما بعده أي `temperature` لأخذ العينات، وتعيد `BadRequestError: 'temperature' is deprecated for this model`. أربعة من نماذج Anthropic الخمسة المدرجة — Fable 5 وOpus 4.8 وSonnet 5 وOpus 4.7 — لم تتمكن من توليد سيناريو على أي صفحة؛ فقط Haiku 4.5 عمل.<br><br>- مقيد لكل نموذج، لا لكل مزود: كانت قاعدة درجة الحرارة تُوجَّه سابقًا من المزود، وهو ما لا يمكنه التعبير عن مزود تختلف نماذجه. يحدد `ModelInfo.supports_temperature` الآن النماذج التي ترفض درجة الحرارة، لذا يحتفظ Haiku 4.5 بدرجة الحرارة المُهيأة بينما تحذفها النماذج الشقيقة. يبقى OpenAI قاعدة على مستوى المزود (كل نموذج محادثة حالي هو نموذج استدلال)، ولا تزال النماذج غير المسجلة — نقاط نهاية Ollama / LM Studio المحلية — تتلقى درجة حرارة. | ### v0.14 | ما الجديد؟ | لماذا هو مفيد؟ | | ----------- | ----------------- | | خادم MCP للعملاء الوكيلين | - توليد السيناريوهات كأدوات: يوفّر خادم FastMCP جديد (`mcp_server.py`، حزمة `mcp` الرسمية) واجهة AttackGen للعملاء الوكيلين عبر stdio، بحيث يمكن لمساعد مثل Claude Code أو Claude Desktop جلب بيانات MITRE وتوليد السيناريوهات دون واجهة Streamlit.<br><br>- مستويان: **أدوات البيانات** (`list_threat_groups`، `list_case_studies`، `get_kill_chain`، `get_detection_report`، `get_navigator_layer`، `list_ai_insider_options`، `get_ai_insider_prompt`) لا تُجري أي استدعاء لنموذج لغوي ولا تحتاج إلى مفتاح API — فهي تُرجع بيانات MITRE منظمة، وعند الحاجة تُرجع مطالبة جاهزة للتنفيذ، لذا من الآمن استضافتها عبر HTTP. **أدوات التوليد** (`generate_threat_group_scenario`، `generate_custom_scenario`، `generate_ai_insider_scenario`) تأخذ إعدادًا بمفتاحك الخاص وتُرجع Markdown جاهزًا — أبقِ هذه على stdio المحلي.<br><br>- تنفيذ مشترك: يعيد الخادم استخدام نفس بُنّاة `core/prompts.py` بلا واجهة ومحمّلات `core/attack_data.py` التي تستخدمها صفحات Streamlit، بحيث تتطابق السيناريوهات مع التطبيق بدلًا من أن تنحرف عنه. شغّله عبر `python -m mcp_server` أو سكربت الطرفية `attackgen-mcp`. | | مهارة الوكيل attackgen-tabletop | - تمارين طاولة جاهزة للميسّر: تبني [مهارة وكيل](https://github.com/mrwadams/attackgen/blob/main/skills) جديدة على أدوات بيانات MCP لتحويل مجموعة تهديد أو دراسة حالة من MITRE ATT&CK/ATLAS إلى تمرين طاولة استجابة للحوادث (IR) / MSEL كامل — سرد السيناريو، وسلسلة القتل المُخطَّطة بالمراحل، وحقن موقّتة زمنيًا، وأسئلة نقاش وفق NIST SP 800-61، وبطاقة تقييم لتغطية الكشف.<br><br>- تعمل على نموذج المستدعي: توفّر المهارة حِرفية التمرين بينما يوفّر خادم MCP البيانات، لذا تعمل على نموذج العميل نفسه دون مفتاح API إضافي.<br><br>- صيغتا إخراج: تُسلَّم بصيغة Markdown (افتراضيًا) أو تقرير HTML مكتفٍ ذاتيًا وصديق للطباعة. | --- [Read more](https://github.com/mrwadams/attackgen)