AWS - Abusing Lambda Extensions
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Lambda uzantıları, çeşitli izleme, gözlemlenebilirlik, güvenlik ve yönetişim araçları ile entegre olarak işlevleri geliştirir. Bu uzantılar, .zip arşivleri kullanarak Lambda katmanları aracılığıyla eklenir veya konteyner görüntüsü dağıtımlarında bulunur ve iki modda çalışır: iç ve dış.
İç uzantılar, çalışma zamanı süreci ile birleşir, dil spesifik ortam değişkenleri ve sarmalayıcı betikler kullanarak başlangıcını manipüle eder. Bu özelleştirme, Java Correto 8 ve 11, Node.js 10 ve 12, ve .NET Core 3.1 dahil olmak üzere çeşitli çalışma zamanlarına uygulanır.
Dış uzantılar, ayrı süreçler olarak çalışır ve Lambda işlevinin yaşam döngüsü ile operasyon uyumunu korur. Node.js 10 ve 12, Python 3.7 ve 3.8, Ruby 2.5 ve 2.7, Java Corretto 8 ve 11, .NET Core 3.1 ve özel çalışma zamanları gibi çeşitli çalışma zamanlarıyla uyumludur.
Lambda uzantılarının nasıl çalıştığı hakkında daha fazla bilgi için belgeleri kontrol edin.
Bu, bu yazıda önerilen tekniğin bir özetidir: https://www.clearvector.com/blog/lambda-spy/
Lambda çalışma zamanı ortamındaki varsayılan Linux çekirdeğinin “process_vm_readv” ve “process_vm_writev” sistem çağrıları ile derlendiği bulunmuştur. Ve tüm süreçler aynı kullanıcı kimliği ile çalışır, dış uzantı için oluşturulan yeni süreç bile. Bu, dış bir uzantının tasarım gereği Rapid’in yığın belleğine tam okuma ve yazma erişimine sahip olduğu anlamına gelir.
Ayrıca, Lambda uzantıları çağrı olaylarına abone olma yeteneğine sahip olsa da, AWS bu uzantılara ham verileri açıklamaz. Bu, uzantıların HTTP isteği aracılığıyla iletilen hassas bilgilere erişemeyeceğini garanti eder.
Init (Rapid) süreci, http://127.0.0.1:9001 adresinde tüm API isteklerini izlerken, Lambda uzantıları başlatılır ve herhangi bir çalışma zamanı kodunun yürütülmesinden önce, ancak Rapid'ten sonra çalışır.
AWS_LAMBDA_RUNTIME_API
değişkeni, çocuk çalışma zamanı süreçlerine ve ek uzantılara Rapid API'nin IP adresini ve port numarasını gösterir.
AWS_LAMBDA_RUNTIME_API
ortam değişkenini erişim sağladığımız bir port
ile değiştirerek, Lambda çalışma zamanı içindeki tüm eylemleri kesmek mümkündür (man-in-the-middle). Bu, uzantının Rapid Init ile aynı ayrıcalıklara sahip olması ve sistemin çekirdeğinin işlem belleğini değiştirmeye izin vermesi nedeniyle mümkündür; bu da port numarasının değiştirilmesini sağlar.
Uzantılar, herhangi bir çalışma zamanı kodundan önce çalıştığı için, ortam değişkenini değiştirmek, çalışma zamanı süreci (örneğin, Python, Java, Node, Ruby) başlarken etkileyecektir. Ayrıca, bizimkinden sonra yüklenen uzantılar, bu değişkene bağımlı olanlar, bizim uzantımız üzerinden yönlendirilecektir. Bu yapı, kötü amaçlı yazılımların güvenlik önlemlerini veya günlük uzantılarını tamamen atlamasına olanak tanıyabilir.
lambda-spy aracı, bu bellek yazma ve lambda isteklerinden hassas bilgileri çalma ve hatta değiştirme işlemlerini gerçekleştirmek için oluşturulmuştur.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)