HackCert
Intermediate 10 min read May 25, 2026

Container Breakout: ডকার কনটেইনারের সীমাবদ্ধতা ভেঙে মূল হোস্ট সিস্টেমে অনুপ্রবেশ!

Docker container breakout-এর কৌশল, CVE-গুলো, এবং কীভাবে attacker container-এর গণ্ডি ভেঙে host system-এ পৌঁছায় তার বিশ্লেষণ।

Rokibul Islam
Red Team Operator
share
Container Breakout: ডকার কনটেইনারের সীমাবদ্ধতা ভেঙে মূল হোস্ট সিস্টেমে অনুপ্রবেশ!
Overview

আধুনিক software development-এর হৃদয়ে আজ Docker container। মুহূর্তের মধ্যে application deploy, scale ও move করা যায় বলে DevOps সংস্কৃতির অবিচ্ছেদ্য অংশ হয়ে উঠেছে এটি। কিন্তু container-কে অনেকে ভুলভাবে "mini-VM" ভাবেন—যেখানে isolation একেবারে নিরাপদ। বাস্তবে container ও host একই Linux kernel share করে, এবং সেই kernel-level boundary ভাঙার বহু পথ আছে। Container Breakout—অর্থাৎ container-এর সীমা পেরিয়ে host system বা অন্য container-এ অনুপ্রবেশ—আধুনিক cloud-native attack-এর সবচেয়ে impactful technique-এর একটি। আজকের আলোচনায় আমরা গভীরে গিয়ে দেখবো কীভাবে এই breakout ঘটে এবং কী করে এটি প্রতিরোধ করা যায়।

Container Isolation এর মৌলিক ধারণা

Docker container Linux kernel-এর কয়েকটি feature ব্যবহার করে isolation তৈরি করে।

Namespaces: Process, network, mount, IPC, UTS, user, cgroup—প্রতিটির আলাদা namespace, যা container-এর জন্য নিজস্ব view তৈরি করে।

Cgroups (Control Groups): CPU, memory, disk I/O-এর resource limit enforce করে।

Capabilities: Linux capability model থেকে container-কে subset দেওয়া হয়। ডিফল্টভাবে SYS_ADMIN, SYS_PTRACE এসব granted নয়।

Seccomp: System call filtering। Docker-এর default seccomp profile প্রায় ৪৪টি dangerous syscall ব্লক করে।

AppArmor/SELinux: Mandatory access control।

Read-only Filesystem: Container-এর root filesystem read-only হতে পারে।

কিন্তু এই সব defense একসাথে enable না থাকলে বা misconfigure থাকলে breakout সম্ভব।

প্রধান Breakout Vector

বিভিন্ন kategorial breakout আছে।

Privileged Container: docker run --privileged দিয়ে চালালে container প্রায় host-এর মতো privileges পায়। সব capability granted, AppArmor/SELinux unconfined, সব devices accessible। এই container থেকে breakout প্রায় তুচ্ছ কাজ।

Capability Abuse: Privileged না হলেও কিছু capability dangerous। SYS_ADMIN, SYS_PTRACE, SYS_MODULE, DAC_READ_SEARCH, NET_ADMIN—এদের যেকোনোটি থাকলে breakout সম্ভব।

Mounted Docker Socket: Container-এ /var/run/docker.sock mount করা হলে container Docker daemon control করতে পারে—এটি কার্যত root-on-host।

Host Filesystem Mount: -v /:/host দিয়ে host root mount করলে সরাসরি host file পড়া/লেখা যায়।

Host Network/PID Namespace: --net=host বা --pid=host ব্যবহার করলে isolation কমে।

Kernel Vulnerability: Container ও host একই kernel share করে। Kernel exploit (যেমন Dirty COW, Dirty Pipe) দিয়ে directly breakout সম্ভব।

Runtime Vulnerability: Docker, runc, containerd-তে CVE পেলে breakout।

Image Vulnerability: Malicious image-এ trojan, backdoor।

Misconfigured Filesystem: SUID binary, writable /etc, ইত্যাদি।

বিখ্যাত CVE ও Breakout Technique

কিছু famous container escape vulnerability আলোচনা করি।

CVE-2019-5736 (runc Escape): Attacker container-এর ভিতরে থেকে runc binary overwrite করতে পারে, যা পরবর্তীতে container exec-এ host-এ execute হয়। এই vulnerability শুধু read access থাকা container থেকেও exploit-যোগ্য ছিল।

CVE-2022-0492 (cgroups v1 release_agent): Linux kernel-এর cgroup release_agent feature-এর misuse। SYS_ADMIN capability ও unprivileged user namespace থাকলে container থেকে arbitrary command execute হতে পারে host-এ।

