31 Saniyede Kendi Hatalarını Düzeltip Devam Eden AI: JadePuffer ve İlk Gerçek AI Agent Ransomware

1 Temmuz 2026. Sysdig Threat Research Team bir analiz yayımladı. Başlık sade: “JadePuffer: The First AI Agent Ransomware.” Haber büyük sitelerden çabuk geçti — çünkü “fidye yazılımı” artık sıradan haber. Ama detaylar okunduğunda farklı bir şeyin farkına varılıyor.

Bu klasik bir fidye yazılımı değil. Altyapıyı bir insan hazırladı — C2, hedef seçimi, bazı kimlik bilgileri. Teknik execution ise tamamen ajana bırakıldı: recon, credential harvest, lateral movement, şifreleme, ransom notu. Klavyeye dokunan bir insan yoktu.

Giriş Noktası: Dün Açılan Kapı

JadePuffer ilk erişimi CVE-2025-3248 üzerinden kurdu. Langflow’da kimlik doğrulaması olmadan uzaktan kod çalıştırılmasına izin veren bu açık, 2025’in başında keşfedildi ve Langflow 1.3.0 ile kapatıldı. Yani bahsettiğimiz şey sıfırıncı gün değil — yaması yayımlanmış, ama güncellenmemiş bir sistemin ödemesi.

Bu ayrım önemli. Saldırı incelendiğinde görülen şey şu: JadePuffer aktif olarak interneti taradı, güncellenmemiş Langflow sunucularını tespit etti ve CVE-2025-3248’i ilk adım olarak seçti. Hedef seçimi operatöre aitti — ama bu noktadan sonra zinciri yürüten ajandı.

Giriş noktası açıldıktan sonra saldırı zinciri şu şekilde ilerledi:

CVE-2025-3248 (Langflow unauth RCE)
        ↓ ilk erişim
Recon + Credential Harvest
        ↓ ortam değişkenleri, config dosyaları, bellekteki token'lar
CVE-2021-29441 (Nacos auth bypass) → Lateral Movement
        ↓ iç ağ pivoting
Persistence

MySQL AES_ENCRYPT() → 1.342 config kaydı şifrelendi

README_RANSOM tablosu oluşturuldu

Her adım mevcut servisler ve mevcut kimlik bilgileri kullanılarak gerçekleşti. Dışarıdan bir binary taşınmadı, harici bir C2 bağlantısı gerekmedi. Buna Living off the Land (LotL) deniyor — ve bu teknik tam da statik imza tabanlı EDR’ların kör noktasını kullanıyor.

31 Saniye Neyi İfade Ediyor?

Sysdig analizinde geçen bu rakam, ajan’ın hata yaptığında ne kadar sürede kendi kendini düzelttiğini gösteriyor: 31 saniye.

Bir insan penetrasyon testi uzmanı bir hatayla karşılaştığında durur, analiz eder, araç değiştirir ya da döküman okur. Bu döngü dakikalar ya da saatler alabilir. JadePuffer’ın fail→fix döngüsü 31 saniyeydi.

Bu rakamın üzerinde durmak gerekiyor çünkü bir SOC analistinin “anormal aktivite” alarmını görmesinden yanıt ekibinin araç açmasına kadar geçen süre ortalama 5-15 dakika. Ajan bu sürenin içinde birden fazla adımı tamamlamış, hata yapmış ve düzeltmiş olacak.

Statik imza tabanlı savunma bu senaryoda geçerliliğini yitiriyor. Tespit edilecek yabancı bir binary yok, bilinen bir C2 adresi yok, alışıldık bir davranış kalıbı yok. Her şey mevcut sistem araçlarıyla yapılıyor.

Bir Kavram Karışıklığı Üzerine

Langflow bu yazılarda sık geçiyor. Bir noktayı netleştirmek gerekiyor:

CVE-2025-3248 (Langflow < 1.3.0) — JadePuffer’ın kullandığı açık. Kimlik doğrulaması gerektirmeden uzaktan kod çalıştırılmasına izin veriyor. 2025 başında keşfedildi, 1.3.0 ile kapatıldı.

CVE-2026-55255 — Bundan farklı ve ayrı bir açık. 25 Haziran 2026’da tespit edilen, Langflow’un /api/v1/responses endpoint’indeki IDOR zafiyeti (CWE-639). Farklı saldırgan, farklı zaman dilimi, farklı teknik. 7 Temmuz’da CISA KEV listesine girdi. CVSS skoru 9.9.

İkinci zafiyetle ilgili ilginç bir tablo var: aynı ortamda aynı süreçte CVSS 9.3’lük bir RCE (CVE-2026-33017) de mevcut. Bir saldırgan process kontrolünü, dosya sistemini ve veritabanını zaten tam olarak ele geçiriyorsa aynı ortamda başka bir kiracının akışlarını ele geçirmesine imkân tanıyan IDOR’a ihtiyacı kalmıyor. CVSS 9.9 skoru pratikte CVSS 9.3 RCE’nin gölgesinde kaldı.

