Gorsel Kaynagi: The Hacker News
Saldırgan, 19 Ekim Pazartesi günü OVHcloud’un komut satırı aracının beş mevcut sürümünün indirme arşivlerini, bir katkıda bulunanın GitHub hesabını ele geçirerek değiştirdi. Hesabın ele geçirildiği ve yeni dosyaların, çalıştırılan herhangi bir makinenin diskinde saklanan gizli bilgileri çalmayı hedefleyen bir derleme olduğu bulut sağlayıcısı tarafından belirtildi.
Dosyalar GitHub üzerinde 12:47 ile 14:21 UTC arasında, yani en fazla 94 dakika boyunca yayındaydı ve yalnızca bu pencere içinde OVHcloud CLI’ı kuran veya güncelleyen kişilere ulaştı; bu işlem macOS, Linux x86_64 veya arm64, ayrıca Windows x86_64 üzerinde hash kontrolü yapılmayan bir yol üzerinden gerçekleştirildi.

OVHcloud, yerleştirilen arşivleri sildi ve akşam, dosyalarının GitHub tarafından değiştirilmesine izin verilmeyen, değiştirilemez bir sürüm olarak temiz bir v0.16.0 yayımladı. Kaynak kodu, sürüm etiketi ve şirketin derleme hattı dokunulmadı; kötü amaçlı derleme, Nisan ile Eylül arasında yayımlanmış sürümlerin üzerine doğrudan yüklenen, daha sonraki bir commit’in sıradan bir go derlemesiydi.
Kimler Etkilendi
v0.15.0 sürümünde salırgan altı dosyayı değiştirdi: macOS x86_64 ve arm64 arşivleri, Linux x86_64 ve arm64 arşivleri, Windows x86_64 arşivi ve checksums.txt dosyası böylece yayımlanan hash’ler yeni ikili dosyalarla eşleşti. Aynı altı dosya şimdi v0.11.0 ile v0.14.0 arasında da kaldırıldı. Linux i386, Windows i386, Windows arm64 ve WebAssembly derlemeleri her sürümde dokunulmadan bırakıldı.
OVHcloud, v0.11.0 ile v0.15.0’ı tehlikeli, v0.10.0’ı ise temiz olarak listeliyor. Bu beş sürüm 14 Nisan ile 16 Eylül arasında yayımlandığından, Pazartesi günü 14:21 UTC’den önce kurulmuş ve o günden beri güncellenmemiş bir kopya orijinaldir.
Bu pencere içinde ve bu platformlardan birinde şunu yaptıysanız, size yerleştirilmiş bir dosya ulaşmış demektir:
- Resmi kurulum betiğini çalıştırdı (curl -fsSL https://raw.githubusercontent.com/ovh/ovhcloud-cli/main/install.sh | sh). Bu betik son sürüm arşivini indirip kurar ve hiçbir zaman bir hash doğrulamaz.
- Bu beş sürümden birinin GitHub sürüm sayfasından bir arşiv indirdi.
- Sabitlenmiş bir hash olmadan sürüm indirme URL’sinden arşivi çeken bir CI işi veya derleme adımı çalıştırdı.
- macOS veya Linux bir makinede v0.12.0, v0.13.0 veya v0.14.0 kurulumundan CLI’nin kendi güncelleme komutunu çalıştırdı; burada araç betikle ya da elle kurulmuştu. Komut arşivi indirir ve binary’yi hash doğrulaması olmadan değiştirir. Homebrew ya da go install kurulumunda ise sadece çalıştırılacak komutu yazdırır.
Aşağıdakileri yaptıysanız saldırganın eline düşmediniz:
- Homebrew ile kurdunuz; pencere sırasında cask, her arşivin orijinal SHA-256 değerini sabitledi. Homebrew, hash’i eşleşmeyen bir indirmeyi reddeder, bu nedenle brew install ya brew upgrade değiştirilen dosyayı kurmak yerine başarısız olurdu. Erken dönem bazı anlatımlar Homebrew’i maruz kalan yollar arasında göstermişti, ancak The Hacker News tap’ın commit geçmişini inceledi: 16 Eylül’deki v0.15.0 cask ile Pazakşamı v0.16.0 cask arasında hiçbir değişiklik yoktu.
- go install kullandınız ya da kaynaktan derlediniz. v0.15.0 etiketi hâlâ Eylül commit’i olan 760fd72’yi gösteriyor.
- Docker imajını çezsiniz. Son etiket son kez 21 Eylül’de yüklenmişti, yani değişimden dört hafta önceydi ve Salı gününe kadar yeniden derlenmemişti.
- Pazakşamı 12:47 UTC’den önce kurdunuz ve pencere sırasında güncelleme yapmadınız.
Nasıl Anlarsınız
Değişimi fark eden müşteri, yeni v0.15.0 Linux arm64 binary’sinden go version -m ile derleme bilgisini aldı; bu komut dosyayı çalıştırmadan okur ve bir GitHub issue içinde paylaştı. Kötü niyetli derlemeyi işaretleyen üç şey vardır:
- Modül satırı v0.15.1-0.20261013083505-5ead8ef9b43d+dirty şeklinde okunuyor; bu, etiketlenmemiş bir derlemeden üretilen yapılar için Go’nun ürettiği sahte sürüm numarası ve burada 13 Ekim tarihli bir derlemden söz konusu ediliyor. Gerçek bir sürüm kendi etiket numarasını taşır: OVHcloud’un temiz v0.16.0 derlemesi v0.16.0+dirty olarak okunuyor.
- Kaydedilen commit 5ead8ef değil, v0.15.0 etiketinin işaret ettiği 760fd72 commit’idir.
- Bir -ldflags=”-s -w” satırı mevcut. OVHcloud’un sürüm hattı, Go’nun kaydedilen bayraklara eklemediği bir sürüm bayrağı ile derleme yaptığından, gerçek bir sürüm hiç -ldflags satırı göstermez.
Her +dirty ile işaretli ya da vcs satırları taşıyan derlemenin kötü amaçlı olduğu yönünde dolaşan tavsiyeler, OVHcloud’un kendi sürümünü de işaretleyecektir. Hacker News, temiz v0.16.0 Linux x86_64 ikili dosyasında aynı komutu çalıştırdı: v0.16.0+dirty, vcs.modified=true ve derlendiği commit’i raporluyor.
Yerine konulan bir dosyanın yayımlanan tek hash’i v0.15.0 Linux arm64 arşividir:
- SHA-256 (yerine konulan arşiv): 3833daffcaaaab27e4e0e0833240ffcb1df8df648f4ec0bc4a75c176e28933cb
- SHA-256 (orijinal arşiv): 5c2beb56e6d83a4b426565a1557791ef759316abcc4effb38dd627c90aeb80e0
Sürüm bayrağı olmadan bir derleme sürümünü tanımsız olarak raporlar, ancak şüpheli bir ikili dosyayı çalıştırarak bunu öğrenmek tavsiye edilmez.
N Yapmalısınız
OVHcloud’un kurucusu Octave Klaba, Pazartesi akşamı X üzerinden etkilendiğini düşünenlerin diske kaydedilen her gizli anahtarı değiştirmesi gerektiğini yazdı.
Belgelendirmesine göre CLI, OVHcloud API kimlik bilgilerini ~/.ovh.conf içinde saklar ve bunları ortam değişkenlerinden okur; ayrıca verilen tavsiye, yalnızca bu dosyaları değil, diskin üzerindeki her şeyi kapsar.
- Eğer değiştirilmiş bir derleme çalıştırdıysanız veya ayırt edemiyorsanız, o makineden okunabilen her gizli verinin ifşa edildiğini varsayın ve anahtarları yenileyin. Olayı araştıran OpenSourceMalware, bunu farklı bir makineden yapmanızı ekliyor.
- İkili dosyayı kaldırın ve v0.16.0 sürümünü kurun. Bu sürüm değiştirilemez ve dosyalarının imzalı kaydını taşıyan bir sürüm doğrulamasına sahiptir. Güncelleme programı değiştirir ancak zaten kopyalanmış bir anahtarı iptal etmez; bu yüzden yenileme işlemi önce gelir.
- GitHub’ın belgelediği gibi, indirilen arşivi sürümle gh release verify-asset v0.16.0 FILE komutuyla karşılaştırın.
OVHcloud, ikili dosyanın hangi dosyaları okuduğu, bunları nereye gönderdiği veya kaç kopyanın indirildiği konusunda bir şey söylemedi ve değiştirilmiş bir arşivin halka açık şekilde analiz edilmiş bir kopyası bulunmuyor. Şirket, önümüzdeki günlerde ayrıntılı bir son analiz (postmortem) sö verdi.
Nasıl Oluştu
GitHub deposunda yazma erişimi olan herkes bir sürümün ekli dosyalarını silebilir ve aynı adlarla yeni dosyalar yükleyebilir; sürüm değiştirilemezliği etkinleştirilmedikçe indirme URL’si değişmez.
Ekim 2025’ten beri genel olarak kullanılabilen bu ayar, bir sürümün dosyalarını ve etiketini kilitler ancak yalnızca etkinleştirildikten sonra oluşturulan sürümleri korur.
OVHcloud bunu etkinleştirmemişti. Pazartesi akşamı Next’in alıntıladığı ikinci bir paylaşımda Klaba, sorunun değiştirilemezlik seçeneğinin aktif olmamasından kaynaklandığını, böylece doğru izinlere sahip bir kullanıcının şirketin CI/CD hattının herhangi bir denetimi olmadan mevcut sürümleri doğrudan GitHub üzerinde değiştirebileceğini belirtti. Seçenek şimdi etkinleştirildi ve hatların kendileri etkilenmedi.
Bes eski sürüm artık yalnızca saldırganın dokunmadığı dört arşivi sunuyor.
Yüklemeler, OpenSourceMalware’ın GitHub’ın sunucu tarafı kayıtlarından bir zaman çizelgesi oluşturduğuna göre, OVHcloud’un belgeleme deposunda birleştirilmiş katkıları bulunan ve organizasyonun halka açık bir üyesi olmayan bir katkı sağlayıcının hesabı üzerinden gerçekleştirildi.
Yayım iş akışı hiç çalışmadı: çalıştırma listesi, 16 Ekim ile Pazartesi günü saat 16:00’da itilen v0.16.0 etiketi arasında herhangi bir iş akışı göstermiyor. İlk kontrollerde başka bir deponun etkilenmediği görüldü, Klaba ilk yazısında bunu belirtti ve OVHcloud hesabın kimlik bilgilerinin nasıl ele geçirildiğini açıklamadı.
Gorsel Kaynagi: The Hacker News
Müşterinin bir CI işi, Linux arm64 arşivinin SHA-256 değerini sabitleyip başarısız olmaya başlamasıyla bu değişikliği yakaladı. Depoda özel bir bildirim kanalı bulunmadığı için müşteri, OpenSourceMalware’in zaman çizelgesine göre saat 13:50’de kamuya açık bir sorun bildirimi açtı ve OVHcloud, yaklaşık yarım saat sonra, saat 14:21’de (Paris’te 16:21) değiştirilen dosyaları sildi. v0.16.0 ise saat 17:16’da, şirketin ovh-cds hesabı altında imzalı bir etiketle yayımlandı.
GlassWorm Sorunu
OpenSourceMalware, hesabı GlassWorm’a bağlıyor; bu kötü amaçlı yazılım kampanyası kodu görünmez Unicode karakterlerinin içine gizliyor ve bir sonraki aşamayı bir Solana cüzdanının işlemlerinin memo alanında alıyor. Araştırmacılar, hesabın kişisel deolarının 5 ve 6 Mart’ta, bu türden bir yükleyici ekleyen düzeltilmiş bir commit ile zorla yeniden itildiğini buldu.
Bu yükleyicinin okuduğu cüzdan, GlassWorm’un ForceMemo kampanyasında adını taşıyan cüzdan; bu kampanya, çalınan GitHub belirteçleriyle Mart ayında yüzlerce Python deposuna zorla kötü amaçlı yazılım itmişti. The Hacker News, yükleyici dosyasının araştırmacıların yayımladığı hash ile o deolardan birinde hâlâ bulunduğunu doğruladı.
Aynı aktörün ikisini de yapmış olup olmadığı “çıkarımımızdır”, araştırmacılar yazdı. Paylaşılan hesap bağlantı noktasıdır ve Ekim ayındaki ikili dosyadan hiçbir şey GlassWorm’a bağlanamadı, çünkü ondan bir kopya korunmadı.
Bu Gelişmeyi Toplulukta Değerlendirin
Haber hakkındaki düşüncelerinizi, donanım deneyimlerinizi ve teknik sorularınızı topluluk üyeleriyle anlık olarak tartışın.
Bu gelişme hakkında düşüncelerinizi, donanım deneyimlerinizi veya sorularınızı Topluluk Forumumuzda paylaşın.
Foruma Katıl & Yanıtla ➔




Söz sizde.
Deneyiminizi, sorularınızı ve katkılarınızı paylaşın. E-posta adresiniz yayımlanmaz.