นักวิจัยจาก Wiz พบช่องโหว่ใน PostgreSQL-as-a-Service จากผู้ให้บริการ Cloud หลายแห่ง เช่น Google Cloud Platform (GCP), Azure รวมไปถึงผู้ให้บริการรายอื่นๆ โดยช่องโหว่สามารถทำให้เกิดการยกระดับสิทธิ role ใน database เป็น cloudsqladmin ได้ จึงทำให้ผู้โจมตีสามารถสั่งรันโค้ดบนระบบปฏิบัติการได้, และยังสามารถยกระดับสิทธิเป็น root โดยใช้เทคนิด symlink attack และสุดท้ายเนื่องจาก container ใช้ network interfaces เดียวกันกับเครื่อง Host นักวิจัยจึงสามารถใช้วิธีการ TCP injection ปลอมแปลง response metadata service ทำให้สามารถควบคุม SSH key ของเครื่อง Host และทำการ remote เข้าเครื่อง Host ได้
PostgreSQL privilege escalation
เริ่มแรก user จะใช้สิทธิ cloudsqlsuperuser ซึ่งจะยังไม่สามารถ execute OS command ได้
เมื่อรวมสองเทคนิคเข้าด้วยกัน ถ้ามีการสร้าง table owner เป็น cloudsqladmin และ ใช้ index function run SQL query ด้วยสิทธิ owner จะทำให้นักวิจัยสามารถรัน OS command อะไรก็ได้โดยใช้ สิทธิของ cloudsqladmin
Local privilege escalation to root
นักวิจัยพบ directory /pgsql ที่ user postgres เป็น owner
ซึ่งภายใน directory จะมีไฟล์ iptables-save ที่ใช้สำหรับ iptables rules ซึ่งมี root เป็น owner
โดยทุกครั้งที่มีการแก้ไข network rule บน Cloud SQL console ไฟล์ iptables-save จะถูกอัปเดตด้วยทุกครั้ง
iptables-save
จากข้อมูลด้านบนทำให้นักวิจัยพบวิธีการโจมตีโดยมีขั้นตอนดังนี้
- สร้าง shell shared library ไว้ที่ path ‘1.1.1.1/32’
- สร้าง symlink iptables-save ไปที่ /etc/ld.so.preload
- update network rule ‘1.1.1.1/32’ บน Cloud SQL console
- Cloud SQL จะ overwrite /etc/ld.so.preload ไปที่ path ‘1.1.1.1/32’
- program จะพยามไป load shared library ที่ path ‘1.1.1.1/32’ ซึ่งเป็น shell shared library
- นักวิจัยเรียกใช้ suid program แล้ว shell shared library จะสร้าง shell ขึ้นมาด้วยสิทธิ root
Container escape
container จะมีการใช้ network interface ร่วมกันระหว่าง container และ host โดยในเครื่องจะมี GCP guest agent ติดตั้งอยู่ ซึ่งจะทำการ update SSH key จาก Metadata service เมื่อมีการแก้ไข agent จากการสร้าง user ในเครื่อง host ให้กับ SSH key อันใหม่ นักวิจัยจึงใช้เทคนิด TCP injection ปลอมแปลง Metadata service response ด้วย SSH key ของตัวเอง เมื่อ agent ได้ SSH key มาแล้วจะสร้าง user พร้อมกันกับ SSH key ของนักวิจัย จึงทำให้นักวิจัยสามารถ SSH remote เข้าไปยังเครื่อง host ได้
ที่มา: wiz.io
You must be logged in to post a comment.