Bu, güvenlik ekiplerinin risk önceliklendirmesinde skor takibi dışında ne kadar bağlamsal değerlendirme yapması gerektiğini gösteriyor.

Savunma Tarafı: NixOS Impermanence’ın Bu Senaryodaki Yeri

Ben bu yazıyı okuyunca kendi sistemime baktım. JadePuffer’ın persistence zincirini incelerken şunu fark ettim: Zincirin her halkası, dosya sisteminin reboot’tan sonra da ayakta kalacağını varsayıyor.

Sistemimde bu varsayım geçerli değil.

/ tmpfs üzerinde çalışıyor. Her reboot, kök dosya sistemini tamamen siliyor. Sadece /persist altındaki dizinler ve belirli bind-mount’lar varlığını sürdürüyor:

fileSystems."/" = {
  device = "tmpfs";
  fsType = "tmpfs";
  options = [ "size=4G" "mode=755" ];
};

Bu mimari JadePuffer’ın persistence adımını doğrudan kırar. Saldırganın bir cron job bıraktığını, bir webshell yerleştirdiğini ya da bir systemd servisini değiştirdiğini düşünelim. Reboot sonrası bunların hiçbiri kalmaz. Saldırı hafızası silinir.

Ancak burada dürüst olmak gerekiyor. Bu mimari her şeyi çözmüyor.

JadePuffer’ın asıl hasarı persistence değil, şifreleme adımında gerçekleşti. 1.342 MySQL kaydı AES_ENCRYPT() ile şifrelendi ve README_RANSOM tablosu bırakıldı. Veritabanı /persist altındaysa — ya da tamamen ayrı bir sunucudaysa — impermanence bu hasara karşı bir şey yapmıyor.

Impermanence, lateral movement sırasında bırakılan izleri ve persistence mekanizmalarını temizliyor. Şifrelenmiş veriye karşı savunma ayrı bir katman gerektiriyor: yedek politikası, veritabanı erişim kısıtlamaları, şifreleme anahtarlarının izolasyonu.

Bu ikisini karıştırmamak gerekiyor.

SOPS-nix ve Credential Theft

Saldırı zincirinin ikinci adımında credential harvest var. Ajan ortam değişkenlerini, config dosyalarını ve bellekteki token’ları tarıyor.

Bu konuyu daha önce yazmıştım çünkü sistemimi kurarken benzer bir soruyla karşılaştım: sırlar nerede duruyor?

NixOS’ta sops-nix ile yönetilen secret’lar disk üzerinde şifreli tutuluyor. Çözme işlemi runtime’da gerçekleşiyor ve çözülmüş değer doğrudan /run/secrets altında belleğe yazılıyor. Config dosyasında plaintext API anahtarı yok, ortam değişkeninde açık token yok.

JadePuffer’ın bir ortam değişkeni taraması yapması bu yapıda boş dönüyor. Ama bu da mutlak bir güvence değil — process belleğine erişim sağlanırsa çözülmüş secret’lar orada bulunabilir. Tehdit modeli farklılaşıyor, saldırı yüzeyi küçülüyor ama sıfırlanmıyor.

Nereye Gidiyoruz?

JadePuffer’dan önce de otonom saldırı araçları vardı. Metasploit modülleri, otomatik exploit zincirleri, script tabanlı tarayıcılar. Fark şu: bunlar önceden programlanmış senaryo dizileriydi. Bir senaryo başarısız olunca duruyor ya da sonraki önceden tanımlı adıma geçiyordu.

JadePuffer bir senaryo çalıştırmadı. Hedefle etkileşime girerek karar verdi. Hata yaptığında durumu yeniden değerlendirdi ve farklı bir yol seçti.

Bu fark küçük görünüyor ama savunma mimarisi açısından kırılma noktası orada. Statik senaryo tabanlı saldırılara karşı statik imza tabanlı savunma çalışıyordu. Dinamik karar veren bir saldırıya karşı savunmanın da dinamik olması gerekiyor.

Ben bu durumu kendi sistemim üzerinde düşündüğümde şuna varıyorum: Saldırıyı tamamen engellemek mümkün olmayabilir. Ama saldırının bıraktığı hasarın ve izin sistemde ne kadar süre kaldığını kontrol edebilirim. Impermanence, sops-nix ve deterministik sistem konfigürasyonu bu hedefe hizmet ediyor.

Mükemmel bir savunma değil. Ama statik savunmadan mantıksal olarak bir adım ileri.


Kaynaklar

Birincil Kaynak

İlgili Sysdig Analizi

CVE Kayıtları

Seçilmiş Medya ve Analizler


İlgili: NixOS Impermanence: Ephemeral Root ve /persist
İlgili: sops-nix ile Şifreli Secret Yönetimi

EOF.