2 puan yazan GN⁺ 4 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Bir işe alım uzmanının LinkedIn mesajı üzerinden ulaşıp lead engineer alımı bahanesiyle herkese açık bir GitHub deposunun incelenmesini istediği bir sosyal mühendislik saldırısı vakası
  • İnceleme için gönderilen kodda test paketi gibi gizlenmiş bir arka kapı bulunuyordu; "deprecated Node modules sorununa bakar mısın" isteği ise npm install çalıştırmayı hedefleyen bir yemdi
  • Şüphelenip yerelde çalıştırmak yerine tek kullanımlık bir VPS üzerinde salt okunur bir ajanla kodu inceleyince, sorunlu dosya birkaç saniye içinde tespit edildi
  • Hem depo commit’lerinin hem de işe alım uzmanı profilinin gerçek kişilerin kimliklerini suistimal ettiği, sırasıyla gerçek bir geliştiriciyle sanat alanında çalışan bir gazeteciyi taklit ettiği ortaya çıktı
  • Şüphecilik, güvenlik hijyeni (security hygiene) ve salt okunur ajan kullanımının, kodu doğrudan elle okumaktan daha etkili olduğuna dair pratik savunma dersleri sunuluyor

Nasıl temas kuruldu

  • Geçen hafta küçük bir kripto girişimindeki bir işe alım uzmanından LinkedIn mesajı aldım
    • Birkaç gün boyunca birkaç kez mesajlaştık ve lead engineer gerektiren bozuk bir proof-of-concept anlattı
    • İnceleme için herkese açık bir GitHub deposu gönderip "deprecated Node modules sorununa bakar mısın" dedi
  • Mevcut bir kod tabanını inceleme isteği başlı başına yaygın olsa da, içime bir tuhaflık hissi doğduğu için daha dikkatli davrandım

İnceleme yöntemi

  • Klonlayıp bağımlılık kurmak yerine, Hetzner üzerinde tek kullanımlık bir VPS açıp depoyu orada klonladım
  • Pi’yi salt okunur modda ayarlayıp yalnızca dosya okuma araçlarını etkinleştirerek çalıştırdım
    • Kullanılan komut: pi --tools read,grep,find,ls
  • Ajandan kod tabanını inceleyip şüpheli noktaları işaretlemesini isteyince, neredeyse anında app/test/index.js dosyasında durdu

Arka kapının yapısı

  • Depo, React frontend + Node backend yapısındaydı
  • Tuzak, yaklaşık 250 satırlık app/test/index.js dosyasıydı ve test paketi gibi gizlenmişti
  • İçeride URL, parçalara bölünüp yeniden birleştirilerek saklanmıştı
  • Yorum satırına alınmış test kuklaları arasına gizlenen payload, sunucunun gönderdiği her şeyi kullanıcının makinesinde çalıştırıyordu
    • Payload 225. satırda yer alıyordu

Tetikleme mekanizması

  • Dosya, testlerin çalıştırılmasını beklemiyordu
    • app/index.js, const test = require('./test') çağrısıyla app/test/index.js dosyasını yükleyip çalıştırıyordu
  • package.json, app/index.js dosyasını başlatma aşamasına bağlıyordu
  • Asıl kritik nokta prepare script’iydi; npm, npm install sonrasında prepare script’ini otomatik çalıştırır
    • Yani yalnızca bağımlılıkları kurmak bile arka kapıyı tetikliyordu
  • "deprecated Node modules sorununa bak" talimatı sonuçta npm install çalıştırmayı amaçlayan bir yemdi
  • Payload’u sandbox içinde çalıştırıp ikinci aşama payload gözlemlenebilirdi, ancak sunucudan gelen kodun çalıştırıldığına dair kanıt yeterli olduğu için burada durdum

