Serverless.com Security
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)
Bir Organizasyon, Serverless Framework ekosistemindeki en yüksek düzeydeki varlıktır. Birden fazla projeyi, takımı ve uygulamayı kapsayan bir kolektif grup olarak bir şirketi, departmanı veya herhangi bir büyük varlığı temsil eder.
Takım, organizasyon içinde erişimi olan kullanıcılardır. Takımlar, üyeleri rollere göre organize etmeye yardımcı olur. İşbirlikçileri
, mevcut uygulamaları görüntüleyebilir ve dağıtabilirken, Yöneticiler
yeni uygulamalar oluşturabilir ve organizasyon ayarlarını yönetebilir.
Bir Uygulama, bir Organizasyon içindeki ilgili hizmetlerin mantıksal bir gruplamasıdır. Birlikte çalışarak uyumlu bir işlevsellik sağlamak için bir araya gelen birden fazla sunucusuz hizmetten oluşan tam bir uygulamayı temsil eder.
Bir Hizmet, bir Sunucusuz uygulamanın temel bileşenidir. Tüm sunucusuz projenizi temsil eder ve gereken tüm işlevleri, yapılandırmaları ve kaynakları kapsar. Genellikle bir serverless.yml
dosyasında tanımlanır; bir hizmet, hizmet adı, sağlayıcı yapılandırmaları, işlevler, olaylar, kaynaklar, eklentiler ve özel değişkenler gibi meta verileri içerir.
Bu, resmi öğreticinin bir özetidir belgelerden:
Bir AWS hesabı oluşturun (Serverless.com AWS altyapısında başlar)
serverless.com'da bir hesap oluşturun
Bir uygulama oluşturun:
Bu, serverless.com adresinde kontrol edebileceğiniz tutorialapp
adında bir uygulama ve helloworld
kodunu içeren bazı JS kodlarıyla birlikte handler.js
dosyasını içeren Tutorial
adında bir klasör oluşturmuş olmalıdır ve bu fonksiyonu beyan eden serverless.yml
dosyası:
Bir AWS sağlayıcısı oluşturun, https://app.serverless.com/<org name>/settings/providers?providerId=new&provider=aws
adresindeki dashboard'a giderek.
serverless.com
'a AWS erişimi vermek için, bu yapılandırma dosyasını kullanarak bir cloudformation yığını çalıştırmanızı isteyecektir (bu yazının yazıldığı sırada): https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml
Bu şablon, Serverless.com
AWS hesabının role erişmesine izin veren bir Güven İlişkisi ile birlikte arn:aws:iam::aws:policy/AdministratorAccess
üzerinde SFRole-<ID>
adında bir rol oluşturur.
Eğitim, yeni bir API uç noktası oluşturacak olan createCustomer.js
dosyasını oluşturmanızı istiyor ve oluşturulan lambdaları kullanacak rolü tanımlamak için yeni bir DynamoDB tablosu oluşturacak şekilde serverless.yml
dosyasını değiştirmenizi istiyor.
serverless deploy
komutunu çalıştırarak dağıtım yapın
Dağıtım, bir CloudFormation Yığını aracılığıyla gerçekleştirilecektir
lambdaların API gateway aracılığıyla ve doğrudan URL'ler aracılığıyla değil, açık olduğunu unutmayın
Test edin
Önceki adım, API uç noktalarınızın lambda fonksiyonlarının dağıtıldığı URL'leri yazdıracaktır
Aşırı izinli IAM rolleri, bulut kaynaklarına yetkisiz erişim sağlayabilir ve veri ihlallerine veya kaynak manipülasyonuna yol açabilir.
En Az Ayrıcalık İlkesi: Her fonksiyona yalnızca gerekli izinleri atayın.
Ayrı Roller Kullanın: Roller, fonksiyon gereksinimlerine göre farklılaştırılmalıdır.
Hassas bilgilerin (örneğin, API anahtarları, veritabanı kimlik bilgileri) doğrudan serverless.yml
veya kodda saklanması, depoların tehlikeye girmesi veya AWS erişiminin tehlikeye girmesi durumunda ifşaya yol açabilir, çünkü bunlar lambdaların yapılandırmalarından okunabilir.
Çevresel Değişkenler: Gizli bilgileri çalışma zamanında enjekte edin, sabit kodlamadan kaçının.
Gizli Bilgiler Yöneticisi Entegrasyonu: AWS Secrets Manager, Azure Key Vault veya HashiCorp Vault gibi hizmetleri kullanın.
Şifreli Değişkenler: Hassas veriler için Serverless Framework’ün şifreleme özelliklerini kullanın.
Erişim Kontrolleri: Rollere göre gizli bilgilere erişimi kısıtlayın.
Gizli Bilgileri Günlüğe Kaydetmekten Kaçının: Gizli bilgilerin günlüklerde veya hata mesajlarında ifşa edilmediğinden emin olun.
Eski veya güvensiz bağımlılıklar, zayıflıklara yol açabilirken, yanlış giriş işleme kod enjeksiyonu saldırılarına neden olabilir.
Bağımlılık Yönetimi: Bağımlılıkları düzenli olarak güncelleyin ve zayıflıkları tarayın.
Giriş Doğrulaması: Tüm girişlerin katı bir şekilde doğrulanmasını ve temizlenmesini sağlayın.
Kod İncelemeleri: Güvenlik açıklarını belirlemek için kapsamlı incelemeler yapın.
Statik Analiz: Kod tabanındaki zayıflıkları tespit etmek için araçlar kullanın.
Uygun günlükleme ve izleme olmadan, kötü niyetli faaliyetler tespit edilemeyebilir ve olay yanıtını geciktirebilir.
Merkezi Günlükleme: AWS CloudWatch veya Datadog gibi hizmetleri kullanarak günlükleri toplayın.
Ayrıntılı Günlüklemeyi Etkinleştirin: Hassas verileri ifşa etmeden temel bilgileri yakalayın.
Uyarılar Kurun: Şüpheli faaliyetler veya anormallikler için uyarılar yapılandırın.
Düzenli İzleme: Potansiyel güvenlik olayları için günlükleri ve metrikleri sürekli izleyin.
Açık veya yanlış güvence altına alınmış API'ler, yetkisiz erişim, Hizmet Reddi (DoS) saldırıları veya çapraz site saldırıları için istismar edilebilir.
Kimlik Doğrulama ve Yetkilendirme: OAuth, API anahtarları veya JWT gibi sağlam mekanizmalar uygulayın.
Hız Sınırlama ve Kısıtlama: İstek oranlarını sınırlayarak kötüye kullanımı önleyin.
Güvenli CORS Yapılandırması: İzin verilen kökenleri, yöntemleri ve başlıkları kısıtlayın.
Web Uygulama Güvenlik Duvarları (WAF) Kullanın: Kötü niyetli kalıplar için HTTP isteklerini filtreleyin ve izleyin.
Paylaşılan kaynaklar ve yetersiz izolasyon, ayrıcalık yükselmelerine veya fonksiyonlar arasında istenmeyen etkileşimlere yol açabilir.
Fonksiyonları İzole Edin: Bağımsız çalışmayı sağlamak için belirgin kaynaklar ve IAM rolleri atayın.
Kaynak Bölümlendirmesi: Farklı fonksiyonlar için ayrı veritabanları veya depolama alanları kullanın.
VPC'leri Kullanın: Geliştirilmiş ağ izolasyonu için fonksiyonları Sanal Özel Bulutlar içinde dağıtın.
Fonksiyon İzinlerini Sınırlayın: Fonksiyonların, açıkça gerekli olmadıkça birbirlerinin kaynaklarına erişemediğinden emin olun.
Dinlenme veya iletim sırasında şifrelenmemiş veriler ifşa edilebilir ve veri ihlallerine veya manipülasyona yol açabilir.
Dinlenme Halinde Verileri Şifreleyin: Bulut hizmeti şifreleme özelliklerini kullanın.
İletim Halinde Verileri Şifreleyin: Tüm veri iletimleri için HTTPS/TLS kullanın.
API İletişimini Güvence Altına Alın: Şifreleme protokollerini zorlayın ve sertifikaları doğrulayın.
Şifreleme Anahtarlarını Güvenli Bir Şekilde Yönetin: Yönetilen anahtar hizmetlerini kullanın ve anahtarları düzenli olarak döndürün.
Ayrıntılı hata mesajları, altyapı veya kod tabanı hakkında hassas bilgilerin ifşasına neden olabilirken, ele alınmamış istisnalar uygulama çökmesine yol açabilir.
Genel Hata Mesajları: Hata yanıtlarında iç detayları ifşa etmekten kaçının.
Merkezi Hata Yönetimi: Tüm fonksiyonlar arasında hataları tutarlı bir şekilde yönetin ve temizleyin.
Hataları İzleyin ve Günlüğe Kaydedin: Hataları içsel olarak izleyin ve analiz edin, detayları son kullanıcılara ifşa etmeyin.
Açık dağıtım yapılandırmaları veya CI/CD boru hatlarına yetkisiz erişim, kötü niyetli kod dağıtımlarına veya yanlış yapılandırmalara yol açabilir.
CI/CD Boru Hatlarını Güvence Altına Alın: Sıkı erişim kontrolleri, çok faktörlü kimlik doğrulama (MFA) ve düzenli denetimler uygulayın.
Yapılandırmayı Güvenli Bir Şekilde Saklayın: Dağıtım dosyalarını sabit kodlanmış gizli bilgilerden ve hassas verilerden arındırın.
Altyapı Kod Olarak (IaC) Güvenlik Araçları Kullanın: Güvenlik politikalarını uygulamak için Checkov veya Terraform Sentinel gibi araçlar kullanın.
Değişmez Dağıtımlar: Değişmez altyapı uygulamaları benimseyerek dağıtım sonrası yetkisiz değişiklikleri önleyin.
Onaylanmamış veya kötü niyetli üçüncü taraf eklentilerin kullanılması, sunucusuz uygulamalarınıza zayıflıklar ekleyebilir.
Eklentileri Kapsamlı Bir Şekilde Değerlendirin: Entegrasyondan önce eklentilerin güvenliğini değerlendirin, güvenilir kaynaklardan gelenleri tercih edin.
Eklenti Kullanımını Sınırlayın: Saldırı yüzeyini en aza indirmek için yalnızca gerekli eklentileri kullanın.
Eklenti Güncellemelerini İzleyin: Güvenlik yamalarından yararlanmak için eklentileri güncel tutun.
Eklenti Ortamlarını İzole Edin: Potansiyel tehlikeleri sınırlamak için eklentileri izole ortamlarda çalıştırın.
Herkese açık erişime sahip fonksiyonlar veya kısıtlanmamış API'ler, yetkisiz işlemler için istismar edilebilir.
Fonksiyon Erişimini Kısıtlayın: Güvenilir kaynaklara erişimi sınırlamak için VPC'ler, güvenlik grupları ve güvenlik duvarı kuralları kullanın.
Sağlam Kimlik Doğrulama Uygulayın: Tüm açık uç noktaların uygun kimlik doğrulama ve yetkilendirme gerektirdiğinden emin olun.
API Gateway'leri Güvenli Kullanın: API Gateway'leri, giriş doğrulaması ve hız sınırlaması gibi güvenlik politikalarını uygulamak için yapılandırın.
Kullanılmayan Uç Noktaları Devre Dışı Bırakın: Düzenli olarak gözden geçirin ve artık kullanılmayan uç noktaları devre dışı bırakın.
Ekip üyelerine ve dış işbirlikçilere aşırı izinler vermek, yetkisiz erişim, veri ihlalleri ve kaynakların kötüye kullanılmasına yol açabilir. Bu risk, birden fazla bireyin farklı erişim seviyelerine sahip olduğu ortamlarda artar ve saldırı yüzeyini ve iç tehdit potansiyelini artırır.
En Az Ayrıcalık İlkesi: Ekip üyelerinin ve işbirlikçilerinin yalnızca görevlerini yerine getirmek için gerekli izinlere sahip olduğundan emin olun.
Erişim Anahtarları ve Lisans Anahtarları, Serverless Framework CLI ile etkileşimleri kimlik doğrulamak ve yetkilendirmek için kullanılan kritik kimlik bilgileri.
Lisans Anahtarları: CLI aracılığıyla giriş yapmak için gereken Serverless Framework Sürüm 4'e erişimi kimlik doğrulamak için gereken benzersiz tanımlayıcılardır.
Erişim Anahtarları: Serverless Framework CLI'nin Serverless Framework Dashboard ile kimlik doğrulamasını sağlamak için kullanılan kimlik bilgileridir. serverless
cli ile giriş yapıldığında bir erişim anahtarı oluşturulacak ve dizüstü bilgisayarda saklanacaktır. Ayrıca SERVERLESS_ACCESS_KEY
adında bir çevresel değişken olarak ayarlayabilirsiniz.
Kod Depoları Aracılığıyla İfşa:
Erişim Anahtarlarını ve Lisans Anahtarlarını sürüm kontrol sistemlerine sabit kodlama veya yanlışlıkla taahhüt etmek, yetkisiz erişime yol açabilir.
Güvensiz Depolama:
Anahtarları düz metin olarak çevresel değişkenlerde veya yapılandırma dosyalarında uygun şifreleme olmadan saklamak, sızıntı olasılığını artırır.
Yanlış Dağıtım:
Anahtarları güvensiz kanallar (örneğin, e-posta, sohbet) aracılığıyla paylaşmak, kötü niyetli aktörler tarafından yakalanmasına neden olabilir.
Döngü Eksikliği:
Anahtarları düzenli olarak döndürmemek, anahtarlar tehlikeye girerse maruz kalma süresini uzatır.
Aşırı İzinler:
Geniş izinlere sahip anahtarlar, birden fazla kaynakta yetkisiz eylemler gerçekleştirmek için istismar edilebilir.
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)