Konuyu Okuyanlar: 1 Ziyaretçi

MALFEX npm Kampanyası: "imgdecode" Paketi DLL İçinde Shellcode Yükleyici Taşıyor

MALFEX npm Kampanyası: "imgdecode" Paketi DLL İçinde Shellcode Yükleyici Taşıyor
[Resim: attachment.php?aid=196]

Selam arkadaşlar,

npm tarafında tedarik zinciri saldırıları artık haftalık rutin haline geldi, ama MALFEX kampanyasını ilginç kılan şey saldırganın inatçılığı. Paketleri silindikçe birkaç gün içinde yenilerini yükleyen tek bir operatörden söz ediyoruz. The Hacker News'in 17 Ekim 2026'da SafeDep araştırmasına dayanarak aktardığına göre kampanyanın yeni halkası imgdecode adlı paket: Masum görünen dokuz satırlık bir JavaScript dosyası, derlenmiş bir Windows DLL'ini yüklüyor ve bu DLL GitHub'dan şifreli shellcode indirip dllhost.exe sürecine enjekte ediyor.

Konuda Anlatılacaklar
  1. MALFEX kampanyası nedir?
  2. Üç ayrı bulaşma yolu
  3. imgdecode: Silinen paketlerin yerine gelen yeni yükleyici
  4. Hırsızlık yazılımının yetenekleri
  5. Etkilenip etkilenmediğinizi nasıl anlarsınız?
  6. Bulaşma varsa yapılacaklar ve önleme
  7. Kaynaklar

MALFEX Kampanyası Nedir?

Kampanya ilk olarak Checkmarx ve CloudSEK tarafından belgelendi. Checkmarx'ın 5 Ekim 2026 tarihli raporuna göre MALFEX, Ağustos 2023'ten beri npm'e paket yükleyen tek bir saldırganla bağlantılı. Rapor yazıldığında bu kişi 12 paket yayımlamıştı; bunların sekizi zararlı, dördü ise zararsız "kamuflaj" paketleriydi. Hedef platform yalnızca Windows.

İsmin hikayesi de ilginç: MALFEX adı doğrudan operatörün kendi markasından geliyor. Checkmarx'a göre bu ad beş npm yayıncı hesabında (malfexkkj, malfex_user, malfexteste2, malfexteste3, malfexteste4), yük deposunun git yazar e-postasında ve hırsızlık zincirinin şifre çözme anahtarında ("malfexteam2027") geçiyor. CloudSEK de operatörün Portekizce hesaplar kullandığını belirtiyor.

Checkmarx'ın 1 Ekim itibarıyla npm istatistiklerinden derlediği verilere göre zararlı paketlerin toplam indirme sayısı 40.767; bunun 37.419'u tek başına function-flag paketine ait. Firma bu sayıların ele geçirilmiş makine sayısı değil, kayıt defteri erişimi olduğunu özellikle vurguluyor. Ayrıca bilinen hiçbir meşru paket bu paketlere bağımlı değil, yani risk bu paket isimlerini doğrudan kuranlarla sınırlı.

Üç Ayrı Bulaşma Yolu

Checkmarx kampanyada birbirinden bağımsız üç yol tanımlıyor:
  • Overlord RAT yükleyicileri (tlxbnhd, tldriver, mxdriver): npm install sırasında çalışan preinstall/postinstall betikleri, PNG gibi sunulan bir Windows çalıştırılabilirini indiriyor. Sonuçta Go ile yazılmış açık kaynaklı bir uzaktan erişim truva atı olan Overlord RAT kuruluyor.
  • Hırsızlık zinciri (native-runner, img-to-native, cdn-img-fetch): Bu paketlerde kurulum kancası (install hook) yok; zararlı kod paket yüklendiğinde (require edildiğinde) çalışıyor. GitHub'daki bir PNG dosyasının sonuna eklenmiş şifreli veri çözülüp bir Go indiricisine dönüşüyor, bu da "movinlike" adlı Node.js tabanlı hırsızlık yazılımını indiriyor.
  • function-flag indiricisi: Temmuz 2025'ten beri zararlı olan bu paketin postinstall betiği, ASCII art fonksiyonunu belirli bir font parametresiyle çağırdığında gizli bir indirme rutinini tetikliyor.

Checkmarx'ın verdiği önemli bir detay: Zararlı satırlar, tipik bir kod editöründe görünür alanın dışında kalacak şekilde boşluklarla sağa itilmiş. Yani dosyayı açıp hızlıca bakan biri bir şey fark etmeyebilir.