İlk suistimal edilen kimlik

  • Commit’ler, gerçek bir full-stack geliştiricinin adı ve e-posta adresiyle atılmıştı
    • Sıradan bir LinkedIn profili, kişisel web sitesi ve uzun geçmişe sahip bir GitHub hesabı vardı
  • Kod tabanını ondan devralmışım gibi davranarak geliştiriciye ulaştım
    • O kişinin bu şirkette hiç çalışmadığını, daha önce de GitHub üzerinde taklit edildiğini ve depoların kaldırıldığını, bu depoyla ise ilgisinin olmadığını söyledi
    • Bu tür depoları kendisinin de raporladığını belirtti
  • Tüm commit geçmişindeki 39 commit’in tamamı, bu depoya hiç dokunmamış tek bir geliştiricinin adına yazılmıştı

İkinci suistimal edilen kimlik

  • İşe alım uzmanı profili, gerçek bir sanat gazetecisine aitti; geçmişi tamamen kültür alanındaydı ve teknik hiçbir unsur içermiyordu
  • Kurulumun çalışmadığını söyleyince, teknik olmayan bu gazeteci bir anda npm ve Node sürümü uzmanına dönüşüp npm install çalıştırmam için baskı yapmaya başladı

Herkesin başına gelebilir

  • Bu tür saldırıları daha önce duymuş, HN’de de okumuştum; ama doğrudan hedef olunca yine de hazırlıksız yakalandım
    • İlk mesajdan itibaren şüphelenmiştim ama yorgun ya da acele bir günümde olsaydı, fazla düşünmeden npm install çalıştırmış olabilirdim
  • Depo inceleme talebi içeren LinkedIn mesajlarına karşı bir miktar temkin ve güvenlik hijyeni gerekli
  • Kodu salt okunur bir ajanla incelemek, doğrudan kendim okumaktan daha etkili oldu
    • Arka kapı amatörce yazılmış acemi kod gibi gizlenmişti, fakat ajan bunu birkaç saniye içinde tespit etti
  • Depoyu GitHub’a, işe alım uzmanını da LinkedIn’e bildirdim; ancak şu ana kadar bir değişiklik olmadı ve kod hâlâ yayında

