
მკვლევარმა GitHub-ზე 10 000 რეპოზიტორია იპოვა, რომლებიც ტროიანს ავრცელებენ
დეველოპერმა, რომელმაც აღმოაჩინა, რომ მისივე პროექტის ასლებს მავნე პროგრამის გასავრცელებლად იყენებდნენ, GitHub-ის საჯარო მოვლენების მონაცემები გააანალიზა და 10 000 რეპოზიტორია იპოვა, სადაც ტროიანი zip-არქივშია.
დეველოპერმა, რომელმაც აღმოაჩინა, რომ მისივე GitHub-პროექტის ასლებს მავნე პროგრამის გასავრცელებლად იყენებდნენ, გამოაქვეყნა 10 000 რეპოზიტორიის სია, რომლებიც, მისი თქმით, ტროიანს readme-ფაილში დამატებული ბმულის მეშვეობით ავრცელებენ. რეპოზიტორიებს სხვადასხვა სახელი და კონტრიბუტორი აქვთ და ერთმანეთის fork-ები არ არიან, თუმცა მათი ნიმუში იმდენად თანმიმდევრულია, რომ სკრიპტს მათი პოვნა შეუძლია.
ორი ასლი და zip-არქივი
გამოძიება, რომელიც orchidfiles.com-ზე გამოქვეყნდა, ძებნით დაიწყო. ავტორმა საკუთარი ერთ-ერთი პროექტი მოძებნა და თავისი რეპოზიტორია Google-ის შედეგებში იხილა — Bing-ზე კი სხვა ანგარიშის რეპოზიტორია, იგივე სახელითა და აღწერით, commit-ების სრული ასლითა და მისი სახელით კონტრიბუტორებს შორის. საათით ადრე დამატებული იყო commit, რომელმაც readme-ში zip-არქივის ბმული ჩასვა. მეორე ასეთი რეპოზიტორია მან GitHub-ის tag-ებზე დათვალიერებისას იპოვა.
ორივეზე დაკვირვებისას გაირკვა, რომ ყოველ რამდენიმე საათში ბოლო commit იშლება და იდენტური ხელახლა იტვირთება; მისი ერთადერთი ცვლილება არქივის ბმულია. ავტორმა რეპოზიტორიები GitHub-ის მხარდაჭერას შეატყობინა, ორი კვირა პასუხი არ მიუღია, დაახლოებით ერთი თვის შემდეგ კი შეატყობინეს, რომ ისინი წაშლილია.
16 მილიონი push-იდან 10 000 რეპოზიტორიამდე
კამპანიის მასშტაბის შესაფასებლად მან GH Archive გამოიყენა, რომელიც GitHub-ის ყველა მოვლენას აქვეყნებს დღის მიხედვით, და ხუთი დღის მონაცემები push-მოვლენებზე გაფილტრა. 16 მილიონი push-იდან დაახლოებით 3000 რეპოზიტორია ახლდებოდა ყოველ რამდენიმე საათში. ვინაიდან მოვლენები არ აჩვენებს, რომელი ფაილები შეიცვალა, თითოეული კანდიდატისთვის GitHub API-ის დამატებითი მოთხოვნები იყო საჭირო — ტოკენზე საათში 5000 მოთხოვნის ლიმიტით.
ფილტრებმა — commit ადამიანისგან და არა ბოტისგან, ერთ თვეზე მეტი შუალედი ბოლო commit-ამდე, ერთზე მეტი კონტრიბუტორი — სია 14 რეპოზიტორიამდე შეამცირა. ეს შედეგი მცდარი იყო: ყველა მათგანი, ფაქტობრივად, 20 საათით ადრე განახლდა, ანუ „ყოველ რამდენიმე საათში განახლების“ პირობა კამპანიის უმეტეს ნაწილს ყრიდა. მან ასევე შენიშნა რეპოზიტორიები, რომელთა ბოლო commit — ყველა სახელწოდებით „Update README.md“ — zip-ბმულს შეიცავდა, მაგრამ ცვლილებები საერთოდ არ ჰქონდა. ფილტრის გაფართოებამ დღეში 1-დან 24-ჯერ განახლებულ რეპოზიტორიებზე 40 000 კანდიდატი დააბრუნა; მათგან 10 000 ზუსტად ერგებოდა ნიმუშს.
რა არის არქივში
ყოველი zip ოთხ ფაილს შეიცავს: ბრძანების სკრიპტი — Application.cmd ან Launcher.cmd; შესრულებადი ფაილი სახელწოდებით loader.exe, luajit.exe ან მსგავსი; მონაცემთა ფაილი და lua51.dll. არქივის ბმულის VirusTotal-ზე გაგზავნა ვერაფერს აღმოაჩენს, თავად ფაილის გაგზავნა კი ტროიანს ავლენს.
ავტორის ჰიპოთეზით, commit-ების გადაწერა GitHub-ის უსაფრთხოების შემოწმებების გვერდის ავლას ეხმარება, ახლად შექმნილი რეპოზიტორიების კლონირება მათ იშვიათად მოძიებული ტერმინების შედეგებში მაღლა აყენებს, ხოლო commit-ებისა და კონტრიბუტორების კოპირება ნდობის შესაქმნელად ხდება. ზოგიერთი ეს რეპოზიტორია ერთ წელზე მეტია არსებობს და ავტომატურად არ აღმოჩნდება. აღმომჩენი სკრიპტი და სრული სია GitHub-ზე სახელწოდებით Git Malware Finder არის გამოქვეყნებული.