
Entorno CybORG CAGE 2 actualizado para el artículo "Alignment of Autonomous Cyber Defense Agents via Adaptive Policy Shaping"
Código de nuestro artículo Alignment of Autonomous Cyber Defense Agents via Adaptive Policy Shaping. Este repositorio amplía CybORG CAGE Challenge 2 para estudiar cómo los defensores autónomos pueden ser dirigidos hacia prioridades operativas mientras conservan su capacidad de defender la red.
El desafío CAGE 2 original evalúa a los defensores azules contra agentes rojos integrados utilizando la recompensa de CAGE. Esta versión modificada añade objetivos operativos, políticas de atacante modificadas y métodos de alineación para los defensores azules. El simulador y los scripts de experimentos permanecen en la estructura CybORG/. La guía original de CAGE 2 conserva la descripción original del desafío.
La red modificada incluye servidores de autenticación (Auth), base de datos (Database) y front-end (Front), además de los hosts de usuario, empresariales, operativos y de defensor. Estos servidores representan prioridades operativas expresadas mediante confidencialidad (C), integridad (I) y disponibilidad (A):
| Tipo de servidor | Prioridades operativas |
|---|---|
Autenticación (Auth) | Confidencialidad, integridad, disponibilidad |
Base de datos (Database) | Confidencialidad, disponibilidad |
Front-end (Front) | Integridad, disponibilidad |
La puntuación de resiliencia está adaptada de Cadet et al. Quantitative Resilience Modeling for Autonomous Cyber Defense. La implementación se basa en el código CyberResilience asociado.
Nuestra métrica de resiliencia registra las caídas de CIA en cada paso y las combina en una caída de resiliencia normalizada, con pesos predeterminados de 0.6 para confidencialidad, 0.2 para integridad y 0.2 para disponibilidad. También puntúa las acciones azules candidatas para la política basada en atributos y el análisis de alineación. Los escenarios generados asignan a los servidores críticos para CIA valores de recompensa de host CAGE ordinarios de cero, lo que permite evaluar por separado la alineación operativa y el rendimiento general de defensa de la red.
Los cambios internos adicionales realizados en el código base de CAGE 2 se detallan en el README de experimentos.
Los atacantes originales Meander y B-line se amplían para atacar los servidores operativos añadidos y admitir nombres de host en los tamaños de red generados. La evaluación utiliza cinco adversarios:
| Adversario del artículo | Clase de Python | Objetivos de impacto |
|---|---|---|
| M-CIA | RedMeanderAgent_Combination_CIA | Servidores Auth, Database y Front críticos para CIA |
| M-CAGE | RedMeanderAgent_Combination_CAGE | Otros hosts comprometidos elegibles que contribuyen al rendimiento de CAGE |
| Bline-C | B_lineAgent_Resilience_C | Servidores Auth o Database |
| Bline-I | B_lineAgent_Resilience_I | Servidores Auth o Front |
| Bline-A | B_lineAgent_Resilience_A | Servidores Auth, Database o Front |
El entrenamiento utiliza RedMeanderAgent_Combination, que selecciona entre objetivos de impacto CIA y CAGE con igual probabilidad en cada decisión de selección de impacto. Las variantes B-line seleccionan un tipo de servidor objetivo una vez por episodio y resuelven los hosts coincidentes a partir de las observaciones. Véase Meander_Resilience.py y B_line_resilience.py.
Utilice Python 3.10 o superior e instale uv. Desde la raíz del repositorio:
uv sync
cd CybORG
uv sync crea el entorno del proyecto e instala CybORG y sus dependencias. Ejecute los scripts con uv run ... y los lanzadores de shell con uv run bash ...; no se requiere la activación manual del entorno.
| Ubicación | Contenido |
|---|---|
CybORG/CybORG/ | Simulador, agentes, recompensas, métricas, escenarios y pruebas upstream |
CybORG/experiment_configs/ | Configuraciones de evaluación en tiempo de prueba, en tiempo de entrenamiento, adaptativas, de escalado y de agente rojo |
CybORG/train_agents.py | Entrena agentes azules de referencia o con recompensa modelada |
CybORG/test_experiment.py | Evalúa políticas de referencia, fijas y adaptativas |
CybORG/test_experiment_training_time.py | Evalúa agentes alineados durante el entrenamiento |
CybORG/alignment_analysis.py | Calcula puntuaciones de alineación y analiza los compromisos de recompensa |
CybORG/CybORG/Shared/Scenarios/scenario_generation.py | Genera escenarios con poblaciones de hosts y ajustes de recompensa configurables |
Use train_agents.py para entrenar un defensor PPO contra el atacante mixto errante. PPOAgent entrena la línea base; AlignedPPOAgent añade un término de recompensa para el atributo CIA seleccionado. El bono en tiempo de entrenamiento se denomina lambda en el artículo y alpha solo en la CLI; es independiente del peso de interpolación en tiempo de prueba.
Para entrenar un checkpoint de línea base para 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
Para entrenar a un defensor alineado con la confidencialidad con una bonificación de 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
Para los barridos de entrenamiento completos:
uv run bash experiment_configs/train_agents/train_base.sh
uv run bash experiment_configs/train_agents/train_trainingtime_alignment.sh
Estos lanzadores cubren base, hosts_2, hosts_3 y hosts_4 con semillas de entrenamiento 0 1 2 3 4. Los checkpoints se guardan en CybORG/checkpoints/ como PPO_{scenario}_0_seed{seed}.zip para las líneas base y PPO_{scenario}_{bonus}_{attribute}_seed{seed}.zip para los agentes con recompensa modelada. Tras guardar un checkpoint, train_agents.py también ejecuta una breve evaluación. El registro está deshabilitado por defecto; añade --wandb a un comando de entrenamiento de Python para habilitarlo.
Los scripts de evaluación cargan los checkpoints entrenados y ejecutan los agentes contra el adversario rojo configurado. Las configuraciones proporcionadas usan 100 episodios, una semilla de evaluación que comienza en 42 y cinco semillas de entrenamiento. Los horizontes de episodio son de 200, 300, 400 y 500 pasos para base, hosts_2, hosts_3 y hosts_4, respectivamente.