
Tədqiqatçı GitHub-da troyan yayan 10 000 repo tapdı
Öz layihəsinin kopyalarının zərərli proqram yaymaq üçün istifadə edildiyini aşkarlayan developer GitHub-ın açıq hadisə məlumatlarını analiz edib və readme-dən keçən ZIP arxivində troyan saxlayan 10 000 repo tapıb.
Öz GitHub layihəsinin kopyalarının zərərli proqram yaymaq üçün istifadə edildiyini aşkarlayan developer, readme faylına əlavə olunan link vasitəsilə troyan yaydığını bildirdiyi 10 000 reponun siyahısını dərc edib. Repoların adları və töhfə verənləri fərqlidir, onlar bir-birinin fork-u deyil, lakin izlədikləri nümunə skriptin onları tapa biləcəyi qədər sabitdir.
İki kopya və ZIP arxivi
orchidfiles.com-da dərc olunan araşdırma axtarışla başlayıb. Öz layihələrindən birini axtararkən müəllif reposunu Google nəticələrində tapıb; Bing-də isə başqa hesaba aid, eyni ad və təsvirə, commit tarixçəsinin tam kopyasına malik və müəllifin adının töhfə verənlər arasında göstərildiyi repo çıxıb. Bir saat əvvəl readme-ə ZIP arxivi linki əlavə edən commit göndərilmişdi. İkinci repo da GitHub teqlərinə baxarkən eyni şəkildə üzə çıxıb.
Hər ikisini izləyərkən məlum olub ki, hər neçə saatdan bir son commit silinir və eynisi yenidən göndərilir; yeganə dəyişiklik arxiv linkidir. O, repoları GitHub dəstəyinə bildirib, iki həftə cavab almayıb və təxminən bir ay sonra onların silindiyi ona bildirilib.
16 milyon push-dan 10 000 repoya
Kampaniyanın miqyasını ölçmək üçün o, hər hansı günün bütün GitHub hadisələrini dərc edən GH Archive-ə müraciət edib və beş günlük məlumatı push hadisələrinə görə süzüb. 16 milyon push arasında təxminən 3 000 repo hər neçə saatdan bir yenilənirdi. Hadisələr hansı faylların dəyişdiyini göstərmədiyi üçün hər namizəd üçün əlavə GitHub API sorğuları tələb olunurdu; token üzrə saatlıq limit 5 000 sorğudur.
Commit-lərin botdan deyil, istifadəçidən gəlməsi, son commit-dən əvvəl bir aydan çox fasilə olması və birdən çox töhfə verənin olması kimi filtrlər siyahını 14 repoya endirib. Bu nəticə səhv idi: əslində hamısı 20 saat əvvəl yenilənmişdi, yəni «hər neçə saatdan bir yenilənmə» şərti kampaniyanın böyük hissəsini kənarlaşdırırdı. O, həmçinin son commit-i — hamısı «Update README.md» adlanırdı — ZIP linki daşıyan, amma heç bir dəyişikliyi olmayan repoları da görüb. Filtri gündə 1–24 yeniləməyə genişləndirmək 40 000 namizəd verib; onlardan 10 000-i nümunəyə tam uyğun gəlirdi.
Arxivin içində nə var
Hər ZIP dörd fayl saxlayır: əmr skripti — Application.cmd və ya Launcher.cmd; loader.exe, luajit.exe və ya oxşar adlı icra edilə bilən fayl; məlumat faylı və lua51.dll. Arxivin linkini VirusTotal-ə göndərmək heç bir aşkarlama vermir, faylın özünü göndərdikdə isə troyan üzə çıxır.
Müəllifin fərziyyəsinə görə, commit-lərin yenidən yazılması GitHub-ın təhlükəsizlik yoxlamalarını keçməyə kömək edə bilər, yeni yaradılmış repoların klonlanması onları az axtarılan terminlərdə yuxarı sıralara çıxarır, commit tarixçəsinin və töhfə verənlərin kopyalanması isə etimad yaratmağa xidmət edir. Bu repolardan bəziləri bir ildən çoxdur mövcuddur və avtomatik aşkarlanmır. Aşkarlama skripti və tam siyahı GitHub-da Git Malware Finder adı ilə dərc olunub.