
CybORG CAGE 2-Umgebung aktualisiert für das Paper „Alignment of Autonomous Cyber Defense Agents via Adaptive Policy Shaping“
Code für unser Paper Alignment of Autonomous Cyber Defense Agents via Adaptive Policy Shaping. Dieses Repository erweitert die CybORG CAGE Challenge 2, um zu untersuchen, wie autonome Verteidiger auf operative Prioritäten ausgerichtet werden können, während ihre Fähigkeit zur Verteidigung des Netzwerks erhalten bleibt.
Die ursprüngliche CAGE-2-Challenge bewertet blaue Verteidiger gegen integrierte rote Agenten anhand der CAGE-Belohnung. Diese modifizierte Version fügt operative Ziele, modifizierte Angreiferrichtlinien und Ausrichtungsmethoden für blaue Verteidiger hinzu. Der Simulator und die Experiment-Skripte bleiben in der CybORG/-Struktur. Der ursprüngliche CAGE-2-Leitfaden behält die ursprüngliche Challenge-Beschreibung bei.
Das modifizierte Netzwerk umfasst zusätzlich zu den Benutzer-, Unternehmens-, Betriebs- und Verteidiger-Hosts Authentifizierungs- (Auth), Datenbank- (Database) und Front-End- (Front) Server. Diese Server repräsentieren operative Prioritäten, ausgedrückt durch Vertraulichkeit (C), Integrität (I) und Verfügbarkeit (A):
| Servertyp | Operative Prioritäten |
|---|---|
Authentifizierung (Auth) | Vertraulichkeit, Integrität, Verfügbarkeit |
Datenbank (Database) | Vertraulichkeit, Verfügbarkeit |
Front-End (Front) | Integrität, Verfügbarkeit |
Die Resilienzbewertung ist angelehnt an Cadet et al. Quantitative Resilience Modeling for Autonomous Cyber Defense. Die Implementierung baut auf dem zugehörigen CyberResilience-Code auf.
Unsere Resilienzmetrik zeichnet CIA-Verluste bei jedem Schritt auf und kombiniert sie zu einem normalisierten Resilienzverlust, mit Standardgewichten von 0,6 für Vertraulichkeit, 0,2 für Integrität und 0,2 für Verfügbarkeit. Sie bewertet außerdem Kandidaten für blaue Aktionen für die attributbasierte Policy- und Ausrichtungsanalyse. Die generierten Szenarien weisen CIA-kritischen Servern normale CAGE-Host-Belohnungswerte von null zu, sodass operative Ausrichtung und allgemeine Netzwerkverteidigungsleistung getrennt bewertet werden können.
Weitere interne Änderungen an der CAGE-2-Codebasis sind im Experiment-README beschrieben.
Die ursprünglichen Meander- und B-line-Angreifer werden erweitert, um die hinzugefügten operativen Server anzugreifen und Hostnamen über die generierten Netzwerkgrößen hinweg zu unterstützen. Die Evaluierung verwendet fünf Gegner:
| Paper-Gegner | Python-Klasse | Auswirkungsziele |
|---|---|---|
| M-CIA | RedMeanderAgent_Combination_CIA | CIA-kritische Auth-, Database- und Front-Server |
| M-CAGE | RedMeanderAgent_Combination_CAGE | Andere geeignete kompromittierte Hosts, die zur CAGE-Leistung beitragen |
| Bline-C | B_lineAgent_Resilience_C | Auth- oder Database-Server |
| Bline-I | B_lineAgent_Resilience_I | Auth- oder Front-Server |
| Bline-A | B_lineAgent_Resilience_A | Auth-, Database- oder Front-Server |
Das Training verwendet RedMeanderAgent_Combination, der bei jeder Entscheidung zur Auswahl der Auswirkung mit gleicher Wahrscheinlichkeit zwischen CIA- und CAGE-Auswirkungszielen wählt. Die B-line-Varianten wählen einmal pro Episode einen Zielservertyp aus und ermitteln passende Hosts aus den Beobachtungen. Siehe Meander_Resilience.py und B_line_resilience.py.
Verwenden Sie Python 3.10 oder neuer und installieren Sie uv. Vom Repository-Stammverzeichnis aus:
uv sync
cd CybORG
uv sync erstellt die Projektumgebung und installiert CybORG sowie seine Abhängigkeiten. Führen Sie Skripte mit uv run ... und Shell-Launcher mit uv run bash ... aus; eine manuelle Aktivierung der Umgebung ist nicht erforderlich.
| Speicherort | Inhalt |
|---|---|
CybORG/CybORG/ | Simulator, Agenten, Belohnungen, Metriken, Szenarien und Upstream-Tests |
CybORG/experiment_configs/ | Konfigurationen für Testzeit-, Trainingszeit-, adaptive, Skalierungs- und Red-Agent-Evaluierung |
CybORG/train_agents.py | Trainieren von Baseline- oder belohnungsgeformten Blue-Agenten |
CybORG/test_experiment.py | Evaluieren von Baseline-, festen und adaptiven Richtlinien |
CybORG/test_experiment_training_time.py | Evaluieren von Agenten, die während des Trainings ausgerichtet wurden |
CybORG/alignment_analysis.py | Berechnen von Alignment-Scores und Analysieren von Belohnungsabwägungen |
CybORG/CybORG/Shared/Scenarios/scenario_generation.py | Generieren von Szenarien mit konfigurierbaren Host-Populationen und Belohnungseinstellungen |
Verwenden Sie train_agents.py, um einen PPO-Verteidiger gegen den gemischten mäandernden Angreifer zu trainieren. PPOAgent trainiert die Baseline; AlignedPPOAgent fügt einen Belohnungsterm für das ausgewählte CIA-Attribut hinzu. Der Trainingszeit-Bonus wird im Paper Lambda und in der CLI nur alpha genannt; er ist getrennt vom Testzeit-Interpolationsgewicht.
Um einen Baseline-Checkpoint für base zu trainieren:
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
Um einen Verteidiger zu trainieren, der auf Vertraulichkeit ausgerichtet ist, mit einem Bonus von 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
Für die vollständigen Trainings-Sweeps:
uv run bash experiment_configs/train_agents/train_base.sh
uv run bash experiment_configs/train_agents/train_trainingtime_alignment.sh
Diese Launcher decken base, hosts_2, hosts_3 und hosts_4 mit den Trainings-Seeds 0 1 2 3 4 ab. Checkpoints werden unter CybORG/checkpoints/ als PPO_{scenario}_0_seed{seed}.zip für Baselines und als PPO_{scenario}_{bonus}_{attribute}_seed{seed}.zip für reward-geformte Agenten gespeichert. Nach dem Speichern eines Checkpoints führt train_agents.py außerdem eine kurze Evaluierung aus. Die Protokollierung ist standardmäßig deaktiviert; füge --wandb zu einem Python-Trainingsbefehl hinzu, um sie zu aktivieren.
Evaluierungsskripte laden trainierte Checkpoints und führen die Agenten gegen den konfigurierten roten Gegner aus. Die mitgelieferten Konfigurationen verwenden 100 Episoden, einen Evaluierungs-Seed beginnend bei 42 und fünf Trainings-Seeds. Die Episodenhorizonte betragen 200, 300, 400 bzw. 500 Schritte für base, hosts_2, hosts_3 und hosts_4.