1 yorum

 
GN⁺ 4 시간 전
Hacker News görüşleri
  • Küçük bir kripto startup’ındaki bir işe alımcı, bozuk bir proof-of-concept deposunu incelemesini isteyerek herkese açık bir GitHub deposu gönderdi ve “deprecated Node modules issue”yu kontrol etmesini söyledi; olayın akışı aslında npm install yaptırmaya yönelik bir phishingmiş
    prepare betiği npm installdan sonra otomatik çalışıyor, sunucunun indirdiği rastgele kodu yerelde çalıştıran bir arka kapı görevi görüyordu; bunun LinkedIn üzerinden yapılabilmesi şaşırtıcı derecede ciddi görünüyor

    • LinkedIn, $company'de çalıştığını iddia eden kullanıcıları şirketin yalanlayabilmesi için bir yol sunmuyor; kişi bunu sadece profiline yazsa bile resmî şirket sayfasında görünüyor
      Bizim şirkette de aynı dolandırıcılığı yapan sahte işe alımcılar oldu; LinkedIn Premium’da ilgili gönderileri de bulunan, oldukça inandırıcı sahte profillerdi ama gerçek çalışan değillerdi
      Ne kadar şikâyet etsek de kaldırılmadılar; sonunda LinkedIn’de çalışan bir tanıdığa içki ısmarlayıp çözdük ama her startup’ın böyle bir bağlantısı yok
    • Bir arkadaşsanız, arkadaşınızın NPM kullanmasına izin vermemelisiniz
      İnsanlar hâlâ bu kadar kolay avlanırken, PNPM gibi araçlar kullanıp kod indirme sürecindeki en bariz ve en sık kötüye kullanılan rastgele kod çalıştırma açığını kapatmıyor olmalarını anlamıyorum
      Kodu indirmek istediğiniz anda rastgele kod çalıştıran araçların artık durması gerek
    • Bu yöntem özellikle 2021–2022 kripto/NFT patlaması sırasında Upwork’te bilinen bir taktikti ve bir noktadan sonra kripto projelerinin ötesine geçip birçok kategoriye yayıldı
      En son hatırladığım örnek, Windows .scr ekran koruyucu dosyası gibi gizlenmiş bir indirmeydi; bunun LinkedIn’e kadar gelmesi daha da kötü bir aşama
      Platform muhtemelen bunu “iş ilanı artışı” gibi göreceği için pek umursamayacaktır; bu da Google veya Meta gibi reklam ağlarının dolandırıcı reklamları çok da umursamamasına benziyor
    • E-posta adresini çıkarıp bullshitpowershellladendoucument.pdf.docx gibi şeyler gönderen phishing’i gördüm ama bunu doğrudan LinkedIn DM ile yapmak oldukça cüretkâr bir strateji
    • Son zamanlarda çok görüşmeye girdiğim için birkaç açık dolandırıcıyla da karşılaştım; umarım bu, beni kandırabilecek kadar aptal göründüğüm için değil de bu tür dolandırıcılıkların daha yaygın hâle geldiği içindir
  • Bu kesinlikle suç olmalı ama neden bunu bildirebileceğimiz ve yardım alabileceğimiz, siber suçlar için 911 benzeri iyi bilinen bir kanal olmadığını anlamıyorum
    Toplumun gerçek tehlikeyi yakalayıp hızla bir destek ağı kurması gerekiyor; organize suça karşı organize savunma gerekir

    • Ne yazık ki kötü niyetli siber suçlular, “suçla ilgilenmeyen ülkelerden suç işlemek” diye garip bir numara biliyor
    • https://www.ic3.gov
      Muhtemelen yanıt alamazsınız ama ABD vatandaşları için, hatta belki herkes için, bildiğim kadarıyla internetin 911’ine en yakın yer burası
    • Temel sorun, dünya çapında işleyen bir küresel 911 olmaması
      İkinci sorun ise bu dolandırıcılıkları üretmenin neredeyse sıfır çaba gerektirmesi ama yakalayıp dava açmanın büyük emek ve astronomik maliyet istemesi gibi asimetri
    • Alaycı konuşmak gerekirse, insanların birbirine yaptığı kötü şeyler ağacında bu mesele, ulaşması epey zor yüksek dallardan birinde
      Yaşlıları hedef alan, Microsoft desteğiymiş gibi davranan dolandırıcılık aramalarıyla benzer bir yerde duruyor
      Şüphelileri yakalamak neredeyse imkânsız; ya izlerini çok iyi gizliyorlar ya da daha sık görüldüğü üzere, Batılıları dolandırmalarını hükümetlerin umursamadığı hatta göz yumduğu ülkelerde yaşıyorlar
    • FBI’ın da IC3’ü var ama siber suçlara müdahalesi berbat ve fiilen işe yaramaz
      Suçu bildirseniz bile size yardım etmeleri veya sizinle iletişime geçmeleri pek olası değil
  • Bu artık sıradan mülakat ödeviyle rahatsız edici derecede yakın
    Birinin size depo gönderip kurulumun bozuk olduğunu ve bakmanızı istemesi doğal bir durum; birçok geliştirici, yorgunsa ya da iş arıyorsa, çok düşünmeden npm install çalıştırabilir

    • Mülakat bağlamında olması daha da kötü
      Yavaş görünmek istemediğiniz için, en başta bunu çalıştırmanın uygun olup olmadığını sorma adımını atlıyorsunuz
  • “Depoyu GitHub’a, işe alımcıyı LinkedIn’e bildirdim ama hâlâ hiçbir şey değişmedi ve kod olduğu gibi duruyor” ha, ah, Microsoft

    • LinkedIn’de, CBC Kanada Haberleri gibi görünen bir reklam görmüştüm
      Kanada başbakanının tüm Kanadalılar için bir kripto yatırım planı açıkladığı sahte bir videoya ve kayıt bağlantısına gidiyordu; şikâyet ettiğimde ise inceleme sonucunda politika ihlali bulunamadığı yanıtı geldi
    • Garip değil mi? Microsoft, LinkedIn, GitHub ve NPM’in üçünü de sahipleniyor
      Üçünde de güvenlik veya istikrar sorunları var ve Microsoft yapay zekâya daha da derin girdikçe durum düzeleceğine kötüleşiyor gibi görünüyor
      Şirket içindeki o yapay zekâ üretkenliği, bazılarına göre 10 kat üretkenlik, nereye gidiyor bilmiyorum
    • Bunu DMCA ihlali diye bildirmeliydiniz
      O zaman hemen kaldırılırdı
  • Görünüşe göre aynı alan adını birden çok hedef için kullanıyorlar
    3 ay önceki bir Reddit başlığında da benzer şeyler var: https://www.reddit.com/r/openclaw/comments/1rlet0h/someone_t...

  • Hâlâ neden dünyadaki tüm işletim sistemlerinin npm’i engellemediğini anlamıyorum
    Bunlar asla ders almayacak gibi görünüyor

    • Bunun npm’in kendisiyle ilgisi yok
      Bu tür dolandırıcılıklar başka teknolojilerle de mümkündü, hatta Makefile ile bile işe yarardı
  • Mac için sonunda düzgün bir sanallaştırma çatısı olmasını isterdim
    İnternetten korunmasız biçimde rastgele betikler indirmek artık 1995’te değiliz; iyice bıktırdı
    Tanımadığınız insanlarla karşılaşıp onların eşyalarını bilgisayarınızın derinliklerine sokarken koruyucu ekipman kullanmayı unutmamalısınız

    • GitHub, AUR ve NPM’den rastgele curl | bash betikleri çalıştırmak da aynı derecede kötü ama buradaki birçok geliştirici bu kötü uygulama hakkında hâlâ şüpheli varsayımlara sahip
      Son birkaç haftada dolaşan çeşitli küçük Shai-Hulud tarzı olaylar bunun ne kadar kötü olduğunu gösteriyor
    • Mac’te zaten işe yarar bir yöntem var
      IntelliJ’de npm komutlarını bir Docker container içinde çalışacak şekilde ayarlayabilirsiniz
  • LinkedIn’den aldığım iş tekliflerinin hepsi fazlasıyla şüpheliydi
    Ya platform üzerinden başvurmanızı istiyorlardı ya da tanıtım videosu kaydetmenizi, ya da bir kod platformunun arkasına saklanmış makyajlanmış bir kodlama testi çözmenizi

    • Kardeşim sağlık sorunları yüzünden uzun süre işsiz kaldıktan sonra LinkedIn’de oldukça inandırıcı görünen bir “iş teklifi” aldı
      Şirket dizüstü bilgisayarının depozitosu bahanesiyle çek yazmasını istediler; dışarıdan bakınca saçmaydı ama uzun süredir iş aradığı için çaresizdi ve sonunda iş bulduğunu düşündüğü için gerçekten çok sevinmişti
      Uzun süre işsiz kalan insanlar, yeterli birikimi olan ya da sadece iş değiştirmek isteyen çalışanların asla kanmayacağı ciddi kırmızı bayrakları bile gözden kaçıracak kadar çaresizleşebiliyor
  • Bugünlerde çoğu NPM paket yazarı bu şekilde hacklenmiyor mu zaten?
    Görünüşe göre axios’un bakımcısı da LinkedIn üzerinden aynı yaklaşımla kandırılmıştı

    • Kendi tuzağına düşmüş gibi
  • LinkedIn’i sadece iş ilanları için kullanıyorum ama son birkaç aydır gereksiz ilanlar çok arttı
    Ladders, Swooped ve benzeri şirketlerden tonla ilan görüyorum; sanırım artık LinkedIn’i tamamen bırakmanın zamanı geldi