imgdecode: Silinen Paketlerin Yerine Gelen Yeni Yükleyici

The Hacker News'in aktardığı zaman çizelgesi, operatörün kamuya açık bildirimlere ve silmelere nasıl tepki verdiğini gösteriyor (saatler UTC; TSİ için 3 saat ekleyin):
  • 26 Eylül 2026: cdn-img-fetch, img-to-native ve native-runner 1.0.0 yayımlandı.
  • 28 Eylül, 16:06 UTC (19:06 TSİ): npm, native-runner ve img-to-native'i kaldırdı.
  • 30 Eylül, 03:29 ve 03:37 UTC: Yerlerine imgbundle ve runhelper yayımlandı.
  • 30 Eylül, 16:13 UTC: runhelper yayından kaldırıldı.
  • 30 Eylül, 22:32 UTC: imgdecode 1.0.0 yayımlandı; 1.0.1 ve 1 Ekim'de 1.0.2 izledi.
  • 7 ve 8 Ekim: npm, imgbundle ve cdn-img-fetch'i kaldırdı.
  • 11 Ekim, 22:09 UTC (12 Ekim 01:09 TSİ): imgdecode 1.0.3 yayımlandı.

Paketi yükleyen hesap "malfexteste8". The Hacker News'e göre paket yazı yazıldığı sırada 979 kez indirilmişti ve hâlâ npm'de duruyordu; son sürüm 1.0.3. SafeDep'in ReversingLabs topluluk sayfasında yer alan analizine göre 1.0.0'dan 1.0.3'e kadar tüm sürümler zararlı, yani temiz bir sürüm yok. 1.0.3'ün asıl farkı, npm'in güvenlik tutucu paketiyle değiştirdiği imgbundle bağımlılığını kaldırması; böylece paket yeniden temiz bir şekilde kurulabiliyor ve başka bir MALFEX paketine ihtiyaç duymuyor.

SafeDep'in tarifine göre zincir şöyle işliyor: Bir Node.js programı Windows konsolunda require('imgdecode') çağırdığında, paketin içindeki önceden derlenmiş 64 bit DLL (Node.js native addon) yükleniyor. DLL önce bir geliştirici terminalinde çalışıp çalışmadığını kontrol ediyor, ardından aynı GitHub deposundan bir JPG dosyası çekiyor, içindeki şifreli yükü çözüyor ve sonucu yeni bir dllhost.exe sürecine enjekte ediyor. SafeDep, şifre çözülen verinin ilk baytları JPEG ya da PNG imzasıyla eşleşirse DLL'in durduğunu, bunun operatöre yükleyiciyi uzaktan kapatma imkanı verebileceğini çıkarım olarak not ediyor.

Bu yaklaşımın savunma açısından anlamı şu: Zararlı mantık JavaScript'te değil derlenmiş bir ikili dosyada olduğu için, yalnızca JS kaynak kodunu tarayan araçlar bunu kaçırabilir.

Hırsızlık Yazılımının Yetenekleri

The Hacker News'e göre GitHub hesabı ("cavecrew") artık erişilebilir değil, ama 6 Ekim tarihli bir Internet Archive kaydı, yükün hırsızlık yazılımını getiren aynı Go indiricisi olduğunu gösteriyor. Zararlı yazılım:
  • Sanal makine, sandbox ve Process Monitor, Wireshark gibi analiz araçlarını kontrol ediyor.
  • Kurtarma ifadeleri (seed phrase) içeren dosyaları ve .kdbx, .pem, .ppk, .env uzantılı dosyaları topluyor.
  • Chromium tabanlı tarayıcılar, Discord, Telegram, kripto cüzdanları ve Steam, Epic Games, Riot, Battle.net, Minecraft, Ubisoft gibi oyun uygulamalarından veri çalıyor.
  • WebSocket üzerinden komut alarak kabuk komutu çalıştırma, dosya aktarımı, ekran görüntüsü, pano erişimi ve fare/klavye kontrolü sağlıyor.
  • Kalıcılık için bir Registry Run anahtarı ve "MicrosoftEdgeUpdateService" adlı bir zamanlanmış görev oluşturuyor.

Checkmarx da movinlike'ın sekiz farklı Discord istemcisini hedeflediğini, çalınan verileri 25 MB'lık parçalar halinde sabit kodlu bir Discord webhook'una gönderdiğini belirtiyor.

