
Strumento di audit di sicurezza Blackbox per container: enumera la configurazione di sicurezza dall'interno del container di destinazione
Conmachi è uno strumento scritto in Golang pensato per raccogliere informazioni sull'ambiente di un container ed elencare potenziali problemi di sicurezza. Può essere compilato staticamente in modo da poter essere inserito in un ambiente containerizzato ed eseguito senza alcuna dipendenza.
Dipendenze:
sudo apt-get install libpcap-dev
Conmachi è pensato per essere compilato su qualsiasi versione LTS di Ubuntu. Durante lo sviluppo, è stato compilato con Go versione 1.9 e successive, ma dovrebbe compilare con la maggior parte delle versioni.
Puoi compilare staticamente lo strumento con i seguenti comandi:
go get github.com/nccgroup/ConMachi
go get ./...
cd $GOPATH/bin
# Compilazione dinamica
CGO_LDFLAGS="/usr/lib/x86_64-linux-gnu/libpcap.a" go build conmachi
# OPPURE compilazione statica, potrebbe causare problemi con la scansione di rete
CGO_LDFLAGS="/usr/lib/x86_64-linux-gnu/libpcap.a" go build -ldflags '-w -extldflags "-static"' conmachi
Conmachi esegue la scansione di un gran numero di potenziali problemi tra cui:
Raccoglie inoltre informazioni che potrebbero essere utili durante l'esplorazione di un container, tra cui:
Attualmente in corso:
Usage of ./conmachi:
-l string
File to log to
-sniff int
Sniff the network for IP addresses for a given number of seconds
Vediamo come eseguire Conmachi in un container Docker. Per iniziare, abbiamo la nostra directory di lavoro con una copia di Conmachi al suo interno:
$ ls
conmachi
Poi aggiungiamo un Dockerfile:
FROM ubuntu
WORKDIR /example
ADD . /example
E lo compiliamo:
$ ls
conmachi Dockerfile
$ docker build -t example
E lo eseguiamo con una capability pericolosa:
$ docker run --rm --security-opt seccomp=unconfined --security-opt apparmor:unconfined --cap-add SYS_ADMIN -it example
root@ffffffffffff:/example# ./conmachi
Il container ha capabilities pericolose
---------------------------------------
* Il container ha capabilities nel set CapBnd che potrebbero abilitare attacchi di rete se un processo viene eseguito con uid=0: CAP_NET_RAW
* Il container ha capabilities nel set CapEff che potrebbero abilitare attacchi di rete al livello di privilegio corrente: CAP_NET_RAW
* Il container ha capabilities pericolose nel set CapBnd che potrebbero consentire la fuga dal container se un processo viene eseguito con uid=0: CAP_SYS_ADMIN
* Il container ha capabilities pericolose nel set CapEff che potrebbero consentire la fuga dal container se un processo viene eseguito al livello di privilegio corrente: CAP_SYS_ADMIN
Il container ha capabilities Docker non predefinite
---------------------------------------------------
Il container ha capabilities Docker non predefinite: CAP_SYS_ADMIN
Mount Scrivibili
----------------
Alcuni percorsi sono montati con permesso di scrittura e potrebbero essere filesystem montati dall'host. In tal caso, la modifica dei file in questi percorsi potrebbe consentire a un processo contenuto di modificare file al di fuori dell'ambiente contenuto. Sono stati rilevati i seguenti percorsi montati con permessi di scrittura:
---
Device: /dev/sda1
Path: /etc/resolv.conf
Type: ext4
Opts: [rw relatime data=ordered]
Freq: 0
Pass: 0
---
Device: /dev/sda1
Path: /etc/hostname
Type: ext4
Opts: [rw relatime data=ordered]
Freq: 0
Pass: 0
---
Device: /dev/sda1
Path: /etc/hosts
Type: ext4
Opts: [rw relatime data=ordered]
Freq: 0
Pass: 0
---
Namespace Utente Disabilitato
-----------------------------
Il namespacing utente non è abilitato. Di conseguenza, se un processo contenuto viene eseguito con uid=0, sarà eseguito come utente privilegiato se ottiene accesso a risorse al di fuori del container.
Container Esegue con Profilo AppArmor Non Confinato
---------------------------------------------------
Il container non sta applicando un profilo AppArmor ai processi contenuti
Seccomp è Disabilitato
----------------------
Seccomp è disabilitato nel container
Processore Vulnerabile ad Attacchi Hardware
-------------------------------------------
I seguenti processori presentano bug che potrebbero essere sfruttati. Ulteriori informazioni su ciascuno dei processori possono essere trovate leggendo /proc/cpuinfo.
Processor 0 (Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz) bugs: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
Processor 1 (Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz) bugs: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
Capabilities del Container
--------------------------
CapInh (00000000a82425fb): CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_FOWNER, CAP_FSETID, CAP_KILL, CAP_SETGID, CAP_SETUID, CAP_SETPCAP, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SYS_CHROOT, CAP_SYS_ADMIN, CAP_MKNOD, CAP_AUDIT_WRITE, CAP_SETFCAP, CAP_MAC_OVERRIDE, CAP_MAC_ADMIN, CAP_WAKE_ALARM, CAP_BLOCK_SUSPEND, CAP_AUDIT_READ
CapPrm (00000000a82425fb): CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_FOWNER, CAP_FSETID, CAP_KILL, CAP_SETGID, CAP_SETUID, CAP_SETPCAP, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SYS_CHROOT, CAP_SYS_ADMIN, CAP_MKNOD, CAP_AUDIT_WRITE, CAP_SETFCAP, CAP_MAC_OVERRIDE, CAP_MAC_ADMIN, CAP_WAKE_ALARM, CAP_BLOCK_SUSPEND, CAP_AUDIT_READ
CapEff (00000000a82425fb): CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_FOWNER, CAP_FSETID, CAP_KILL, CAP_SETGID, CAP_SETUID, CAP_SETPCAP, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SYS_CHROOT, CAP_SYS_ADMIN, CAP_MKNOD, CAP_AUDIT_WRITE, CAP_SETFCAP, CAP_MAC_OVERRIDE, CAP_MAC_ADMIN, CAP_WAKE_ALARM, CAP_BLOCK_SUSPEND, CAP_AUDIT_READ
CapBnd (00000000a82425fb): CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_FOWNER, CAP_FSETID, CAP_KILL, CAP_SETGID, CAP_SETUID, CAP_SETPCAP, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SYS_CHROOT, CAP_SYS_ADMIN, CAP_MKNOD, CAP_AUDIT_WRITE, CAP_SETFCAP, CAP_MAC_OVERRIDE, CAP_MAC_ADMIN, CAP_WAKE_ALARM, CAP_BLOCK_SUSPEND, CAP_AUDIT_READ
CapAmb (0000000000000000):
La Policy Cgroup Non Limita l'Utilizzo della CPU
------------------------------------------------
I processi nel container sono in grado di utilizzare quantità eccessive di tempo CPU
La Policy Cgroup Consente un Utilizzo Eccessivo della Memoria
--------------------------------------------------------------
I processi nel container sono in grado di utilizzare quantità eccessive (>8GB) di RAM
Runtime del Container Rilevato
------------------------------
Container runtime: docker
Informazioni sulla Versione del Kernel
--------------------------------------
Linux version 4.4.0-134-generic (buildd@lgw01-amd64-033) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #160-Ubuntu SMP Wed Aug 15 14:58:00 UTC 2018
Fantastico! Ha rilevato i nostri profili disabilitati, la nostra capability pericolosa e ha raccolto un sacco di informazioni sull'ambiente.