· kaynak dev.to (home feed)
Sahte işe alım görevi, uzaktan kod çalıştırmaya izin veren kötü niyetli npm paketini gizliyordu
Bir geliştiricinin dev.to'daki birinci ağızdan anlatımı, ikna edici bir full-stack take-home görevinin uzaktan kod indirip çalıştıran bir npm paketini nasıl sahne aldığını anlatıyor.

İkna edici bir işe alım önü
dev.to'da yazan bir geliştirici, sıradan görünen bir işe alım süreci yoluyla kendisine ulaşan bir supply-chain saldırısını anlattı. Gönderiye göre yazar, Antfarm DAO adını kullanan bir şirketten full-stack bir kodlama görevi aldı. Yüzeysel bakıldığında her şey yolunda görünüyordu: organizasyonun theantfarm.tech adresinde profesyonel görünümlü bir web sitesi ve DEV varlığı vardı, işe alımı yürüten kişinin GitHub, LinkedIn, Stack Overflow, LeetCode ve Telegram'da köklü profilleri bulunuyordu. Mesajlar iş odaklıydı ve görev standart bir saatlik mühendislik egzersizine benziyordu. Sorun ancak deponun bağımlılık ağacında görünür hale geldi.
Bağımlılık ağacındaki payload
Proje, animatecss-tailwind-adapter 2.0.6 sürümüne bağımlıydı ve bu paket de @aaron205whitmore/postcss-animate-utils adlı scoped bir paketin 1.0.2 sürümünü çekiyordu. dev.to hesabı ikinci paketi kötü niyetli olarak tanımlıyor. Paket, 153.75.81.2 adresindeki 1224 numaralı portta çalışan bir uzak sunucuyla iletişim kurıyor, base64 ile kodlanmış bir payload alıyor ve Node'un require fonksiyonu erişilebilirken bir Function constructor'ı ile çalıştırıyor — etkili bir şekilde, saldırgan tarafından sağlanan JavaScript kodunun kurbanın makinesinde çalıştırılmasına yarayan bir kanal. Yazar, ele geçirdiği paket sürümünün SHA-1 parmak izini (183f39ef3531ad688f168c81e25b528b55630d67) yayımlıyor ve destekleyici kanıtların proof_of_dev adlı herkese açık bir depoda korunduğunu söylüyor.
Depoyla birlikte gelen bir kimlik bilgisi
Gönderi ikinci bir tuhaflığa dikkat çekiyor: depo, .npmrc dosyasında bir npm kimlik doğrulama token'ı ile birlikte geliyordu. Yazarın değerlendirmesine göre, scoped bir özel bağımlılığın depoya dahil bir kimlik bilgisiyle birlikte gelmesi, herhangi bir şey kurulmadan önce incelenmeyi hak eden bir kombinasyon.
Kontrol ve denetimler
Kötü niyetli paket tespit edildikten sonra yazar uygulamayı çalıştırmayı bıraktı ve makineyi inceledi. Denetimler arasında şüpheli IP adresi için lsof ile etkin ağ bağlantılarının aranması, önceki 24 saati kapsayan macOS unified log'larının sorgulanması, çalışan Node ve npm süreçlerinin listelenmesi ve npm cache'inin paket içerikleriyle birlikte incelenmesi yer aldı. Komuta-kontrol trafiğine veya kalıcılığa dair hiçbir kanıt bulunmadı; ancak yazar bu denetimlerin bir bağlantının hiç gerçekleşmediğini kanıtlayamayacağını da dikkatle belirtiyor.
Yazarın çıkardığı dersler
Olaydan birkaç pratik sonuç çıkıyor:
npm installgüveni tüm bir paket ve geliştirici grafiğine devreder; dolayısıyla daha adını hiç duymadığınız düşmanca bir şey bile geçişsel olarak gelebilir.- Tanımadığınız depolar için çözümlenen ağacı
package.ile yetinmek yerinenpm lsile inceleyin ve özel scoped bağımlılıklara özellikle dikkat edin. - Depoya dahil bir
.npmrctoken'ını yavaşlamanız gerektiğine dair bir sinyal olarak görün. - Şüpheli bir postscript'in olmaması pek bir şey kanıtlamaz; kötü niyetli kod bir kütüphane ilk kez kullanıldığında, yani import anında da aynı kolaylıkla çalışabilir.
- Bir şey ters görünüyorsa çalıştırmayı bırakın. Ne olduğunu görmek için şüpheli kodu yeniden çalıştırmak sadece maruziyeti artırır.
Yazarın take-home görevlere kendi politikası da buna göre sertleşmiş: herhangi bir install çalıştırmadan önce kodu, manifest'i ve lockfile'ı okuyun.
Neden önemli
Bu, bir satıcı tarafından doğrulanmış bir olay değil, tek bir birinci ağızdan bildirim ve anlatım yazarın kendi kanıtlarına dayanıyor. Ancak mekanizma yine de faydalı bir uyarı niteliğinde. İşe alım take-home görevleri neredeyse ideal bir dağıtım aracı: adaylar tanımadıkları kodu hızla klonlayıp çalıştırmayı bekler ve gerçekçi bir web varlığı ile köklü sosyal profillere sahip makul bir şirket, bir geliştiricinin dikkatini düşürmek için gereken tam sosyal kanıtı sağlar. Hedef de değerli — bir geliştirici iş istasyonunda genellikle kaynak kod erişimi, token'lar ve cloud kimlik bilgileri bulunur. Gönderide yayımlanan tanımlayıcılar, yani iki paket adı, IP adresi ve kanıt deposu, ekiplere kendi log'larında ve lockfile'larında arayabilecekleri somut bir şey veriyor.
- #npm
- #supply-chain-security
- #javascript
- #node-js
- #malware
İlgili yazılar
- Deno 2.6 minimum dependency age bayrağı ay ve yıl sürelerini sessizce yok sayıyor
- ChainDrop npm solucanı AI agent hook'ları aracılığıyla aylık 2 milyar indirilen 444 paketi ele geçirdi
- Cloudflare, tarayıcıların gözünden kaçan sekiz kötü niyetli JavaScript payload'unu yapay zekâ modelinin yakaladığını açıkladı