ChainDrop: Web3 C2 ve npm’de Zincirleme Reaksiyon

Siber güvenlikte savunma ve saldırı arasındaki denge her zaman bir kedi-fare oyunudur. Haziran ayında Shai Hulud ve ardından Miasma / Phantom Gyp ile .pth enjeksiyonları ve ignore-scripts bypass’larını konuştuğumuzda, fırtınanın en kötüsünü atlattığımızı düşünüyorduk. Yanılmışız.

Haziran ayındaki o dalga sadece bir yetenek testiymiş.

Bugün (4 Ağustos 2026), npm ekosistemi ChainDrop adını verdiğimiz, Shai-Hulud ailesinin en olgun evrimiyle karşı karşıya. Hedef bu kez bireysel kütüphaneler değil; tedarik zincirinin bizzat kendisi.

Ve en ürkütücüsü: Saldırganlar artık alan adlarına veya statik IP’lere ihtiyaç duymuyor.

1. Kusursuz Başlangıç: keyv@6.0.0

Saldırı, sabah 09:35 UTC’de popüler caching kütüphanesi keyv’nin 6.0.0 sürümünün yayınlanmasıyla başladı. Bu sıradan bir hesap ele geçirme olayı değildi.

Zararlı sürüm; tamamen geçerli bir GitHub Actions pipeline’ından geçmiş, OIDC Trusted Publishing mekanizmasını hatasız kullanmış ve kusursuz bir SLSA provenance imzasına sahip olarak npm’e düşmüştü. Geliştiricilerin sistemlerine sızmak için tasarlanan tüm statik kontroller yeşil ışık yakıyordu.

preinstall kancası, meşru ve masum görünen Bun runtime’ını indiriyor, böylece Node.js seviyesindeki geleneksel davranışsal analizleri sessizce atlıyordu. Yayınlandıktan sadece iki saat sonra solucan, keyv kullanan downstream 400’den fazla pakete otonom olarak sıçradı.

2. Kalkanları Delen Teknik: Ethereum Dead-Drop C2 (EtherHiding)

ChainDrop’u önceki Miasma ve Shai-Hulud türevlerinden ayıran asıl özellik, Komuta Kontrol (C2) altyapısında gizli.

Geleneksel zararlı yazılımlar komut almak için bir alan adına veya statik IP’ye bağlanır. Firewall’lar ve DNS sinkhole sistemleri bu adresleri engellediğinde saldırı felç olur.

ChainDrop ise EtherHiding adı verilen tekniği kullanıyor. Zararlı kodun içinde hiçbir hardcoded C2 domain’i yok. Bunun yerine payload, Ethereum ana ağındaki belirli bir akıllı kontrata (0xE1f2395ee43e45A1556EC6438a88c31B83493103) sıradan bir eth_call sorgusu yapıyor. Kontrat, o an aktif olan C2 domain’ini döndürüyor.

Blokzinciri merkeziyetsiz olduğu için bu C2 altyapısını kapatmak teknik olarak imkânsız. “Güvenilir” kabul edilen public Ethereum RPC node’larına giden trafiği engellemek ise çoğu CI/CD ortamında ciddi kırılmalara yol açacağı için güvenlik ekiplerinin eli kolu bağlanıyor.

3. Solucan Mimarisi: AI ve Editörleri Silaha Dönüştürmek

Zararlı payload geliştiricinin makinesine indiğinde basit bir credential harvesting yapıp durmuyor. Kendi kendini yeniden üretmek ve kalıcılık sağlamak için çok daha şeytani bir yol izliyor: AI kodlama asistanları.

Cursor, VS Code ve Claude Code gibi araçların proje dosyalarındaki konfigürasyonları otomatik okuma yeteneğini suistimal eden solucan; projenin .claude/settings.json ve .vscode/tasks.json dosyalarına çapraz kancalar yerleştiriyor.

Siz sadece editörü açtığınızı veya asistanınıza “Bu koda bir bak” dediğinizi sanıyorsunuz. Oysaki asistanın arka planda okuduğu o “zararsız” konfigürasyon dosyası, ortam değişkenlerini okuyup Ethereum C2’sine yolluyor. Çalınan npm ve GitHub token’ları kullanılarak, geliştiricinin yetkili olduğu diğer tüm npm paketlerine solucanın yeni bir kopyası anında bulaştırılıyor.

İşte “tedarik zincirinin içten içe çürümesi” tam olarak budur.

4. NixOS ve Sovereign Savunma: Zero Trust’ı Ağ Seviyesine İndirmek

Önceki yazılarımızda NixOS’un read-only mimarisinin bizi sistem seviyesinde koruduğunu ve yerel pnpm projeleri için onlyBuiltDependencies beyaz liste mantığının şart olduğunu söylemiştik. Ancak ChainDrop’un CI/CD hatlarını ve ağ egress trafiğini hedef alan yapısı kuralları değiştiriyor.

Kod seviyesinde güvensizlik artık yeterli değil. Bunu ağ seviyesine taşımak zorundayız.

Peki bu solucana karşı kendi Sovereign altyapımızı nasıl koruruz?

  1. Egress trafiğinin sıkılaştırılması
    Klasik DNS kara listelerini unutun. CI/CD runner’ları ve lokal geliştirme ortamlarından çıkan tüm dış bağlantıları varsayılan olarak engellemek (Default Deny) zorundayız. Projenin bağımlılıkları neden bir Ethereum RPC node’una istek yapsın? Bu tür public Web3 gateway’lerine giden trafik ağ seviyesinde kesilmeli.

  2. Trapdoor mantığının CI/CD’ye uygulanması
    ADR-036: Sovereign Trapdoor mimarisindeki “sadece kullanıcı eylemiyle açılan geçit” mantığını runner’lara entegre etmeliyiz. Token’lar ortam değişkenlerinde statik olarak durmamalı; sadece tam izolasyon altındaki deployment anında, geçici ve dar kapsamlı OIDC token’ları olarak üretilip yok edilmeli.

  3. Workspace Trust ve AI
    Yapay zeka asistanları körü körüne .vscode veya .claude klasörlerini otomatik okumamalı. Her yeni projeyi klonladığınızda, klasörü AI ajanlarına açmadan önce mutlaka salt okunur / kum havuzu bir ortamda denetleyin.

Sonuç: Merkeziyetsiz Tehditler

ChainDrop, tedarik zinciri saldırılarında yeni bir çağın resmi açılışıdır. Web3 ve blokzinciri teknolojileri artık sadece kripto meraklılarının oyun alanı değil; siber suçluların “durdurulamaz” komuta kontrol altyapılarıdır.

Tedarik zincirine, SLSA imzalarına ve Trusted Publishing etiketlerine olan körü körüne güvenimiz bizi bu noktaya getirdi. Eğer Zero Trust yaklaşımını sadece kod ve paket seviyesinde bırakıp, çalıştığımız ortamın ve ağımızın dışa dönük iletişimine uygulamayacaksak, bir sonraki solucanın bizi yutması an meselesidir.

EOF.