
Le seul outil open-source pour analyser les vulnérabilités et les problèmes de configuration des conteneur(s) Docker en cours d'exécution et des réseaux Docker.
DockerENT est un outil actif d'analyse de sécurité des applications au moment de l'exécution (RAST tool). C'est un framework enfichable écrit en Python. Il est livré avec une application CLI et une interface web propre écrite avec StreamLit.
DockerENT a été conçu pour détecter les mauvaises configurations de sécurité faibles dans les déploiements de production qui peuvent entraîner de graves conséquences. Cette application se connecte aux conteneurs en cours d'exécution dans le système, récupère la liste des configurations d'exécution faibles et vulnérables et génère un rapport. Si elle est invoquée via l'interface web, elle peut afficher le rapport d'analyse et d'audit dans l'interface elle-même.
Vous êtes pressé de tester ? Téléchargez la dernière version stable de PyPi et exécutez l'application Web, tout le reste est intuitif.
pip install DockerENT
Exécutez ensuite l'application comme suit :
DockerENT -w
C'est tout.
DockerENT a été conçu en gardant à l'esprit la simplicité et la facilité d'utilisation. Actuellement, il vous suffit de cloner le dépôt et de télécharger les dépendances ou de construire le Dockerfile. Une fois les dépendances installées sur le système local, nous sommes prêts à exécuter l'outil et à analyser les configurations d'exécution des conteneurs en cours d'exécution.
# Téléchargement et configuration
git clone https://github.com/r0hi7/DockerENT.git
cd DockerENT
make venv
source venv/bin/activate
# Exécution
python -m DockerENT --help
usage: Find the vulnerabilities hidden in your running container(s).
[-h] [-d [DOCKER_CONTAINER]] [-p [DOCKER_PLUGINS]]
[-d-nw [DOCKER_NETWORK]] [-p-nw [DOCKER_NW_PLUGINS]] [-w]
[-n [PROCESS_COUNT]] [-a] [-o [OUTPUT]]
optional arguments:
-h, --help show this help message and exit
-w, --web-app Run DockerENT in WebApp mode. If this parameter is
enabled, other command line flags will be ignored.
-n [PROCESS_COUNT], --process [PROCESS_COUNT]
Run scans in parallel (Process pool count).
-a, --audit Flag to check weather to audit results or not.
-d [DOCKER_CONTAINER], --docker [DOCKER_CONTAINER]
Run scan against the running container.
-p [DOCKER_PLUGINS], --plugins [DOCKER_PLUGINS]
Run scan with only specified plugins.
-p-nw [DOCKER_NW_PLUGINS], --nw-plugins [DOCKER_NW_PLUGINS]
Run scan with only specified plugins.
-d-nw [DOCKER_NETWORK], --docker-network [DOCKER_NETWORK]
Run scan against running docker-network.
-o [OUTPUT], --output [OUTPUT]
Output plugin to write data to.
# ou via le conteneur
docker build . -t dockerent
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8501:8501 --name dockerent dockerent
# Ouvrez ensuite votre navigateur à http://localhost:8051
Regardez cette courte vidéo pour commencer.
file et html.demo.cp DockerENT/docker_plugins/docker_sample_plugin.py DockerENT/docker_plugins/docker_demo_plugin.py
_plugin_name = 'demo_plugin'
def scan(container, output_queue, audit=False, audit_queue=None):
_log.info('Staring {} Plugin ...'.format(_plugin_name_))
res = {}
result = {
'test_class': {
'TEST_NAME': ['good']
}
}
res[container.short_id] = {
_plugin_name_: result
}
# Do something magical.
_log.info('Completed execution of {} Plugin.'.format(_plugin_name_))
'''Make Sure you put dict of following structure in Q.
{
'contiainer_id': {
'plugin_name': {
'test_name_demo1': {
resultss:[]
},
'test_name_demo2': {
results: []
}
}
}
}
'''
output_queue.put(res)
if audit:
_audit(container, res, audit_queue)
def _audit(container, results, audit_queue):
'''Make Sure to add dict of following structure to Audit Q
res = {
"container_id": [
"_plugin_name_, WARN/INFO/ERROR, details"
]
}
'''
# Magical logic to perform Audit.
audit_queue.put(res)
-n <count> pour spécifier le nombre de processeurs en parallèle.JSON et HTML.JSON sont volumineux.| Nom du plugin | Fichier du plugin | Fonctionnalité | Audit |
|---|
| CMD_HISTORY | File | Identifier l'historique du shell | Historique root et historique utilisateur |
| FILESYSTEM | File | Identifier les systèmes de fichiers RW | Si des systèmes de fichiers RW sont présents. |
| NETWORK | File | Identifier l'état du réseau | Identifie tous les ports mappés. |
| PLAINTEST_PASSWORD | File | Identifier les mots de passe dans différents fichiers | |
| SECURITY_PROFILES | File | Identifier les profils de sécurité faibles | Liste les profils de sécurité faibles. |
| USER_INFO | File | Identifier les informations utilisateur | Liste les permissions dans passwd et autres fichiers sensibles |
| SYSTEM_INFO | File | Identifier les informations système Docker | Pas d'audit |
| FILES_INFO | File | Identifier les répertoires et fichiers inscriptibles par tous | Liste tous ces fichiers. |
| PROC_INFO | File | Identifier la liste des processus dans le système Docker |