CVE-2022-0185 (Linux Kernel File System): Heap overflow vulnerability যা CAP_SYS_ADMIN ব্যবহার করে privilege escalation ও container escape allow করত।

CVE-2024-21626 (Leaky Vessels): runc 1.1.11-এর আগে file descriptor leak vulnerability, যা container build/run-এর সময় host filesystem-এ access দিত।

CVE-2019-14271 (docker cp): docker cp execution-এ libnss vulnerability।

Dirty Pipe (CVE-2022-0847): Linux kernel splice() vulnerability—container থেকে read-only file overwrite করা যেত, যা SUID binary modify করে privilege escalation এনে দিত।

CVE-2024-23651, 23652, 23653 (BuildKit): Docker BuildKit-এর vulnerability যা malicious Dockerfile দিয়ে container escape allow করত।

Privileged Container থেকে Breakout

--privileged flag দিয়ে চালানো container থেকে breakout-এর কয়েকটি common path:

1. Mounting Host Devices:

fdisk -l  # Host disk দেখা যায়
mkdir /mnt/host
mount /dev/sda1 /mnt/host  # Host root mount
chroot /mnt/host

2. Cgroup release_agent Abuse:

# release_agent-এ malicious script সেট করে
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp
mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
echo '#!/bin/sh' > /cmd
echo "ps -ef > $host_path/output" >> /cmd
chmod a+x /cmd
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"

3. Kernel Module Loading: SYS_MODULE capability থাকলে কোনো malicious kernel module load করে host-এ কর্মান্বয় চালানো।

Docker Socket Mount Abuse

যদি /var/run/docker.sock mount করা থাকে:

# Container-এর ভিতর থেকে
docker run -v /:/host --rm -it alpine chroot /host bash

এই command একটি নতুন container তৈরি করে যা host filesystem mount করে এবং chroot-এ ঢুকে যায়। কার্যত root-on-host।

এমন কি Docker socket ছাড়াও Kubernetes-এ kubelet API exposed থাকলে বা ServiceAccount token compromise হলে similar privilege পাওয়া যায়।

Capability-based Breakout

ডিফল্টভাবে Docker একটি limited capability set দেয়, কিন্তু কিছু dangerous capability granted থাকলে breakout সম্ভব।

CAP_SYS_ADMIN: "The new root", almost everything possible। Mount, namespace creation, BPF—সব।

CAP_SYS_PTRACE: Host process ptrace করে inject code।

CAP_DAC_READ_SEARCH: Open_by_handle_at syscall দিয়ে arbitrary file read—Shocker exploit।

CAP_NET_ADMIN + CAP_NET_RAW: Network isolation bypass।

CAP_SYS_MODULE: Kernel module load।

CAP_SYS_BOOT: Reboot, kexec।

CAP_SYS_ADMIN-এর সাথে user namespace-এ একটি famous breakout pattern হলো cgroup v1 release_agent abuse, যা CVE-2022-0492 হিসেবে চিহ্নিত।

Kubernetes Pod Escape

Kubernetes-এ pod escape-এর কিছু common path:

hostPath Volume: Pod manifest-এ hostPath: / mount করলে host filesystem access।

hostPID/hostNetwork: Pod যদি host PID বা network namespace share করে।

privileged: true: Pod security context-এ এটি set থাকলে।

Service Account Token: ডিফল্টভাবে pod-এ mounted token Kubernetes API access দেয়। Excessive RBAC থাকলে cluster compromise।

Node Compromise: Kubelet API-এ unauthenticated access (10250 port) থাকলে।

Container Runtime Vulnerability: runc, containerd-এর CVE।

Sidecar Container Abuse: Trusted sidecar (Istio, Linkerd) compromise হলে।

Practical Detection

Container breakout detect করা challenging কিন্তু সম্ভব।

Runtime Security Tool:

  • Falco: eBPF/kernel module-ভিত্তিক runtime security। Suspicious syscall pattern detect করে।
  • Tetragon: eBPF-based observability।
  • Tracee: Aqua-র runtime security tool।

Behavioral Detection: Container-এর normal behavior baseline থেকে deviation। যেমন: একটি web container suddenly mount syscall করছে—anomaly।

Audit Logs: Linux auditd দিয়ে privileged syscall log করুন। Cgroup, namespace operation track করুন।

Network Monitoring: Container-এর unexpected outbound connection, especially port 22, 4444, 1337, suspicious।

