AWS - Lambda Uzantılarını Kötüye Kullanma

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)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Lambda Uzantıları

Lambda uzantıları, çeşitli izleme, gözlemlenebilirlik, güvenlik ve yönetişim araçları ile entegrasyon sağlayarak işlevleri geliştirir. Bu uzantılar, .zip arşivleri kullanarak Lambda katmanları aracılığıyla veya konteyner görüntüsü dağıtımları içinde eklenerek iki modda çalışır: içsel ve dışsal.

  • İçsel uzantılar, çalışma zamanı süreciyle birleşerek, dil spesifik ortam değişkenleri ve sarmalayıcı betikler kullanarak başlatması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ışsal 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.

Daha fazla bilgi için lambda uzantılarının nasıl çalıştığını kontrol edin.

Kalıcılık, İstekleri Çalma ve İstekleri Değiştirme için Dışsal Uzantı

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ışsal uzantı için oluşturulan yeni süreç bile. Bu, dışsal 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 sahipken, 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, Lambda uzantıları başlatılırken ve herhangi bir çalışma zamanı kodu yürütülmeden önce, tüm API isteklerini http://127.0.0.1:9001 adresinde izler, ancak Rapid’ten sonra.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png

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.

Warning

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ğinin değiştirilmesine 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, bu değişkene bağımlı olan uzantılarımızdan sonra yüklenen uzantılar da uzantımız üzerinden yönlendirilecektir. Bu yapı, kötü amaçlı yazılımların güvenlik önlemlerini tamamen atlamasına veya doğrudan çalışma zamanı ortamında günlük uzantılarını atlatmasına olanak tanıyabilir.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

lambda-spy aracı, bu bellek yazma ve lambda isteklerinden hassas bilgileri çalma, diğer uzantıların isteklerini değiştirme işlemlerini gerçekleştirmek için oluşturulmuştur.

Referanslar

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)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin