cgroup Namespace
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Genel Bakış
cgroup namespace, cgroup’ların yerine geçmez ve kendisi kaynak limitlerini uygulamaz. Bunun yerine, bir sürecin cgroup hiyerarşisini nasıl gördüğünü değiştirir. Başka bir deyişle, görünür cgroup yol bilgilerini sanallaştırır; böylece iş yükü tam host hiyerarşisini değil container-ölçekli bir görünümü görür.
Bu esasen görünürlük ve bilgi azaltma özelliğidir. Ortamın kendine yeten görünmesini sağlar ve host’un cgroup düzeni hakkında daha az bilgi açığa çıkarır. Bu önemsiz görünebilir, ancak gereksiz host yapı görünürlüğü keşif yapılmasını kolaylaştırabilir ve ortama bağımlı exploit zincirlerini basitleştirebilir.
İşleyiş
Özel bir cgroup namespace’i olmadan bir süreç, makinenin hiyerarşisinin gerektiğinden daha fazlasını açığa çıkaran host-relatif cgroup yollarını görebilir. Özel bir cgroup namespace ile /proc/self/cgroup ve ilgili gözlemler container’ın kendi bakış açısına daha lokal hale gelir. Bu, iş yükünün daha temiz, host’u daha az ifşa eden bir ortam görmesini isteyen modern runtime yığınlarında özellikle faydalıdır.
Laboratuvar
Bir cgroup namespace’ini şu şekilde inceleyebilirsiniz:
sudo unshare --cgroup --fork bash
cat /proc/self/cgroup
ls -l /proc/self/ns/cgroup
Ve çalışma zamanı davranışını şununla karşılaştırın:
docker run --rm debian:stable-slim cat /proc/self/cgroup
docker run --rm --cgroupns=host debian:stable-slim cat /proc/self/cgroup
Bu değişiklik çoğunlukla sürecin ne görebileceğiyle ilgilidir; cgroup enforcement’ın varlığıyla ilgili değildir.
Güvenlik Etkisi
cgroup namespace en iyi bir görünürlük-sıkılaştırma katmanı olarak anlaşılır. Tek başına, container’ın writable cgroup mounts’a, geniş capabilities’e veya tehlikeli bir cgroup v1 ortamına sahip olması durumunda bir breakout’u durdurmaz. Ancak host cgroup namespace paylaşılıyorsa, süreç sistemin nasıl organize edildiği hakkında daha fazla bilgi edinir ve host-relative cgroup paths’i diğer gözlemlerle hizalamayı daha kolay bulabilir.
Dolayısıyla bu namespace genellikle container breakout writeups’ın yıldızı olmasa da, host information leakage’ını minimize etme gibi daha geniş bir hedefe katkıda bulunur.
Kötüye Kullanım
Anlık abuse değeri büyük ölçüde reconnaissance ile sınırlıdır. Eğer host cgroup namespace paylaşılıyorsa, görünür yolları karşılaştırın ve host-revealing hiyerarşi detaylarına bakın:
readlink /proc/self/ns/cgroup
cat /proc/self/cgroup
cat /proc/1/cgroup 2>/dev/null
Eğer yazılabilir cgroup yolları da açığa çıkmışsa, bu görünürlüğü tehlikeli eski arayüzleri aramakla birleştirin:
find /sys/fs/cgroup -maxdepth 3 -name release_agent 2>/dev/null -exec ls -l {} \;
find /sys/fs/cgroup -maxdepth 3 -writable 2>/dev/null | head -n 50
Namespace kendisi nadiren anında escape sağlar, ancak cgroup-based abuse primitives’i test etmeden önce ortamı haritalamayı sıklıkla kolaylaştırır.
Tam Örnek: Shared cgroup Namespace + Writable cgroup v1
Cgroup namespace tek başına genellikle escape için yeterli değildir. Pratik yükseltme, host-revealing cgroup paths ile writable cgroup v1 interfaces’in birleşmesiyle gerçekleşir:
cat /proc/self/cgroup
find /sys/fs/cgroup -maxdepth 3 -name release_agent 2>/dev/null
find /sys/fs/cgroup -maxdepth 3 -name notify_on_release 2>/dev/null | head
Eğer bu dosyalara erişilebiliyor ve yazılabiliyorsa, hemen cgroups.md içindeki tam release_agent exploitation akışına geçin. Etkisi, container içinden host üzerinde kod çalıştırmadır.
Yazılabilir cgroup arabirimleri yoksa, etki genellikle sadece keşif ile sınırlıdır.
Kontroller
Bu komutların amacı, işlemin özel bir cgroup namespace görünümüne sahip olup olmadığını veya host hiyerarşisi hakkında gerçekten ihtiyaç duyduğundan daha fazlasını öğrenip öğrenmediğini kontrol etmektir.
readlink /proc/self/ns/cgroup # Namespace identifier for cgroup view
cat /proc/self/cgroup # Visible cgroup paths from inside the workload
mount | grep cgroup # Mounted cgroup filesystems and their type
Burada ilginç olan:
- Eğer namespace identifier ilgilendiğiniz bir host process ile eşleşiyorsa, cgroup namespace paylaşılmış olabilir.
/proc/self/cgroupiçindeki host’u ifşa eden yollar, doğrudan istismar edilemeseler bile faydalı keşif sağlar.- Eğer cgroup mounts aynı zamanda yazılabiliyorsa, görünürlük meselesi çok daha önemli hale gelir.
cgroup namespace, birincil bir kaçış-önleme mekanizması yerine görünürlüğü sertleştiren bir katman olarak ele alınmalıdır. Host cgroup yapısını gereksiz yere açığa çıkarmak saldırgan için keşif değerini artırır.
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.


