Tiekimo grandinės saugumas ilgą laiką buvo katės ir pelės žaidimas, tačiau nesenas „Aikido Security“ tyrėjų atradimas rodo, kad pelė rado būdą tapti nematoma. 2026 m. kovo 3–9 dienomis sudėtinga kampanija užplūdo „GitHub“ ir kitas pagrindines saugyklas 151 kenkėjišku paketu. Kitaip nei praeities „typosquatting“ atakos, kurios rėmėsi vartotojų daromomis klaidomis rašant bibliotekos pavadinimą, šie paketai naudojo nematomus „Unicode“ simbolius, kad paslėptų kenkėjišką logiką visų akivaizdoje.
Ši technika rodo reikšmingą evoliuciją tame, kaip užpuolikai naudojasi pasitikėjimu, būdingu atvirojo kodo ekosistemoms. Pasitelkdami simbolius, kurių žmogaus akis nemato, bet kuriuos kompiliatoriai ir interpretatoriai apdoroja itin tiksliai, grėsmių sukėlėjai sėkmingai apeina rankines kodo peržiūras ir tradicinius saugos skenerius.
Šios atakos esmė yra „Unicode“ sudėtingumas – tarptautinis standartas, skirtas koduoti simbolius iš beveik visų rašto sistemų. Nors dauguma iš mūsų „Unicode“ įsivaizduojame kaip jaustukus ar raides su diakritiniais ženklais, standartas taip pat apima įvairius „nespausdinamus“ simbolius. Tai nulinio pločio tarpai, krypties keitimo ženklai ir jungiamieji simboliai, kurie ekrane neužima jokios vizualios vietos.
Kai programuotojas peržiūri pakeitimų užklausą (pull request) arba tikrina bibliotekos pradinį kodą, jų IDE arba teksto redaktorius paprastai šių simbolių visai neatvaizduoja. Tačiau „Python“ interpretatoriui ar „JavaScript“ varikliui šie simboliai yra atskiri duomenų taškai. Užpuolikas gali įterpti kenkėjišką turinį eilutėje arba komentare, kuris žmogui atrodo tuščias, tačiau vykdant kodą paleidžia komandą.
Pavyzdžiui, užpuolikas gali naudoti „Right-to-Left Override“ (U+202E) simbolį. Šis simbolis skirtas palaikyti tokias kalbas kaip arabų ar hebrajų, apverčiant po jo einančio teksto kryptį. Kenkėjiškame kontekste jis gali būti naudojamas tam, kad failas pavadinimu annoying_executable.exe.txt atrodytų kaip annoying_txt.exe, taip apgaunant vartotoją paleisti programą, kurią jis laiko paprastu tekstiniu failu.
Beveik dešimtmetį tiekimo grandinės saugumas buvo sutelktas į „typosquatting“ ir „priklausomybių painiavą“ (dependency confusion). Saugumo įrankiai buvo sukurti žymėti paketus, kurių pavadinimai panašūs į, pavyzdžiui, requesst vietoj requests. Šie įrankiai puikiai atpažįsta žinomus blogus šablonus, tačiau jiems sunku susidoroti su tuo, ko nėra.
Daugelis senųjų statinės analizės saugumo testavimo (SAST) įrankių remiasi reguliariosiomis išraiškomis (regex), kad surastų pažeidžiamumus. Jei regex nėra specialiai sukonfigūruotas ieškoti nespausdinamų „Unicode“ diapazonų, jis juos tiesiog praleis. Be to, kadangi šie simboliai yra galiojantys „Unicode“ ženklai, jie nebūtinai sukelia „sugadinto failo“ įspėjimus. Kodas išlieka sintaksiškai teisingas, net jei jo elgsena yra paslėpta.
Norint suprasti šios naujos bangos rimtumą, naudinga ją palyginti su tradiciniais saugyklų nuodijimo metodais.
| Atakos metodas | Pagrindinis mechanizmas | Matomumas žmonėms | Aptikimo sudėtingumas |
|---|---|---|---|
| Typosquatting | Klaidingai parašyti paketų pavadinimai | Didelis (atidžiai žiūrint) | Mažas |
| Priklausomybių painiava | Naudojimasis vidiniais ir viešaisiais pavadinimais | Mažas | Vidutinis |
| Nematomas Unicode | Nespausdinami simboliai pradiniame kode | Nulinis | Didelis |
| Paskyros perėmimas | Prižiūrėtojo prisijungimo duomenų vagystė | Nėra | Labai didelis |
„Aikido Security“ identifikuoti 151 paketai nebuvo tik koncepcijos įrodymai; tai buvo aktyvūs bandymai surinkti aplinkos kintamuosius, SSH raktus ir debesijos prisijungimo duomenis iš programuotojų mašinų. Kol tyrėjai pažymėjo kampaniją, kai kurie iš šių paketų jau buvo integruoti į automatizuotas kūrimo linijas, o tai pabrėžia greitį, kuriuo šios grėsmės plinta.
Ši konkreti kampanija išsiskiria didžiuliu paketų kiekiu, išleistu per šešių dienų laikotarpį. Tai rodo aukštą automatizavimo lygį užpuoliko pusėje, tikriausiai naudojant skriptus populiarių bibliotekų „šešėlinėms“ versijoms kurti ir nematomam turiniui įterpti į įprastas pagalbines funkcijas.
Užpuolikams pereinant prie nematomų grėsmių, programuotojai ir „DevOps“ inžinieriai privalo pritaikyti savo gynybos poziciją. Pasikliauti vizualia apžiūra nebeužtenka. Štai praktiniai žingsniai, kaip sumažinti nematomų kodo įterpimų riziką:
package-lock.json, poetry.lock arba requirements.txt su konkrečiomis maišos reikšmėmis. Tai neleidžia jūsų kūrimo sistemai automatiškai įtraukti kenkėjiškos „naujausios“ priklausomybės versijos.Šių 151 paketų atradimas yra rimtas priminimas, kad atvirojo kodo tiekimo grandinė yra gyva ekosistema su evoliucionuojančiais plėšrūnais. Perėjimas prie nematomų „Unicode“ atakų rodo, kad grėsmių sukėlėjai tolsta nuo socialinės inžinerijos ir pereina prie techninio maskavimo, kuris išnaudoja žmogaus suvokimo ribas.
Žengiant toliau į 2026 m., pramonė privalo pereiti prie „nulinio pasitikėjimo“ (Zero Trust) modelio priklausomybėms. Nebegalime daryti prielaidos, kad kodas yra saugus vien todėl, kad ekrane jis atrodo švarus. Patikra turi būti algoritminė, automatizuota ir pakankamai gili, kad pamatytų tai, ko žmogaus akis negali.



Pašto ir debesies saugojimo sprendimas suteikia galingiausias saugaus keitimosi duomenimis priemones, užtikrinančias jūsų duomenų saugumą ir privatumą.
/ Sukurti nemokamą paskyrą