Bulut Altyapılarında Çalışma Zamanı (Runtime) Güvenliği: AWS Fargate ve GuardDuty ile Otomatize Tehdit Algılama Mimarisi
AWS Fargate ve GuardDuty ile Otomatize Tehdit Algılama Mimarisi
AWS Fargate gibi sunucusuz konteyner ortamları, geleneksel host tabanlı güvenlik ajanlarının kullanılamaması nedeniyle çalışma zamanında (runtime) ciddi görünürlük kayıplarına yol açmaktadır. Bu yazıda, Fargate üzerindeki konteyner kaçışları ve ters bağlantı gibi tehditleri GuardDuty Runtime Monitoring ile nasıl tespit edebileceğimizi ve EventBridge ile Lambda kullanarak sıfır gecikmeli otomatize olay müdahale (Incident Response) mimarisini nasıl inşa edeceğimizi detaylandırıyoruz.
Giriş: Sunucusuz (Serverless) Konteyner Dünyasında Güvenlik Kör Noktaları
Şunu biliyor muydun? Kod tabanınız sıfır zafiyet barındırsa bile, çalışma zamanında (runtime) belleğe enjekte edilen zararlı bir yazılım, statik analiz araçlarının tamamını atlatarak sunucusuz altyapınızı dakikalar içinde bir kripto madencilik çiftliğine dönüştürebilir.
Klasik EC2 tabanlı sanal makine mimarilerinde bilgi güvenlik ekipleri, işletim sistemine tam erişime sahip oldukları için EDR, SIEM forwarder veya özel kernel modülleri (eBPF tabanlı ajanlar) kurarak sistem çağrılarını (syscalls), dosya sistemi aktivitelerini ve ağ trafiğini derinlemesine izleyebilirler. Ama AWS Fargate gibi altyapısı AWS tarafından soyutlanmış ve yönetilen sunucusuz (serverless) konteyner servislerinde, temel işletim sistemine ve kernel seviyesine erişim yetkisi müşteriye verilmez. Bu mimari, operasyonel yükü azaltsa da geleneksel güvenlik ajanlarının doğrudan çalıştırılamamasına neden olur.
Bu durum “Görünürlük (Visibility) Kaybı” problemini ortaya çıkarır. Geliştirme sürecinde CI/CD boru hattına entegre edilen imaj tarama (static image scanning) araçları, yalnızca paket bağımlılıklarındaki bilinen zafiyetleri (CVE) yakalayabilir. Oysa sıfırıncı gün zafiyetleri (Zero-day exploits), bellek içi (in-memory) saldırılar, çalışma zamanında indirilen zararlı yükler (payloads) ve yanal hareket (lateral movement) girişimleri sadece sistem canlıyken tespit edilebilir. Bu nedenle, salt imaj tarama süreçlerinden farklı olarak, çalışma zamanı (runtime) güvenliği ve canlı tehdit avcılığı sunucusuz mimarilerde kritik bir zorunluluktur.
Fargate Ortamındaki Kritik Tehdit Vektörleri
AWS Fargate, mikro-VM tabanlı bir izolasyon (Firecracker) sağlasa da, konteyner içerisinde çalışan uygulamanın istismar edilmesi durumunda ciddi riskler ortaya çıkar. Saldırganların Fargate konteynerlerini hedef alırken kullandığı senaryolar şu şekildedir:
Konteyner Kaçışları (Container Escape) ve Kernel İstismarları:
Uygulama katmanında bulunan bir Uzaktan Kod Çalıştırma (RCE) zafiyeti üzerinden konteynere sızan saldırganlar, konteyner çalışma zamanı (container runtime) veya kernel zafiyetlerini (örn: Dirty Pipe) kullanarak izole ortamdan çıkmaya çalışırlar. Fargate mimarisi bu kaçışları büyük oranda zorlaştırsa da, imtiyazlı (privileged) çalışma veya yanlış yapılandırılmış yetkiler durumunda tehlike devam eder.
Ters Bağlantılar (Reverse Shell):
Sızma işlemi başarıldıktan sonra saldırganların ilk hedefi komuta kontrol (C2) sunucuları ile sürekli bir bağlantı kurmaktır. Uygulama bağımlılıklarında yer alan açıklar kullanılarak, konteyner içinden dışarıya doğru başlatılan yetkisiz ters bağlantılar (reverse shell), saldırganlara interaktif kabuk erişimi sağlar.
Yetkisiz İkili Dosyaların (Binary) Çalıştırılması:
Konteyner ayağa kalktıktan sonra, çalışma zamanında internetten wget veya curl ile indirilen kripto madencilik (cryptomining) yazılımları, port tarayıcılar (nmap) veya yanal hareket araçları izole ortamda sessizce çalıştırılır. Statik imaj taraması, bu dosyalar çalışma zamanında sonradan indirildiği için tehdidi tespit edemez.
AWS Kimlik Bilgilerine (TMDS) Erişim ve Yetki Sızdırma:
Saldırganlar, Task Metadata Service (TMDS) uç noktasına yetkisiz istekler göndererek Fargate görevine (Task) atanmış olan geçici IAM (STS) kimlik bilgilerini sızdırmayı hedefler. Sızdırılan bu geçici anahtarlar (access key, secret key ve session token), AWS hesabındaki diğer servislere (S3, DynamoDB, RDS, EC2) erişmek, veri sızdırmak (data exfiltration) veya altyapıya yeni arka kapılar kurmak için kullanılır. Özellikle SSRF (Server-Side Request Forgery) zafiyetleri, bu kimlik bilgilerinin konteyner dışına çıkarılmasında kullanılan en yaygın sömürü vektörüdür.
AWS GuardDuty Runtime Monitoring Mekanizması
AWS GuardDuty, bulut altyapılarında tehdit algılama hizmeti sunarken, ECS ve Fargate görevleri için özelleştirilmiş “Runtime Monitoring” özelliğini devreye almıştır. Bu özellik, klasik host tabanlı ajan kurulumuna gerek kalmadan Fargate görevlerinin çalışma zamanı aktivitelerini izler.
GuardDuty Runtime Monitoring, Fargate görevlerine arka planda çalışan hafif ve oldukça entegre bir güvenlik ajanı katmanı enjekte eder. Bu katman, işletim sistemi seviyesindeki dosya değişikliklerini, proses yaratma olaylarını (process execution) ve ağ bağlantılarını yakalar. Elde edilen telemetri verisi, AWS altyapısındaki GuardDuty analiz motoruna güvenli bir şekilde aktarılır.
GuardDuty’nin anomali tabanlı makine öğrenimi modelleri sürekli olarak temel davranış (baseline) profilleri oluşturur. Bir uygulamanın normal çalışma saatlerindeki CPU tüketimi, ağ trafiği paternleri ve gerçekleştirdiği dosya operasyonları zamanla öğrenilir. Eğer bir Fargate görevi, daha önce hiç iletişim kurmadığı, Tehdit İstihbarat (Threat Intelligence) akışlarında itibar skoru düşük (malicious) olan bir IP adresine veya Tor çıkış düğümlerine DNS sorgusu yapar ve ardından sistem dizinlerinde yetkisiz bir proses (örneğin bir xmrig madencilik aracı veya bash üzerinden netcat) çalıştırırsa, yapay zeka destekli model bu olayları saniyeler içinde analiz eder. VPC Flow Logs üzerinden gerçekleşen olağandışı veri aktarımları da bu korelasyona dahil edilerek bulgunun güvenilirlik (confidence) skoru artırılır ve False Positive (yanlış pozitif) oranları minimize edilir.
Otomatize Olay Müdahale (Incident Response) Mimarisi
Bulut mimarilerinde tehdit tespit edildikten sonra insan müdahalesini beklemek, saldırganın yanal geçiş yapması için yeterli zamanı tanımak demektir. Tehdidin tespit anından izole edilmesine kadar geçen süreyi (Mean Time To Respond - MTTR) sıfıra indiren dağıtık ve otomatize bir olay müdahale mimarisi kurgulanmalıdır.
- Tespit Aşaması: GuardDuty, Fargate görevinde zararlı bir dosyanın çalıştırıldığını tespit eder ve spesifik bir bulgu üretir (örneğin:
Execution:Runtime/NewBinaryExecuted). - Yönlendirme Aşaması: Amazon EventBridge (eski adıyla CloudWatch Events), GuardDuty’den gelen bu JSON formatındaki olayı (event) anında yakalar. EventBridge üzerinde oluşturulan kural (rule), sadece ilgili GuardDuty bulgularını filtreler ve olay verisini bir AWS Lambda fonksiyonuna ileterek onu tetikler.
- Müdahale Aşaması: AWS Lambda fonksiyonu, gelen JSON verisi içinden etkilenen “Task ARN” (Amazon Resource Name) ve ECS Cluster bilgilerini ayrıştırır.
Müdahale aksiyonu olarak Lambda fonksiyonu, gelen veriyi işleyerek iki ana aksiyon tipinden birini seçebilir: İzolasyon veya Sonlandırma. İzolasyon senaryosunda, Lambda fonksiyonu ilgili Fargate görevine bağlı olan Elastic Network Interface (ENI) bileşenini tespit eder ve Güvenlik Grubunu (Security Group) sadece adli bilişim (forensics) ekibinin erişebileceği, tüm dış ağ iletişimine kapalı kısıtlı bir Güvenlik Grubu ile değiştirir. Sonlandırma senaryosunda ise (aşağıdaki kod örneğinde uygulandığı gibi), Lambda fonksiyonu ecs:StopTask API çağrısını kullanarak zafiyetli görevi ECS Cluster üzerinden anında sonlandırır (terminate). Bu işlem, zararlı prosesin ve bellekteki tüm verilerin AWS ortamından tamamen silinmesini sağlayarak tehdidi fiziksel olarak keser. Görevin arkasındaki Auto Scaling grubu veya ECS servisi ise, önceden tanımlanmış temiz ve doğrulanmış imajdan yeni bir görev başlatarak sistemin kesintisiz çalışmasını (High Availability) sürdürmesini garanti altına alır.
Uygulama ve Konfigürasyon Kodları (Terraform ve Lambda)
Bu mimariyi hayata geçirmek için gereken kod blokları aşağıda sunulmuştur. Güvenlik politikaları gereği tüm kodlar temiz bırakılmış, hiçbir açıklama veya yorum satırı kullanılmamıştır.
EventBridge Kuralı ve Hedef Tanımlaması (Terraform)
resource "aws_cloudwatch_event_rule" "guardduty_fargate_rule" {
name = "GuardDutyFargateRuntimeAlerts"
event_pattern = jsonencode({
source = ["aws.guardduty"]
detail-type = ["GuardDuty Finding"]
detail = {
type = [
"Execution:Runtime/NewBinaryExecuted",
"Execution:Runtime/ReverseShell",
"PrivilegeEscalation:Runtime/DockerExec"
]
}
})
}
resource "aws_cloudwatch_event_target" "lambda_target" {
rule = aws_cloudwatch_event_rule.guardduty_fargate_rule.name
target_id = "IncidentResponseLambda"
arn = aws_lambda_function.fargate_ir_lambda.arn
}
resource "aws_lambda_permission" "allow_eventbridge" {
statement_id = "AllowExecutionFromEventBridge"
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.fargate_ir_lambda.function_name
principal = "events.amazonaws.com"
source_arn = aws_cloudwatch_event_rule.guardduty_fargate_rule.arn
}
Zafiyetli Task’ı Durduran AWS Lambda Kod Bloğu (Python)
import boto3
import json
ecs_client = boto3.client('ecs')
def lambda_handler(event, context):
finding_detail = event.get('detail', {})
resource_info = finding_detail.get('resource', {})
container_details = resource_info.get('ecsClusterDetails', {})
task_arn = container_details.get('taskArn')
cluster_name = container_details.get('clusterName')
if task_arn and cluster_name:
ecs_client.stop_task(
cluster=cluster_name,
task=task_arn,
reason="Automated containment triggered by GuardDuty Runtime Monitoring"
)
return {
'statusCode': 200,
'body': json.dumps({
'message': 'Task isolation successful',
'task_arn': task_arn
})
}
return {
'statusCode': 400,
'body': json.dumps('Required parameters missing in GuardDuty finding')
}
Sonuç ve Sıkılaştırma Tavsiyeleri
Bulut mimarilerinde çalışma zamanı güvenliğini sağlamak için atılması gereken kritik adımlar şunlardır:
- Önleyici Güvenlik ve İmmutable Altyapı: Fargate Task Definition yapılandırmalarında
readonlyRootFilesystemözelliğinin aktif edilmesi, çalışma zamanında zararlı dosyaların ana dosya sistemine yazılmasını fiziksel olarak engelleyerek saldırı yüzeyini önemli ölçüde daraltır. Sadece belirli alanlar geçici yazma işlemlerine açılmalıdır. - Konteyner Yetki Sınırlandırmaları: Linux kernel yeteneklerinin (capabilities) kısıtlanması ve imtiyazlı (privileged) konteyner kullanımının engellenmesi, konteyner kaçışlarını (container escape) önler.
- En Düşük Yetki Prensibi (Least Privilege): Fargate görevlerine atanan
TaskRoleveExecutionRoleIAM rollerinin katı bir şekilde ayrıştırılması ve sadece asgari yetkilerle donatılması, yanal geçiş (lateral movement) riskini minimize eder. - Kesintisiz İzleme ve Loglama: Sadece imaj taramalarına güvenmek yerine, GuardDuty gibi servislerle çalışma zamanı (runtime) izlemesinin sürekli hale getirilmesi şarttır.
- Otomasyonun Gücü: Olay müdahale süreçlerinin (Incident Response) Python tabanlı Lambda fonksiyonları ve EventBridge kullanılarak uçtan uca otomatize edilmesi, tehditleri insan hızından bağımsız, saniyeler seviyesinde elimine eder.
Kaynakça
Sen de yaz, arşivde yerini al
AltaySec Arşiv'e katkı ver — uzmanlığını Türkçe siber güvenlik literatürüne kat.
Yazar Ol