แบบจำลองภัยคุกคาม Kubernetes
จุดที่คลัสเตอร์อาจถูกโจมตี
แบบจำลองภัยคุกคาม Kubernetes เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใด Kubernetes จึงเป็นเป้าหมาย
Kubernetes จัดการคอนเทนเนอร์บนโหนดจำนวนมาก โดยรวมศูนย์ข้อมูลลับ เครือข่าย และการประมวลผลไว้ด้วยกัน ดังนั้นการเจาะระบบคลัสเตอร์อาจหมายถึงการเจาะระบบภาระงานทุกอย่างที่คลัสเตอร์นั้นทำงานอยู่
- เซิร์ฟเวอร์ API เพียงเครื่องเดียวควบคุมทั้งคลัสเตอร์
- โหนดต่าง ๆ เรียกใช้ภาระงานของผู้เช่าหลายรายอยู่เคียงข้างกัน
- การตั้งค่าผิดพลาดเกิดขึ้นบ่อยกว่าช่องโหว่ CVE หลักมาก
ทบทวนสถาปัตยกรรมคลัสเตอร์
เพื่อสร้างแบบจำลองภัยคุกคาม คุณต้องรู้จักองค์ประกอบต่าง ๆ
- ระนาบควบคุม: เซิร์ฟเวอร์ API, etcd, ตัวจัดตารางเวลา, ตัวจัดการตัวควบคุม
- โหนด: kubelet, รันไทม์คอนเทนเนอร์, kube-proxy, พ็อด
- etcd จัดเก็บสถานะและข้อมูลลับทั้งหมดของคลัสเตอร์
เซิร์ฟเวอร์ API เป็นจุดเข้าสู่ระบบเพียงจุดเดียว ส่วน etcd คือทรัพย์สินข้อมูลที่มีค่าที่สุด
แผนผังพื้นผิวการโจมตี
การโจมตีมุ่งเป้าไปยังชั้นต่าง ๆ ที่แยกจากกัน
- ภายนอก: เซิร์ฟเวอร์ API, แดชบอร์ด และทางเข้าที่เปิดเผยต่อภายนอก
- ภาระงาน: แอปพลิเคชันที่ถูกเจาะระบบภายในพ็อด
- ตัวตน: โทเค็นบัญชีบริการและ RBAC
- โหนด: API ของ kubelet และการหลบหนีจากคอนเทนเนอร์ไปยังโฮสต์
- ห่วงโซ่อุปทาน: อิมเมจและส่วนพึ่งพาที่เป็นอันตราย
ระนาบควบคุมที่เปิดเผย
เซิร์ฟเวอร์ API หรือ kubelet ที่เข้าถึงได้จากอินเทอร์เน็ตและมีการยืนยันตัวตนที่อ่อนแอ เป็นเส้นทางโดยตรงสู่การยึดครองคลัสเตอร์
- เปิดใช้งานการเข้าถึงแบบไม่ระบุตัวตนบนเซิร์ฟเวอร์ API
- API สำหรับอ่าน/เขียนของ kubelet (พอร์ต 10250) ถูกเปิดเผย
- แดชบอร์ด Kubernetes เปิดให้เข้าถึงได้พร้อมการผูกสิทธิ์ผู้ดูแลระบบ
# Probe an exposed kubelet for running pods
curl -sk https://NODE_IP:10250/pods
# Test anonymous API access
kubectl --insecure-skip-tls-verify --server https://API:6443 get podsจุดยึดภายในพ็อด
จุดเริ่มต้นที่พบบ่อยที่สุดคือ RCE ในแอปพลิเคชันที่ทำงานอยู่ภายในพ็อด จากภายในพ็อด ผู้โจมตีจะค้นหาสิ่งต่อไปนี้
- โทเค็นบัญชีบริการ ที่เมานต์ไว้ที่
/var/run/secrets/... - บริการภายในที่เข้าถึงได้ (ไม่มีนโยบายเครือข่าย)
- เซิร์ฟเวอร์ API ซึ่งมักแก้ชื่อได้เป็น
kubernetes.default
# From inside a pod: read the mounted SA token
cat /var/run/secrets/kubernetes.io/serviceaccount/token
# Use it against the API
curl -sk -H "Authorization: Bearer $(cat .../token)" https://kubernetes.default/api/v1/namespaces/default/podsการหลบหนีจากคอนเทนเนอร์
การหลุดออกจากคอนเทนเนอร์ไปยังโหนดทำให้เข้าถึงภาระงานทั้งหมดบนโฮสต์นั้นได้
- คอนเทนเนอร์ที่มีสิทธิ์สูงสามารถเข้าถึงอุปกรณ์ของโฮสต์และหลบหนีออกมาได้
- การเมานต์ hostPID/hostNetwork/hostPath ขยายขอบเขตความเสียหาย
- ซ็อกเก็ต Docker ที่เมานต์ไว้ทำให้สามารถเริ่มคอนเทนเนอร์ที่มีสิทธิ์สูงได้
- ความสามารถที่เป็นอันตราย (
SYS_ADMIN) ช่วยให้หลบหนีได้
# A privileged pod can mount the host filesystem and chroot to it
mount /dev/sda1 /mnt && chroot /mnt shetcd: คลังเก็บข้อมูลลับ
etcd เก็บสถานะทั้งหมดของคลัสเตอร์ รวมถึงข้อมูลลับ ซึ่งโดยค่าเริ่มต้นจะเข้ารหัสเพียงด้วย base64 เท่านั้น การเข้าถึง etcd โดยตรง (ซึ่งมักไม่มีการยืนยันตัวตนในคลัสเตอร์ที่ตั้งค่าผิดพลาด) ทำให้ข้อมูลลับทุกอย่างรั่วไหล
# Read all secrets from an exposed etcd
etcdctl --endpoints=https://NODE:2379 get / --prefix --keys-onlyการเคลื่อนย้ายภายในคลัสเตอร์
เมื่อเข้ามาได้แล้ว ผู้โจมตีจะเคลื่อนต่อโดยใช้ตัวตนและเครือข่ายของคลัสเตอร์
- บัญชีบริการที่อนุญาตกว้างเกินไปทำให้คุณสร้างพ็อดที่มีสิทธิ์สูงได้
- เครือข่ายพ็อดแบบราบ (ไม่มี NetworkPolicy) อนุญาตให้เข้าถึงบริการใดก็ได้
- การจัดตารางพ็อดลงบนโหนดเป้าหมายทำให้สามารถเจาะระบบโหนดได้
ข้อมูลเมตาคลาวด์จากพ็อด
ในคลัสเตอร์ที่มีการจัดการ (EKS/GKE/AKS) พ็อดอาจเข้าถึงบริการข้อมูลเมตาคลาวด์ของโหนดและขโมยข้อมูลรับรอง IAM/บทบาทของโหนด ซึ่งเชื่อมโยงการเจาะระบบคลัสเตอร์ไปสู่บัญชีคลาวด์
แนวทางป้องกันได้แก่ IMDSv2 การบล็อกข้อมูลเมตาที่ชั้นเครือข่าย และการใช้ตัวตนของภาระงานแทนบทบาทของโหนด
การทำแผนผังด้วยเครื่องมือ
เครื่องมือช่วยทำให้การประเมินภัยคุกคามของคลัสเตอร์เป็นไปโดยอัตโนมัติ
- kube-hunter ตรวจสอบหาองค์ประกอบที่เปิดเผย
- kube-bench ตรวจสอบการปฏิบัติตามเกณฑ์มาตรฐาน CIS
- Peirates / kubeletctl จำลองเส้นทางการโจมตีภายในคลัสเตอร์
# Assess attack surface
kube-hunter --remote API_IP
# CIS benchmark check on a node
kube-bench run --targets nodeลำดับความสำคัญด้านการป้องกัน
แบบจำลองภัยคุกคามชี้ให้เห็นลำดับความสำคัญด้านการป้องกันที่ชัดเจน ได้แก่ ล็อกเซิร์ฟเวอร์ API จำกัด RBAC แยกพ็อดออกจากกัน เสริมความแข็งแกร่งให้โหนด และรักษาความปลอดภัยของห่วงโซ่อุปทาน บทเรียนถัดไปจะลงรายละเอียดแต่ละหัวข้อ
เมื่อทำการทดสอบ ให้โจมตีเฉพาะคลัสเตอร์ที่คุณได้รับอนุญาตเท่านั้น และหลีกเลี่ยงการทำให้ภาระงานในระบบจริงไม่เสถียร
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ตรวจสอบพื้นฐานการสร้างแบบจำลองภัยคุกคาม Kubernetes ของคุณ
สรุปทบทวน
คุณได้ทำแผนผังจุดที่คลัสเตอร์ Kubernetes ถูกโจมตี
- เซิร์ฟเวอร์ API และ etcd เป็นเป้าหมายศูนย์กลางที่มีมูลค่าสูงสุด
- จุดยึดภายในพ็อดอาศัยโทเค็น SA ที่เมานต์ไว้และเครือข่ายแบบราบ
- พ็อดที่มีสิทธิ์สูงหรือใช้ hostPath ช่วยให้หลบหนีจากคอนเทนเนอร์ไปยังโหนดได้
- คลัสเตอร์ที่มีการจัดการมีความเสี่ยงต่อการเคลื่อนเข้าสู่คลาวด์ผ่านข้อมูลเมตา
ถัดไป: RBAC และบัญชีบริการ
เรียนรู้ Cyber Security Academy ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 76
- บทเรียน
- 303
คำถามที่พบบ่อย
บทเรียน “แบบจำลองภัยคุกคาม Kubernetes” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “แบบจำลองภัยคุกคาม Kubernetes” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แบบจำลองภัยคุกคาม Kubernetes”
จุดที่คลัสเตอร์อาจถูกโจมตี คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “แบบจำลองภัยคุกคาม Kubernetes” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แบบจำลองภัยคุกคาม Kubernetes
- RBAC และบัญชีบริการ
- ความปลอดภัยของพ็อดและนโยบายเครือข่าย
- การรักษาความปลอดภัยห่วงโซ่อุปทานและข้อมูลลับ