/csle

A research platform to develop automated security policies using quantitative methods, e.g., optimal control, computational game theory, reinforcement learning, optimization, evolutionary methods, and causal inference.

Primary LanguagePythonOtherNOASSERTION

Paper github Docker pulls PyPi downloads

The Cyber Security Learning Environment (CSLE)

CSLE is a platform for evaluating and developing reinforcement learning agents for control problems in cyber security. It can be considered as a cyber range specifically designed for reinforcement learning agents. Everything from network emulation, to simulation and implementation of network commands have been co-designed to provide an environment where it is possible to train and evaluate reinforcement learning agents on practical problems in cyber security. The platform can also be used to combine reinforcement learning with other quantitative methods, e.g., dynamic programming, computational game theory, evolutionary methods, causal inference, and general optimization.

Main Features

🖥️ Emulation System

CLSE includes a system for emulating large scale IT infrastructures, cyber attacks, and client populations. It is based on Linux containers and can be used to collect traces and to evaluate security policies.

Note The emulation system is mainly designed to run on a distributed system, e.g., a compute cluster. It can run on a laptop as well, but then only small emulations can be created.

💭 Simulation System

CSLE includes a simulation system for executing reinforcement learning algorithms and simulating Markov decision processes and Markov games. It is built in Python and can be integrated with standard machine learning libraries.

Note The simulations are compatible with OpenAI Gym/Gymnasium. Hence you can integrate the simulations with your own implementations of reinforcement learning algorithms.

⚙️ Management System

CSLE includes a system for managing emulations and simulations which can be accessed either through Command-Line Interface (CLI), through a REST API, through Python libraries, or through a web interface. The management system allows a) to start/stop emulations/simulations; b) real-time monitoring of emulation and simulation processes; and c), shell access to components of emulations.

🎓 Documentation

Documentation, installation instructions, and usage examples are available here. A PDF version of the documentation is available here. A video walkthrough of the installation process is available here.

📋 Supported Releases

Release Last date of support
v.0.6.0 2024-12-24
v.0.5.0 2024-06-02
v.0.4.0 2024-02-07
v.0.3.0 2024-01-17
v.0.2.0 2023-10-30
v.0.1.0 2023-06-06

Maintenance releases have a stable API and dependency tree, and receive bug fixes and critical improvements but not new features. We currently support each release for a window of 6 months.

📈 Build Status

Workflow Status
csle-agents status
csle-attacker status
csle-collector status
csle-common status
csle-defender status
csle-ryu status
csle-base status
csle-system-identification status
gym-csle-stopping-game-build status
gym-csle-intrusion-response-game-build status
python-linter status
csle-tolerance-build status
gym-csle-apt-game-build status
gym-csle-cyborg-build status
csle-attack-profiler-build status
management-system status

Supported Platforms

Datasets

A dataset of 6400 intrusion traces can be found here.

Maintainer

Kim Hammar
Kim Hammar

🧑‍🤝‍🧑 Contribute

Contributions are very welcome. Please use GitHub issues and pull requests. See the documentation for further instructions.

List of Contributors 🌟

Thanks go to these people!

Kim Hammar
Kim Hammar
Rolf Stadler
Rolf Stadler
Pontus Johnson
Pontus Johnson
Antonio Frederico Nesti Lopes
Antonio Frederico Nesti Lopes
Jakob Stymne
Jakob Stymne
Arvid Lagerqvist
Arvid Lagerqvist
Nils Forsgren
Nils Forsgren
Forough Shahab Samani
Forough Shahab Samani
Bength Roland Pappila
Bength Roland Pappila
Yu Hu
Yu Hu
Yan Wang
Yan Wang
Aws Jaber
Aws Jaber

🔖 Copyright and license

Creative Commons (C) 2020-2024, Kim Hammar

See also


Made with ❤   at    ,   and