
Araştırmacı GitHub'da truva yazılımı yayan 10.000 depo buldu
Kendi projesinin kopyalarının kötü amaçlı yazılım yaymak için kullanıldığını fark eden bir geliştirici, GitHub'ın genel olay verilerini inceleyerek readme dosyasından bağlanan bir ZIP arşiviyle truva yazılımı dağıtan 10.000 depo buldu.
Kendi GitHub projesinin kopyalarının kötü amaçlı yazılım yaymak için kullanıldığını keşfeden bir geliştirici, readme dosyasına eklenen bir bağlantı üzerinden truva yazılımı dağıttığını söylediği 10.000 deponun listesini yayımladı. Depoların adları ve katkıda bulunanları farklı, birbirlerinin fork'u değiller; ancak izledikleri kalıp bir betiğin onları bulabileceği kadar düzenli.
İki kopya ve bir ZIP arşivi
orchidfiles.com'da yayımlanan inceleme bir aramayla başladı. Kendi projelerinden birini ararken yazar, deposunu Google sonuçlarında buldu; Bing'de ise başka bir hesaba ait, aynı ad ve açıklamaya, commit geçmişinin tam kopyasına sahip ve kendi adının da katkıda bulunanlar arasında listelendiği bir depo çıktı. Bir saat önce readme dosyasına bir ZIP arşivi bağlantısı ekleyen bir commit atılmıştı. İkinci depo da GitHub etiketlerine göz atarken aynı şekilde ortaya çıktı.
İkisini izlediğinde, her birkaç saatte son commit'in silinip aynısının yeniden atıldığını gördü; tek değişiklik arşiv bağlantısıydı. Depoları GitHub desteğine bildirdi, iki hafta yanıt alamadı ve yaklaşık bir ay sonra kaldırıldıkları kendisine bildirildi.
16 milyon push'tan 10.000 depoya
Kampanyanın ölçeğini görmek için herhangi bir günün tüm GitHub olaylarını yayımlayan GH Archive'e yöneldi ve beş günlük veriyi push olaylarına göre süzdü. 16 milyon push arasında yaklaşık 3.000 depo birkaç saatte bir güncelleniyordu. Olaylar hangi dosyaların değiştiğini göstermediği için her aday ek GitHub API çağrıları gerektirdi; token başına saatlik sınır 5.000 istekti.
Commit'lerin bot yerine kullanıcıdan gelmesi, son commit'ten önce bir aydan uzun boşluk bulunması ve birden fazla katkıda bulunan olması gibi filtreler listeyi 14 depoya indirdi. Bu sonuç yanlıştı: 14 deponun tamamı aslında 20 saat önce güncellenmişti, yani "birkaç saatte bir güncelleme" koşulu kampanyanın büyük bölümünü eliyordu. Ayrıca son commit'i — hepsi "Update README.md" adını taşıyordu — ZIP bağlantısı içeren ama hiç değişiklik yapmayan depolara da rastladı. Filtreyi günde 1 ile 24 güncellemeye genişletmek 40.000 aday getirdi; bunlardan 10.000'i kalıba tam olarak uyuyordu.
Arşivin içinde ne var
Her ZIP dört dosya içeriyor: Application.cmd ya da Launcher.cmd adlı bir komut betiği; loader.exe, luajit.exe veya benzeri adlı bir çalıştırılabilir dosya; bir veri dosyası ve lua51.dll. Arşivin bağlantısını VirusTotal'e göndermek hiçbir tespit üretmiyor; dosyanın kendisi gönderildiğinde ise truva yazılımı ortaya çıkıyor.
Yazarın hipotezine göre commit'lerin yeniden yazılması GitHub'ın güvenlik kontrollerini atlamaya yardımcı olabilir, yeni oluşturulmuş depoların kopyalanması onları az aranan terimlerde üst sıralara taşır ve commit geçmişiyle katkıda bulunanların kopyalanması güven oluşturmayı amaçlar. Bu depoların bir kısmı bir yıldan uzun süredir var ve otomatik olarak tespit edilmiyor. Tespit betiği ve tam liste GitHub'da Git Malware Finder adıyla yayımlandı.