docker group membership → host root via container escape
User is in the docker group. `docker run -v /:/host --privileged alpine chroot /host` gives them root on the host without sudo.
§ Context
Assumed environment: foothold as a developer / CI user. The user account is a member of the docker (or lxd) group — a common 'convenience' configuration.
§ Steps
- 01Foothold as docker-group userInitial AccessT1078— Valid Accounts
- 02id / groups → confirm dockerDiscoveryT1087— Account Discovery
- 03chroot /host → root on the hostPrivilege EscalationK-HOSTPATH-MOUNT— hostPath Volume Mount
- 04docker run --privileged -v /:/host alpinePrivilege EscalationL-DOCKER-GROUP— docker Group Membership → root
- 05SSH key for rootPersistenceL-SSH-AUTHKEYS— SSH authorized_keys Backdoor
§ References
- T1078Valid Accounts
- T1087Account Discovery
§ Frequently asked
- What is the "docker group membership → host root via container escape" attack path?
- User is in the docker group. `docker run -v /:/host --privileged alpine chroot /host` gives them root on the host without sudo. It chains 5 steps drawn from real-world offensive-security techniques.
- What starting position does this attack require?
- The first step is Foothold as docker-group user (T1078) — a initial access primitive. Assumed environment: foothold as a developer / CI user.
- What is the final impact of this kill-chain?
- The final step lands on SSH key for root (L-SSH-AUTHKEYS), which falls under Persistence. From here, an operator typically pivots into post-exploitation or maintains persistence.
- How can defenders detect or prevent this attack?
- Detection and prevention vary per step. Refer to each linked MITRE ATT&CK entry under "References" — every technique on that page lists defensive controls, detection telemetry, and known threat-actor usage.
§ Related dossiers
- Shared techniques2
z/OS TN3270 → RACF userID brute → mainframe shell
Internet-/intranet-exposed TN3270 mainframe terminal. Userids follow predictable HR scheme. Brute-force passwords; many environments allow short / dictionary passwords for legacy reasons.
- Shared techniques2
Slack token in CI log → DM history → vendor mailbox compromise
A CI run echoed a Slack xoxb-/xoxp- token. Use it to read DMs, harvest password-reset links and vendor invitations, pivot into the corporate mailbox.
- Shared techniques2
Open MQTT broker → smart-estate takeover
Shodan-indexed MQTT broker on TCP/1883 with no auth. Subscribe to '#' to harvest every device topic; publish to relays/locks/lights/thermostats.
- Shared techniques2
TCC bypass → access Photos / Camera without consent
Inject into a process that already has Full Disk Access (e.g. backup utility, Terminal). Inherited TCC entitlement lets the attacker code read TCC-gated data — Photos, iMessage DB, Documents.
- Shared techniques2
Service account → SYSTEM via named-pipe impersonation
Service-context shell has SeImpersonatePrivilege. Use Potato-family tools (Juicy / Rogue / Print / God) to coerce SYSTEM to authenticate to an attacker-controlled named pipe, then impersonate the token.
- Shared techniques2
polkit pwnkit (CVE-2021-4034) → instant root
Pre-2022 pkexec has a heap-overflow exploitable with no special permissions. Compile / drop the exploit, run as low-priv user, gain root.