File Integrity Monitoring: Host critical file (e.g., /etc/passwd, /etc/shadow, /etc/sudoers)-এ change হলে alert।

Image Scanning: Trivy, Clair, Grype দিয়ে image vulnerability scan। CI/CD-তে integrate করুন।

Pod Security Standards (Kubernetes): Restricted, Baseline, Privileged—এই তিনটি profile-এ pod restrict করুন।

প্রতিরোধ ও Hardening

Container breakout থেকে সুরক্ষার জন্য defense-in-depth প্রয়োজন।

Don't Run as Root: Container-এর ভেতরে non-root user use করুন। Dockerfile-এ USER 1000 set করুন।

Drop Unnecessary Capabilities: --cap-drop=ALL --cap-add=NET_BIND_SERVICE এর মতো minimal capability দিন।

No Privileged Container: --privileged flag কখনো use করবেন না production-এ। যদি একান্ত প্রয়োজন হয়, specific capability add করুন।

Read-only Filesystem: --read-only flag দিয়ে container root read-only রাখুন। Writable directory tmpfs-এ mount করুন।

Seccomp Profile: Docker-এর default seccomp profile use করুন। Custom profile lock down করতে পারেন।

AppArmor/SELinux: Mandatory access control enable রাখুন। Docker-এর default-docker AppArmor profile use করুন।

User Namespace: User namespace remapping enable করুন—container root host-এ unprivileged user।

No Docker Socket Mount: Container-এ /var/run/docker.sock mount করবেন না। প্রয়োজনে Docker-in-Docker (DinD) বা rootless Docker use করুন।

Resource Limits: Memory, CPU limit set করুন যাতে DoS impossible।

Network Policies: Kubernetes Network Policy দিয়ে pod-to-pod communication restrict করুন।

Image Best Practices:

  • Minimal base image (alpine, distroless)
  • Image signing (Cosign, Notary)
  • Vulnerability scanning in CI/CD
  • Private registry use
  • No secrets in image

Kernel Hardening:

  • Latest kernel use করুন (patched CVE)
  • Lockdown mode
  • BPF restrictions

Runtime Security:

  • gVisor: User-space kernel দিয়ে strong isolation
  • Kata Containers: Lightweight VM per container
  • Firecracker: Amazon-এর microVM

RBAC ও Pod Security:

  • Pod Security Admission enable করুন
  • Restricted profile use করুন
  • ServiceAccount token automount disable করুন যদি দরকার না হয়

Continuous Monitoring:

  • Falco rules customize করুন
  • SIEM integration
  • Alert on suspicious container behavior

Supply Chain Security:

  • SBOM (Software Bill of Materials) maintain
  • Image provenance verification
  • Sigstore use

বাস্তব ব্রিচের উদাহরণ

TeamTNT Cryptomining: TeamTNT গ্রুপ exposed Docker API-কে target করে container তৈরি করে cryptominer deploy করত। ২০২০-২০২১ সালে হাজার হাজার server compromise।

Kinsing Malware: Misconfigured Docker, Kubernetes, Redis-এ target করে। Cryptocurrency mining-এর জন্য।

Hildegard: TeamTNT-র Kubernetes-targeted malware।

Siloscape: Windows container থেকে Kubernetes cluster compromise-এর প্রথম malware।

বেশিরভাগ ক্ষেত্রেই attack chain শুরু হয় misconfigured Docker API, exposed Kubernetes dashboard, বা weak Service Account token দিয়ে।

Key Takeaways

Container Breakout প্রমাণ করে যে container isolation একটি spectrum, একটি binary state নয়। সঠিক configuration ও hardening ছাড়া container আসলে একটি pseudo-isolation—যা attacker সহজেই ভাঙতে পারে। DevOps speed ও convenience-এর জন্য privileged container, mounted Docker socket, এবং root user—এসব দ্রুত adoption-এর জন্য আকর্ষণীয় হলেও production-এ এগুলোই সবচেয়ে বড় ঝুঁকি। গভীর understanding-এর সাথে minimum privilege, runtime security, image scanning, এবং continuous monitoring—এই combination-ই modern container-native security-এর ভিত্তি। মনে রাখবেন, container আপনার application-এর shipping package, sandbox নয়। Real security boundary থাকে kernel-এ, namespace-এ, capability-তে। আপনার যদি strong isolation প্রয়োজন হয়, gVisor বা Kata Container-এর মতো sandboxed runtime consider করুন। আজই আপনার container fleet audit করে দেখুন কোথায় কোথায় unnecessary privilege আছে।

আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ Container Breakout MCQ Quiz-টি দিন!

Related articles

back to all articles