Sign inSign up

nodyd/bsidesmuc2020

By nodyd

Updated about 6 years ago

Repo for the tests at BSides Munich 2020

Image
0

314

nodyd/bsidesmuc2020 repository overview

Pentesting Cloud Sandboxes in the wild

Created and collected content for BSides Munich August 2020

Slides

Abstract

Building on last year’s explanation of container workings under the hood (F***ing Containers - how do they work?), we explain several techniques for breaking out of misconfigured containers/container hosts. We will discuss the most common misconfigurations (such as extensive container privileges, exposed network services, mounted sockets, internal cluster privileges) and how to test for them. For each discussed attack vector, we will show how it can be automated (and integrated into build pipelines) using a tool of choice. Finally, a comparison of the well known container execution platforms (AWS, Azure, fly.io, GCP, Heroku) will be presented.

Collected data

The tools genuinetools/amicontained and brompwnie/botb have been executed on multiple cloud container runtimes. The results are summarized in the following tables. The scan output itself is collected in the sub-directoty scanresults. The data collection have been performed on 06/08/2020.

Comparison Cloud Container hoster
ServicePID NamesaceUser NamespaceAppArmor Profile/ SELinuxAvailable CapabilitiesFiltered SeccompMetadata-ServiceRemark
AWS ECSYesNounconfined140http://169.254.169.254/Custom Cluster
AWS FargateYesNounconfined1465None-/-
Azure Container InstancesYesNounconfined1465None-/-
Docker localYesNodocker-default1362NoneDocker Engine
fly.ioNoNokernel38disabledNoneFirecracker
Google Cloud RunNoNounconfined38disabledhttp://169.254.169.254/ http://metadata.google.internal/gVisor
HerokuYesNolxc-container-default2347NoneLXC
Capabilities Comparison
AWS ECSAWS FargateAzure Container InstancesDocker localfly.ioGoogle Cloud RunHeroku
chownchownchownchownchownchown
dac_overridedac_overridedac_overridedac_overridedac_overridedac_overridedac_override
dac_read_searchdac_read_search
fownerfownerfownerfownerfownerfownerfowner
fsetidfsetidfsetidfsetidfsetidfsetidfsetid
killkillkillkillkillkillkill
setgidsetgidsetgidsetgidsetgidsetgidsetgid
setuidsetuidsetuidsetuidsetuidsetuidsetuid
setpcapsetpcapsetpcapsetpcapsetpcapsetpcapsetpcap
linux_immutablelinux_immutablelinux_immutable
net_bind_servicenet_bind_servicenet_bind_servicenet_bind_servicenet_bind_servicenet_bind_servicenet_bind_service
net_broadcastnet_broadcastnet_broadcast
net_adminnet_admin
net_rawnet_rawnet_rawnet_rawnet_rawnet_raw
ipc_lockipc_lockipc_lock
ipc_owneripc_owneripc_owner
sys_modulesys_module
sys_rawiosys_rawio
sys_chrootsys_chrootsys_chrootsys_chrootsys_chrootsys_chroot
sys_ptracesys_ptrace
sys_pacctsys_pacctsys_pacct
sys_adminsys_admin
sys_bootsys_boot
sys_nicesys_nice
sys_resourcesys_resourcesys_resource
sys_timesys_time
sys_tty_configsys_tty_configsys_tty_config
mknodmknodmknodmknodmknodmknod
leaseleaselease
audit_writeaudit_writeaudit_writeaudit_writeaudit_writeaudit_writeaudit_write
audit_controlaudit_controlaudit_control
setfcapsetfcapsetfcapsetfcapsetfcapsetfcapsetfcap
mac_overridemac_override
mac_adminmac_admin
syslogsyslogsyslog
wake_alarmwake_alarmwake_alarm
block_suspendblock_suspendblock_suspend
audit_readaudit_readaudit_read
Seccomp Filter Comparison
AWS ECSAWS FargateAzure Container InstancesDocker localfly.ioGoogle Cloud RunHeroku
MSGRCVMSGRCV
PTRACEPTRACEPTRACE
SYSLOGSYSLOGSYSLOG
SETUID
SETGID
SETSIDSETSIDSETSIDSETSID
SETREUID
SETREGID
SETGROUPS
SETRESUID
SETRESGID
PERSONALITY
USELIBUSELIBUSELIB
USTATUSTATUSTAT
SYSFSSYSFSSYSFS
VHANGUPVHANGUPVHANGUPVHANGUP
PIVOT_ROOTPIVOT_ROOTPIVOT_ROOTPIVOT_ROOT
_SYSCTL_SYSCTL_SYSCTL
CHROOT
ACCTACCTACCTACCT
SETTIMEOFDAYSETTIMEOFDAYSETTIMEOFDAYSETTIMEOFDAY
MOUNTMOUNTMOUNT
UMOUNT2UMOUNT2UMOUNT2UMOUNT2
SWAPONSWAPONSWAPONSWAPON
SWAPOFFSWAPOFFSWAPOFFSWAPOFF
REBOOTREBOOTREBOOTREBOOT
SETHOSTNAMESETHOSTNAMESETHOSTNAMESETHOSTNAME
SETDOMAINNAMESETDOMAINNAMESETDOMAINNAMESETDOMAINNAME
IOPLIOPLIOPL
IOPERMIOPERMIOPERM
CREATE_MODULECREATE_MODULECREATE_MODULE
INIT_MODULEINIT_MODULEINIT_MODULEINIT_MODULE
DELETE_MODULEDELETE_MODULEDELETE_MODULEDELETE_MODULE
GET_KERNEL_SYMSGET_KERNEL_SYMSGET_KERNEL_SYMS
QUERY_MODULEQUERY_MODULEQUERY_MODULE
QUOTACTLQUOTACTLQUOTACTLQUOTACTL
NFSSERVCTLNFSSERVCTLNFSSERVCTL
GETPMSGGETPMSGGETPMSG
PUTPMSGPUTPMSGPUTPMSG
AFS_SYSCALLAFS_SYSCALLAFS_SYSCALL
TUXCALLTUXCALLTUXCALL
SECURITYSECURITYSECURITY
LOOKUP_DCOOKIELOOKUP_DCOOKIELOOKUP_DCOOKIELOOKUP_DCOOKIE
CLOCK_SETTIMECLOCK_SETTIMECLOCK_SETTIMECLOCK_SETTIME
VSERVERVSERVERVSERVER
MBINDMBINDMBIND
SET_MEMPOLICYSET_MEMPOLICYSET_MEMPOLICY
GET_MEMPOLICYGET_MEMPOLICYGET_MEMPOLICYGET_MEMPOLICY
KEXEC_LOADKEXEC_LOADKEXEC_LOADKEXEC_LOAD
ADD_KEYADD_KEYADD_KEYADD_KEY
REQUEST_KEYREQUEST_KEYREQUEST_KEYREQUEST_KEY
KEYCTLKEYCTLKEYCTLKEYCTL
MIGRATE_PAGESMIGRATE_PAGESMIGRATE_PAGES
FUTIMESAT
UNSHAREUNSHAREUNSHAREUNSHARE
MOVE_PAGESMOVE_PAGESMOVE_PAGESMOVE_PAGES
PERF_EVENT_OPENPERF_EVENT_OPENPERF_EVENT_OPENPERF_EVENT_OPEN
FANOTIFY_INITFANOTIFY_INITFANOTIFY_INITFANOTIFY_INIT
NAME_TO_HANDLE_ATNAME_TO_HANDLE_ATNAME_TO_HANDLE_ATNAME_TO_HANDLE_AT
OPEN_BY_HANDLE_ATOPEN_BY_HANDLE_ATOPEN_BY_HANDLE_ATOPEN_BY_HANDLE_AT
CLOCK_ADJTIMECLOCK_ADJTIMECLOCK_ADJTIMECLOCK_ADJTIME
SETNSSETNSSETNSSETNS
PROCESS_VM_READVPROCESS_VM_READVPROCESS_VM_READVPROCESS_VM_READV
PROCESS_VM_WRITEVPROCESS_VM_WRITEVPROCESS_VM_WRITEVPROCESS_VM_WRITEV
KCMPKCMPKCMPKCMP
FINIT_MODULEFINIT_MODULEFINIT_MODULEFINIT_MODULE
KEXEC_FILE_LOADKEXEC_FILE_LOADKEXEC_FILE_LOADKEXEC_FILE_LOAD
BPFBPFBPFBPF
USERFAULTFDUSERFAULTFDUSERFAULTFD
MEMBARRIERMEMBARRIERMEMBARRIER
PKEY_MPROTECTPKEY_MPROTECTPKEY_MPROTECT
PKEY_ALLOCPKEY_ALLOCPKEY_ALLOC
PKEY_FREEPKEY_FREEPKEY_FREE
IO_PGETEVENTSIO_PGETEVENTS
RSEQ

Tag summary

Content type

Image

Digest

Size

13 MB

Last updated

about 6 years ago

docker pull nodyd/bsidesmuc2020