Escaping Containers to Execute Commands on Play with Docker Servers


นักวิจัยด้านความปลอดภัยสามารถหลีกเลี่ยง Linux containers และเรียกใช้งานคำสั่งบน Play with Docker Servers ได้

ผู้โจมตีใช้ประโยชน์จากข้อบกพร่องที่สามารถเข้าถึง Play with Docker (PWD) ด้วยสิทธ์ระดับสูงและยังสามารถเข้าถึง Containers ที่ใช้งานอยู่ทั้งหมดได้ด้วย ซึ่งช่องโหว่นี้ใช้ประโยชน์จาก Containers ทั้งหมดใช้โค้ดใน kernel เดียวกัน

Play with Docker เป็นแพลตฟอร์มสำหรับผู้ที่ต้องการรันคำสั่ง Docker ได้อย่างรวดเร็ว
นักวิจัย CyberArk เริ่มต้นแฮ็ค ด้วยการเรียนรู้ข้อมูลเกี่ยวกับ host system โดยการรันคำสั่ง 'uname' ซึ่งจะแสดงผล เวอร์ชันเคอร์เนล, สถาปัตยกรรม, ชื่อ, root UUID ( universally unique identifier), และวันที่สร้าง

พวกเขาพยายามติดตั้ง host's root drive ภายใน container แต่การป้องกันแบบ in-place ทำให้การดำเนินการไม่ได้ การใช้ "debugfs" ระบบไฟล์ debugger ทำให้สามารถเข้าถึง root directory หลักของโฮสต์และเข้าถึงแฟ้มเพื่อค้นหาโมดูลเคอร์เนลโดยใช้ 'ฟังก์ชันเคอร์เนล printk'

สิ่งที่ผู้เชี่ยวชาญของ CyberArk ทำได้คือการใช้โมดูล Linux kernel ที่รวบรวมในห้องปฏิบัติการและใส่เข้าไปในเคอร์เนล PWD Nimrod Stoler
โมดูลที่ใช้คือ ceph.ko โหลดโดยเคอร์เนลสำหรับแพลตฟอร์มหน่วยเก็บข้อมูลซอฟต์แวร์ Ceph สิ่งนี้ถูกใช้เพื่อเตรียมโมดูลที่หลอกเคอร์เนลเป้าหมายให้โหลด

"เป้าหมายสุดท้ายคือการรัน Reverse Shell สิ่งนี้ทำได้โดยใช้ฟังก์ชันเคอร์เนลพิเศษ call_usermodehelper (), ซึ่งใช้ในการเตรียมพร้อมและเริ่มแอปพลิเคชันโหมดผู้ใช้จากเคอร์เนล ไม่กี่ขั้นตอนต่อมาก็สามารถตั้งค่า reverse shell และรันโค้ดบนโฮสต์ได้

ในวันที่ 6 พฤศจิกายน 2018 นักวิจัยรายงานข้อบกพร่องต่อ Docker ซึ่งยอมรับข้อผิดพลาดในวันถัดไปโดยแจ้งว่าการแก้ไขจะตามมาในไม่ช้า เมื่อวันที่ 7 มกราคม 2019 CyberArk ยืนยันว่าไม่มีช่องโหว่นี้อีกต่อไป

Play with Docker ซึ่งเป็นแพลตฟอร์มสำหรับสอนให้ผู้ใช้คุ้นเคยกับการใช้ Docker ถูกนักวิจัยพบช่องโหว่และรันคำสั่งบนบนตัว Servers ของ Play with Docker ได้

นักวิจัยด้านความปลอดภัยจาก CyberArk สามารถหนีออกจาก Linux containers บน Play with Docker ได้เนื่องจากข้อผิดพลาดเกี่ยวกับสิทธิการใช้งาน ถ้ามีผู้โจมตีใช้ประโยชน์จากข้อบกพร่องจะสามารถเข้าถึง Servers ของ Play with Docker ด้วยสิทธิ์ระดับสูงและยังสามารถเข้าถึง Containers อื่นๆ ที่ใช้งานอยู่ทั้งหมดได้ด้วย ซึ่งช่องโหว่นี้ใช้ประโยชน์จาก Containers ทั้งหมดใช้โค้ดใน kernel เดียวกัน

นักวิจัยรายงานข้อบกพร่องต่อ Docker ในวันที่ 6 พฤศจิกายน 2018 ซึ่ง Docker ยอมรับข้อผิดพลาดและทำการแก้ไขช่องโหว่ดังกล่าว ซึ่ง CyberArk ยืนยันว่าไม่พบช่องโหว่นี้แล้วเมื่อวันที่ 7 มกราคม 2019

โดยผู้ที่สนใจสามารถอ่านรายละเอียดวิธีที่ CyberArk ใช้เพื่อค้นหาช่องโหว่ดังกล่าวได้จาก https://www.cyberark.com/threat-research-blog/how-i-hacked-play-with-docker-and-remotely-ran-code-on-the-host/

ที่มา: bleepingcomputer