At Xygeni, gjatë vitit të kaluar kemi qenë të zënë duke zbatuar një sistem gjithëpërfshirës që monitoron regjistrat publikë të paketave me burim të hapur për aktivitet të dyshimtë ose kod të natyrshëm keqdashës.
Kjo infrastrukturë na lejon të analizojmë në kohë reale të gjitha paketat e publikuara çdo ditë. Gjithashtu, na lejon të monitorojmë sjelljet anormale të përdoruesve.
Ndërsa prania e kodit të dëmshëm në regjistrat e paketave është e njohur mirë, ka edhe sjellje të tjera të çuditshme ose të pazakonta që kalojnë plotësisht pa u vënë re nga përdoruesit e rregullt të këtyre regjistrave. Edhe për ata prej nesh që i ndjekin me kujdes, nuk është e lehtë të gjesh një arsye ose shpjegim për një sjellje të tillë.
Ajo që karakterizon ekipin e Xygeni është këmbëngulja jonë kur përballemi me një problem, kështu që ne u thelluam në këtë çështje.
E gjitha filloi me një rritje të statistikave
Siç e përmenda edhe më parë, si pjesë e infrastrukturës sonë, ne monitorojmë shumë metrika aktiviteti në regjistrat publikë të paketave me burim të hapur.
Në ditët e fundit të marsit, kolegia ime e punës, Carmen, dha alarmin. Filluam të vëzhgonim një devijim të konsiderueshëm në numri i paketave të publikuara në NPM. Pas një shqyrtimi fillestar, zbuluam se ky devijim ishte kryesisht për shkak të një numri relativisht të vogël përdoruesish, shkalla e publikimit të paketave të të cilëve ishte rritur papritur.
Kjo na shtyu të rishikonim procesin tonë dhe të dhënat e lidhura me të brenda platformës. Për fat të mirë, rishikimi ynë përcaktoi se të dhënat dukeshin të sakta, por kjo ishte gjithashtu disi e çuditshme!
Pas inspektimeve të mëtejshme, zbuluam se këto paketa kishin disa karakteristika të përbashkëta:
- Botuesit ishin përdorues të krijuar rishtas, jo më shumë se një ose dy muajsh të vjetër.
- Paketat kishin emra në dukje të rastësishëm, ndoshta të gjeneruar duke përdorur një fjalor. Mund të gjejmë emra paketash me emra të çuditshëm si p.sh. enormous_mite-smiletea, erick-mangut94-sukiwir, exotic_reptile-appteadev or obvious_tuna-appteadevDo të përfshijmë një shtojcë me disa shembuj të aseteve që kemi gjetur.
- Përmbajtja e këtyre paketave ishte shumë e ngjashme, shpesh e njëjtë.
Në këtë kontekst, vumë re se një nga paketat përfshinte një skript Python, ndoshta rastësisht, i cili duket se përdoret për të publikuar paketat automatikisht.
Zbulimi i rrjetës
Aktiviteti i botimit për disa nga këta botues gjatë muajit të fundit është kryer sipas grafikut kronologjik të mëposhtëm:
Ja statistikat e plota në lidhje me këtë ngjarje që mund të ndajmë:
Asgjë relevante nuk doli nga shqyrtimi individual i disa paketave të lidhura me këta përdorues. Kjo na shtyu të analizonim pamjen e përgjithshme të të gjithëve, duke kërkuar modele që mund të jepnin të dhëna rreth këtij suksesi.
Në fund të fundit, kemi një grusht të mirë paketash për të analizuar:
Këto janë pikat kryesore që mund të nxjerrim në pah nga analiza:
- Shumë nga paketat NPM janë të ndërlidhura. Disa prej tyre referohen si varësi të të tjerave.
- Pavarësisht se janë paketa të çuditshme dhe ndoshta askush nuk e di për ekzistencën e tyre, disa prej tyre kanë shumë shkarkime javore. Është e vështirë të pranohet që një përdorues normal mund të dëshirojë të shkarkojë paketa si 0mc03esisd.
- Disa kanë depo të lidhura. Ndonjëherë pronarët e këtyre depove duken si llogari të rreme, të ngjashme me ato në npm.
Shënim: Përdoruesit ngarkojnë paketa shtesë në valë, kështu që të dhënat e ofruara mund të ndryshojnë pak.
Ky është një shembull i njërit prej depove përkatëse. Ai përmban kodin e disa prej paketave të publikuara. Gjithashtu disa skedarë të tjerë, si një çaj.yaml fotografi.
Takimi me aktorin/aktorët
Nëse kjo është vepër e një autori të vetëm apo e disa bashkëpunëtorëve është e vështirë të përcaktohet. Megjithatë, ne kemi disa prova që e ngushtojnë origjinën e këtij aktiviteti:
- Gjuha: Disa komente në kod janë në indonezisht.
- Vendndodhja: Disa pronarë të depove të lidhura tregojnë vendndodhjen e tyre në Indonezi.
- Vendndodhja që mund të identifikojmë përmes meta të dhënave të aktivitetit në GitHub tregon gjithashtu për në Indonezi.
Çaj në orën pesë
Duke qenë se Indonezia ishte një koloni britanike, do të ishte ideale për të pirë çaj këtu. Megjithatë, në këtë rast, është një lloj çaji mjaft i veçantë.
Ju kujtohet çaj.yaml skedarët që pamë në fillim? Në atë kohë, nuk e treguam përmbajtjen e tyre, por dukej kështu:
Këto skedarë duket se kanë të bëjnë me Protokolli i çajitPor çfarë është saktësisht? Ne arritëm https://tea.xyz/blog/250k-grant-for-open-source-developers, që flet për qëllimin:
Tea po e trondit botën dixhitale duke adresuar çështjen e gjatë të kompensimit të pamjaftueshëm për zhvilluesit e softuerëve me burim të hapur. Zgjidhja e këtij problemi është më urgjente se kurrë, prandaj kemi vendosur të ndajmë 250 mijë dollarë në grante përpara lançimit të protokollit. Kjo fazë fillestare synon të mbështesë mirëmbajtësit e projekteve me burim të hapur që kanë një ndikim material në ekosistemin e softuerëve me burim të hapur dhe një teaRank më të madh se 30 përpara rrjetit të stimuluar të testimit të tea Protocol.
Sipas dokumenteve të protokollit të çajit:
"Që një projekt të regjistrohet në Protokollin e çajit, kërkohet një skedar tea.yaml i cili shërben si statut i projektit për të rregulluar numrin e kontribuesve dhe numrin e votave të nevojshme për të kryer veprime të caktuara."
Pasi hymë në rrjetin e çajit, u përpoqëm të gjenim një nga paketat që dyshojmë se po i fryhet reputacioni. E gjetëm:
Kjo duket se shpjegon atë që po ndodh këtu: Disa përdorues i fryjnë projektet e tyre me burim të hapur me popullaritet fiktiv në mënyrë që të rrëmbejnë teaRank dhe të përfitojnë nga përfitimet e ofruara nga shoqata e çajit. Në fund të fundit, paratë janë forca më e vjetër lëvizëse, së bashku me seksin.
Përfundimi dhe mendimet përfundimtare
Edhe pse nuk janë gjetur prova të kodit keqdashës në këto paketa NPM, dhe ato me shumë mundësi nuk kanë pasur për qëllim që askush t'i përdorë ato, ato mund të shkelin disa Kushte Shërbimi (TOS) të NPM, GitHub ose shoqatës së çajit. Megjithatë, kjo bie jashtë fushëveprimit të punës sonë (ata janë njoftuar megjithatë dhe do të ndërmerren veprimet që ata i konsiderojnë të përshtatshme). Përdorimi abuziv i këtyre platformave do të na prekë ne dhe organizatat tona në një farë mënyre.
Ajo që është e qartë është se çdo paketë me burim të hapur në dukje e padëmshme mund të përmbajë sjellje të vështira për t'u kuptuar pa informacion të plotë kontekstual.
Si zhvillues, e kam të vështirë të kontrolloj manualisht të gjitha paketat me burim të hapur të përdorura në aplikacionet që zhvillojmë dhe mirëmbajmë me një nivel të caktuar sigurie. Pa ndihmën e një mjeti që automatizon këtë kontroll, detyra mund t'u marrë ekipeve tona orë të panumërta.
Gjithmonë ekziston mundësia për të hedhur një sy tjetër, duke besuar se sferat me burim të hapur janë vende të sigurta. Për fat të mirë, besoj se kjo mendësi nuk është shumë e përhapur sot; ky rast ka qenë praktikisht i padëmshëm, por kohët e fundit përjetuam një incident shumë më serioz me XZ Backder, dhe nuk ka qenë i vetmi.
Nëse e keni lexuar deri këtu, shpresoj se i keni shijuar të gjitha hollësitë e kësaj ngjarjeje të çuditshme. Mos harroni të kaloni disa minuta duke shqyrtuar se çfarë mund të kontribuojë Xygeni në sigurinë e organizatës suaj.
Shtojca: Renditni asetet përkatëse që do të përfshihen në artikullin përfundimtar
NPM përdoruesit më të rëndësishëm bazuar në numrin e paketave të publikuara: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17
Një mostër e vogël e paketave të tyre të lidhura: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, dopon, kellymanteasproject.
Disa nga depot e lidhura me GitHub që përmbajnë skedarë tea.yml:





