
تم تحديث بيئة CybORG CAGE 2 من أجل الورقة البحثية "Alignment of Autonomous Cyber Defense Agents via Adaptive Policy Shaping"
شيفرة ورقتنا البحثية Alignment of Autonomous Cyber Defense Agents via Adaptive Policy Shaping. يوسّع هذا المستودع CybORG CAGE Challenge 2 لدراسة كيفية توجيه المدافعين المستقلين نحو الأولويات التشغيلية مع الحفاظ على قدرتهم على الدفاع عن الشبكة.
يقيّم تحدّي CAGE 2 الأصلي المدافعين الزرق مقابل وكلاء حمر مدمجين باستخدام مكافأة CAGE. تضيف هذه النسخة المعدّلة أهدافًا تشغيلية، وسياسات مهاجم معدّلة، وأساليب مواءمة للمدافعين الزرق. يبقى المحاكي ونصوص التجارب ضمن تخطيط CybORG/. يحتفظ دليل CAGE 2 الأصلي بوصف التحدّي الأصلي.
تتضمن الشبكة المعدّلة خوادم المصادقة (Auth) وقاعدة البيانات (Database) والواجهة الأمامية (Front) بالإضافة إلى مضيفي المستخدم والمؤسسة والعمليات والمدافع. تمثّل هذه الخوادم أولويات تشغيلية معبّرًا عنها عبر السرّية (C) والسلامة (I) والتوافر (A):
| نوع الخادم | الأولويات التشغيلية |
|---|---|
المصادقة (Auth) | السرّية، السلامة، التوافر |
قاعدة البيانات (Database) | السرّية، التوافر |
الواجهة الأمامية (Front) | السلامة، التوافر |
تم اقتباس تقييم المرونة من Cadet et al. Quantitative Resilience Modeling for Autonomous Cyber Defense. يستند التنفيذ إلى شيفرة CyberResilience المرتبطة.
يسجّل مقياس المرونة لدينا انخفاضات CIA في كل خطوة ويدمجها في انخفاض مرونة مُعيّر، بأوزان افتراضية قدرها 0.6 للسرّية و0.2 للسلامة و0.2 للتوافر. كما يقيّم إجراءات زرقاء مرشّحة للسياسة القائمة على السمات وتحليل المواءمة. تُسنِد السيناريوهات المولّدة للخوادم الحرجة من حيث CIA قيم مكافأة مضيف CAGE عادية صفرية، مما يتيح تقييم المواءمة التشغيلية وأداء الدفاع العام عن الشبكة بشكل منفصل.
التغييرات الداخلية الإضافية التي أُجريت على قاعدة شيفرة CAGE 2 مفصّلة في README التجارب.
تم توسيع مهاجمي Meander وB-line الأصليين لاستهداف الخوادم التشغيلية المضافة ودعم أسماء المضيفين عبر أحجام الشبكة المولّدة. يستخدم التقييم خمسة خصوم:
| خصم الورقة | صنف Python | أهداف التأثير |
|---|---|---|
| M-CIA | RedMeanderAgent_Combination_CIA | خوادم Auth وDatabase وFront الحرجة من حيث CIA |
| M-CAGE | RedMeanderAgent_Combination_CAGE | مضيفون مخترقون مؤهّلون آخرون يساهمون في أداء CAGE |
| Bline-C | B_lineAgent_Resilience_C | خوادم Auth أو Database |
| Bline-I | B_lineAgent_Resilience_I | خوادم Auth أو Front |
| Bline-A | B_lineAgent_Resilience_A | خوادم Auth أو Database أو Front |
يستخدم التدريب RedMeanderAgent_Combination، الذي يختار بين أهداف تأثير CIA وCAGE باحتمال متساوٍ عند كل قرار لاختيار التأثير. تختار متغيّرات B-line نوع خادم هدف واحدًا مرة واحدة لكل حلقة وتحدّد المضيفين المطابقين من الملاحظات. انظر Meander_Resilience.py وB_line_resilience.py.
استخدم Python 3.10 أو أحدث وثبّت uv. من جذر المستودع:
uv sync
cd CybORG
uv sync ينشئ بيئة المشروع ويثبّت CybORG واعتمادياته. شغّل السكربتات باستخدام uv run ... ومشغّلات shell باستخدام uv run bash ...؛ لا حاجة لتفعيل البيئة يدويًا.
| الموقع | المحتويات |
|---|---|
CybORG/CybORG/ | المحاكي والوكلاء والمكافآت والمقاييس والسيناريوهات واختبارات المنبع |
CybORG/experiment_configs/ | إعدادات التقييم لوقت الاختبار ووقت التدريب والتكيّف والتوسّع وتقييم الوكيل الأحمر |
CybORG/train_agents.py | تدريب وكلاء أزرق أساسيين أو مشكّلين بالمكافأة |
CybORG/test_experiment.py | تقييم السياسات الأساسية والثابتة والتكيّفية |
CybORG/test_experiment_training_time.py | تقييم الوكلاء الذين تمت مواءمتهم أثناء التدريب |
CybORG/alignment_analysis.py | حساب درجات المواءمة وتحليل مقايضات المكافأة |
CybORG/CybORG/Shared/Scenarios/scenario_generation.py | توليد السيناريوهات مع تجمّعات مضيفين قابلة للتهيئة وإعدادات المكافأة |
استخدم train_agents.py لتدريب مدافع PPO ضد المهاجم المتعرّج المختلط. يدرّب PPOAgent النموذج الأساسي؛ ويضيف AlignedPPOAgent حدًّا للمكافأة الخاص بسمة CIA المختارة. تُسمّى مكافأة وقت التدريب lambda في الورقة البحثية وalpha في واجهة سطر الأوامر فقط؛ وهي منفصلة عن وزن الاستيفاء الخاص بوقت الاختبار.
لتدريب نقطة تحقق أساسية واحدة لـ base:
uv run python train_agents.py \
--scenario scalability_experiments/base \
--agent_type PPOAgent \
--red_agent RedMeanderAgent_Combination \
--alpha 0 --seed 0 --game_steps 200 --training_iter 500000 \
--agent_export checkpoints/PPO_base_0_seed0
لتدريب مدافع متوافق مع السرية مع مكافأة قدرها 1.5:
uv run python train_agents.py \
--scenario scalability_experiments/base \
--agent_type AlignedPPOAgent \
--red_agent RedMeanderAgent_Combination \
--alignment_attribute C --alpha 1.5 \
--seed 0 --game_steps 200 --training_iter 500000 \
--agent_export checkpoints/PPO_base_1.5_C_seed0
لجولات التدريب الكاملة:
uv run bash experiment_configs/train_agents/train_base.sh
uv run bash experiment_configs/train_agents/train_trainingtime_alignment.sh
تغطي أدوات التشغيل هذه base وhosts_2 وhosts_3 وhosts_4 مع بذور التدريب 0 1 2 3 4. تُحفظ نقاط التحقق تحت CybORG/checkpoints/ بصيغة PPO_{scenario}_0_seed{seed}.zip لخطوط الأساس وبصيغة PPO_{scenario}_{bonus}_{attribute}_seed{seed}.zip للوكلاء ذوي المكافأة المُشكَّلة. بعد حفظ نقطة تحقق، يشغّل train_agents.py أيضًا تقييمًا قصيرًا. التسجيل معطّل افتراضيًا؛ أضف --wandb إلى أمر تدريب Python لتمكينه.
تُحمّل سكربتات التقييم نقاط التحقق المدرَّبة وتشغّل الوكلاء ضد الخصم الأحمر المُهيَّأ. تستخدم التهيئات المرفقة 100 حلقة، وبذرة تقييم تبدأ من 42، وخمس بذور تدريب. آفاق الحلقات هي 200 و300 و400 و500 خطوة لـ base وhosts_2 وhosts_3 وhosts_4 على التوالي.
يقيّم test_experiment.py خطوط أساس Blue Monitor وPPO إلى جانب المواءمة الثابتة أو التكيفية في وقت الاختبار:
# Baselines and fixed test-time interpolation
uv run python test_experiment.py --config experiment_configs/base.yaml
uv run python alignment_analysis.py --config experiment_configs/base.yaml
# Adaptive test-time policy selection
uv run python test_experiment.py --config experiment_configs/adaptive_alpha_config/base/cia.yaml
uv run python alignment_analysis.py --config experiment_configs/adaptive_alpha_config/base/cia.yaml
test_experiment_training_time.py يقيّم نقاط التحقق المشكّلة بالمكافأة:
uv run python test_experiment_training_time.py --config experiment_configs/training_time_config/base.yaml
uv run python alignment_analysis.py --config experiment_configs/training_time_config/base.yaml
درّب جميع نقاط التحقق التي يطلبها ملف التكوين قبل تشغيله. لتشغيل مسحي التقييم والتحليل الكاملين:
uv run bash experiment_configs/run_all.sh
uv run bash experiment_configs/run_training_time_experiments.sh
uv run bash experiment_configs/export_alignment_analysis.sh
راجع دليل الإعداد للاطلاع على طريقة الإعداد وتكوين الخصم.