Docker release_agent cgroups escape
Daha fazla ayrıntı için orijinal blog yazısına bakın. Bu sadece bir özet:
Orijinal PoC:
The proof of concept (PoC) cgroups'ı istismar etmek için bir release_agent
dosyası oluşturarak ve bunun çağrılmasını tetikleyerek konteyner ana bilgisayarında rastgele komutlar çalıştırma yöntemini göstermektedir. İşte ilgili adımların bir dökümü:
Ortamı Hazırlayın:
cgroup için bir montaj noktası olarak hizmet vermesi için
/tmp/cgrp
dizini oluşturulur.RDMA cgroup denetleyicisi bu dizine monte edilir. RDMA denetleyicisi yoksa, alternatif olarak
memory
cgroup denetleyicisinin kullanılması önerilir.
Çocuk Cgroup'u Kurun:
Montelenmiş cgroup dizini içinde "x" adında bir çocuk cgroup oluşturulur.
"x" cgroup'u için bildirimler, notify_on_release dosyasına 1 yazarak etkinleştirilir.
Release Agent'ı Yapılandırın:
Konteynerin ana makinedeki yolu /etc/mtab dosyasından alınır.
Ardından, cgroup'un release_agent dosyası, elde edilen ana makine yolunda bulunan /cmd adlı bir betiği çalıştıracak şekilde yapılandırılır.
/cmd Scriptini Oluşturun ve Yapılandırın:
/cmd scripti konteyner içinde oluşturulur ve ps aux komutunu çalıştıracak şekilde yapılandırılır, çıktıyı konteynerde /output adlı bir dosyaya yönlendirir. /output'un ana makinedeki tam yolu belirtilir.
Saldırıyı Tetikleme:
"x" çocuk cgroup içinde bir işlem başlatılır ve hemen sonlandırılır.
Bu,
release_agent
'i (the /cmd script) tetikler, bu da host üzerinde ps aux komutunu çalıştırır ve çıktıyı konteyner içindeki /output'a yazar.
Last updated