Etkilenip Etkilenmediğinizi Nasıl Anlarsınız?

Checkmarx'ın önerdiği kontrollere imgdecode, imgbundle ve runhelper'ı da ekleyerek:

Bağımlılık ağacını (dolaylı bağımlılıklar dahil) kontrol etmek:
Kod:
npm ls function-flag function-color cdn-img-fetch img-to-native native-runner tlxbnhd tldriver mxdriver imgdecode imgbundle runhelper --all

Lock dosyalarında aramak (paket kayıt defterinden kalksa bile lock dosyasında sabitlenmiş kalabilir):
Kod:
rg -n 'function-flag|function-color|cdn-img-fetch|img-to-native|native-runner|tlxbnhd|tldriver|mxdriver|imgdecode|imgbundle|runhelper' package-lock.json npm-shrinkwrap.json pnpm-lock.yaml yarn.lock

Windows makinelerde belgelenmiş iz kalıntılarını kontrol etmek (PowerShell):
Kod:
Test-Path "$env:LOCALAPPDATA\ScopeSmart Technologies Inc" Test-Path "$env:APPDATA\Microsoft\Windows\node_runtime_helper.exe" Test-Path "$env:APPDATA\node.exe" schtasks /query /tn "\Maiden" /fo LIST /v Get-ScheduledTask -TaskName "MicrosoftEdgeUpdateService" -ErrorAction SilentlyContinue

Checkmarx'a göre herhangi bir "True" sonucu ya da eşleşen bir zamanlanmış görev büyük olasılıkla bulaşma anlamına geliyor. Overlord yolunda Run anahtarı kullanılmadığını ve "\Maiden" görevinin 2020 tarihine geri tarihlendiğini, bu yüzden yalnızca yeni oluşturulan görevlere bakmanın yetmeyeceğini de ekliyor. Son komuttaki görev adı meşru bir Edge görevini taklit ettiği için, eşleşme çıkarsa görevin çalıştırdığı dosya yoluna mutlaka bakın.



Bulaşma Varsa Yapılacaklar ve Önleme

Checkmarx ve The Hacker News'in önerileri özetle:
  1. Makineyi ağdan izole edin, kayıtları ve dosya sistemi kanıtlarını koruyun. node_modules silinmiş olsa bile makineyi ele geçirilmiş kabul edin.
  2. Kalıcılık kayıtlarını (zamanlanmış görevler, Run anahtarları, yukarıdaki dosyalar) adli kopyasını alarak temizleyin.
  3. Temiz bir makineden Discord, tarayıcıda kayıtlı hesaplar ve kullanılan diğer hesapların parolalarını değiştirin, aktif Telegram oturumlarını sonlandırın.
  4. Kurtarma ifadeleri o makinede tutulmuşsa fonları yeni cüzdanlara taşıyın.
  5. Paketleri özel registry'lerinizden, proxy ve önbelleklerinizden temizleyin; npm'den kaldırılmaları dahili kopyaları silmiyor.

Önleme tarafında Checkmarx'ın altını çizdiği bir nokta çok önemli: --ignore-scripts tek başına yetmiyor. Kurulum betiklerine dayanan yolları durdursa da, hırsızlık zinciri ve imgdecode paket yüklendiğinde çalıştığı için bu bayrak onları engellemiyor. Ayrıca bir paket kaldırıldığında bağımlılıklarına da bakmak gerekiyor: cdn-img-fetch, ona bağımlı olan img-to-native kaldırıldıktan sonra da kurulabilir halde kalmıştı. Checkmarx, raw.githubusercontent.com veya discord.com gibi paylaşılan servisleri tamamen engellemek yerine belirli yolları engellemeyi öneriyor.

Kendi projelerinizde son bir haftada yeni eklenmiş, az indirilmiş ve içinde .node uzantılı önceden derlenmiş ikili dosya taşıyan paketleri nasıl denetliyorsunuz? Kullandığınız araçları yorumlarda paylaşırsanız herkes için faydalı olur.

Kaynaklar
Alıntı:Yasal Uyarı: Bu konu yalnızca bilgilendirme ve savunma amaçlıdır. Paylaşılan kontrol ve tespit adımlarını yalnızca sahibi olduğunuz veya yazılı izinle yönettiğiniz sistemlerde uygulayın. İzinsiz erişim, tarama ve sistemlere müdahale, 5237 sayılı Türk Ceza Kanunu'nun 243-245. maddeleri kapsamında suçtur.

Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: