
Հետազոտողը GitHub-ում գտել է 10 000 պահոց, որոնք տրոյան են տարածում
Մշակողը, ով հայտնաբերել է, որ իր նախագծի պատճեններն օգտագործվում են չարամիտ ծրագրեր տարածելու համար, վերլուծել է GitHub-ի հրապարակային տվյալները և գտել 10 000 պահոց, որոնք ZIP արխիվում թաքցրած տրոյան են տարածում։
Մշակողը, ով հայտնաբերել է, որ իր GitHub նախագծի պատճեններն օգտագործվում են չարամիտ ծրագրեր տարածելու համար, հրապարակել է 10 000 պահոցների ցանկ, որոնք, ըստ նրա, տրոյան են տարածում readme ֆայլին ավելացված հղման միջոցով։ Պահոցներն ունեն տարբեր անուններ և տարբեր ներդրողներ, միմյանց fork-երը չեն, սակայն նրանց օրինաչափությունն այնքան կայուն է, որ սկրիպտը կարող է գտնել դրանք։
Երկու պատճեն և ZIP արխիվ
orchidfiles.com-ում հրապարակված հետազոտությունը սկսվել է որոնումից։ Փնտրելով իր նախագծերից մեկը՝ հեղինակն իր պահոցը գտել է Google-ի արդյունքներում, իսկ Bing-ում՝ մեկ այլ հաշվի պահոց՝ նույն անունով ու նկարագրությամբ, commit-ների պատմության ամբողջական պատճենով և իր անունով ներդրողների շարքում։ Մեկ ժամ առաջ արվել էր commit, որը readme-ում ավելացրել էր ZIP արխիվի հղում։ Երկրորդ պահոցը նույն կերպ հայտնաբերվել է GitHub-ի թեգերը դիտելիս։
Երկուսին հետևելով՝ նա պարզել է, որ ամեն մի քանի ժամը մեկ վերջին commit-ը ջնջվում է և նույնականը նորից ուղարկվում. դրա միակ փոփոխությունը արխիվի հղումն է։ Նա պահոցները հայտնել է GitHub-ի աջակցությանը, երկու շաբաթ պատասխան չի ստացել, իսկ մոտ մեկ ամիս անց տեղեկացվել է, որ դրանք հեռացվել են։
16 միլիոն push-ից մինչև 10 000 պահոց
Քարոզարշավի ծավալը գնահատելու համար նա դիմել է GH Archive-ին, որը հրապարակում է GitHub-ի բոլոր իրադարձությունները ըստ օրվա, և հինգ օրվա տվյալները զտել է push իրադարձություններով։ 16 միլիոն push-ից մոտ 3 000 պահոց թարմացվում էր ամեն մի քանի ժամը մեկ։ Քանի որ իրադարձությունները չեն նշում, թե որ ֆայլերն են փոխվել, յուրաքանչյուր թեկնածուի համար անհրաժեշտ էին GitHub API-ի լրացուցիչ հարցումներ՝ ժամում 5 000 հարցում մեկ token-ի համար սահմանաչափով։
Ֆիլտրերը՝ commit-ները մարդուց, ոչ բոտից, մեկ ամսից ավելի դադար մինչև վերջին commit-ը, և մեկից ավելի ներդրող, ցանկը կրճատեցին մինչև 14 պահոց։ Այդ արդյունքը սխալ էր. բոլոր 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 անունով։