หลีกเลี่ยงปัญหา Copy Fail ใน Kubernetes ด้วย eBPF
(github.com/iwanhae)ระหว่างที่ดูแล K8s อยู่ มีคำขอให้รับมือกับประเด็นนี้แบบเร่งด่วนเข้ามา เลยทำตัวหนึ่งขึ้นมาแบบพอใช้งานได้
มีการเปิดเผยช่องโหว่ชื่อ Copy Fail ที่ทำให้สามารถยกระดับไปยึดสิทธิ์ root ของโฮสต์ได้จากภายใน K8s Pod เพียงแค่เปิดซ็อกเก็ตที่ใช้ AF_ALG
https://th.news.hada.io/topic?id=29031
แม้ว่าจะมีเคอร์เนลแพตช์ออกมาแล้ว แต่ในสภาพแวดล้อมการใช้งานจริงส่วนใหญ่ก็นำไปใช้ได้ยากอย่างรวดเร็ว ขณะเดียวกันเคอร์เนลรุ่นล่าสุดหลายตัวเปิดฟีเจอร์นี้มาเป็น kernel built-in ทำให้ปิดการทำงานของเคอร์เนลโมดูลก็ไม่ได้ด้วย
เพื่อแก้ปัญหานี้ให้ได้ง่ายขึ้น จึงทำโปรแกรมง่าย ๆ ที่เมื่อ eBPF ตรวจพบ function call ที่เกี่ยวข้อง ก็จะ
- ทำให้ function call นั้นล้มเหลว (ถ้าเคอร์เนลรองรับ)
- หรือถ้าไม่รองรับ ก็ kill โปรเซสนั้นทิ้ง
เป็นโปรแกรมลักษณะนี้
เตรียมให้ใช้งานได้ด้วยการ deploy K8s DaemonSet เพียงตัวเดียวเท่านั้น ใครที่จำเป็นต้องใช้ก็นำไปใช้ได้เลย~
1 ความคิดเห็น
ขอบคุณครับ!
FYI) Docker seccomp profile ก็เป็นคุณ @achimnol ที่ช่วยทำให้เช่นกันครับ https://github.com/moby/profiles/issues/19