Kiberdrošība

Gars mašīnā: Kā neredzamais unikods vajā GitHub piegādes ķēdes

Pētnieki atklāj 151 ļaunprātīgu GitHub pakotni, kas izmanto neredzamu unikodu koda slēpšanai. Uzziniet, kā darbojas šis piegādes ķēdes uzbrukums un kā aizsargāt savu kodu.
Gars mašīnā: Kā neredzamais unikods vajā GitHub piegādes ķēdes

Piegādes ķēžu drošība jau sen ir bijusi kaķa un peles spēle, taču nesens Aikido Security pētnieku atklājums liecina, ka pele ir atradusi veidu, kā kļūt neredzamai. Laikā no 2026. gada 3. marta līdz 9. martam sarežģīta kampaņa pārpludināja GitHub un citas lielākās krātuves ar 151 ļaunprātīgu pakotni. Atšķirībā no pagātnes tiposkvotinga (typosquatting) uzbrukumiem, kas balstījās uz to, ka lietotāji pieļauj kļūdu bibliotēkas nosaukumā, šīs pakotnes izmantoja neredzamas unikoda (Unicode) rakstzīmes, lai paslēptu ļaunprātīgu loģiku visiem redzamā vietā.

Šī tehnika atspoguļo nozīmīgu evolūciju tajā, kā uzbrucēji izmanto atvērtā pirmkoda ekosistēmām raksturīgo uzticēšanos. Izmantojot rakstzīmes, kuras cilvēka acs nevar redzēt, bet kuras kompilatori un interpreti apstrādā ar klīnisku precizitāti, draudu izpildītāji veiksmīgi apiet manuālo koda pārskatīšanu un tradicionālos drošības skenerus.

Neredzamības mehānika

Šī uzbrukuma pamatā ir unikoda sarežģītība — starptautiskais standarts rakstzīmju kodēšanai no gandrīz visām rakstības sistēmām. Lai gan lielākā daļa no mums domā par unikodu emocijzīmju vai diakritisko zīmju kontekstā, standarts ietver arī dažādas "nedrukājamās" rakstzīmes. Tās ietver nulles platuma atstarpes, virziena maiņas zīmes un savienotājus, kas ekrānā neaizņem vizuālu vietu.

Kad izstrādātājs pārskata izmaiņu pieprasījumu (pull request) vai pārbauda bibliotēkas pirmkodu, viņa IDE vai teksta redaktors parasti šīs rakstzīmes neattēlo vispār. Tomēr Python interpretam vai JavaScript dzinējam šīs rakstzīmes ir atšķirīgi datu punkti. Uzbrucējs var ievietot ļaunprātīgu kodu virknē vai komentārā, kas cilvēkam izskatās tukšs, bet izpilda komandu, kad kods tiek palaists.

Piemēram, uzbrucējs varētu izmantot "Right-to-Left Override" (U+202E) rakstzīmi. Šī rakstzīme ir izstrādāta, lai atbalstītu tādas valodas kā arābu vai ivritu, apgriežot tai sekojošā teksta virzienu. Ļaunprātīgā kontekstā to var izmantot, lai fails ar nosaukumu annoying_executable.exe.txt izskatītos kā annoying_txt.exe, apmānot lietotāju palaist programmu, kuru viņš uzskata par vienkāršu teksta failu.

Kāpēc tradicionālā aizsardzība ir apmulsusi

Gandrīz desmit gadus piegādes ķēžu drošība ir koncentrējusies uz "tiposkvotingu" un "atkarību sajaukšanu" (dependency confusion). Drošības rīki tika izveidoti, lai atzīmētu pakotnes ar tādiem nosaukumiem kā requesst nevis requests. Šie rīki lieliski prot atpazīt zināmas sliktas rakstzīmju virknes, taču tie saskaras ar grūtībām, kad runa ir par to, kā tur nav.

Daudzi mantotie statiskās analīzes drošības testēšanas (SAST) rīki paļaujas uz regulārajām izteiksmēm (regex), lai atrastu ievainojamības. Ja regex nav īpaši konfigurēts meklēt nedrukājamos unikoda diapazonus, tas tiem vienkārši pārleks pāri. Turklāt, tā kā šīs rakstzīmes ir derīgs unikods, tās ne vienmēr izraisa "bojāta faila" brīdinājumus. Kods joprojām ir sintaktiski pareizs, pat ja tā darbība ir slēpta.

Piegādes ķēžu uzbrukumu vektoru salīdzinājums

Lai izprastu šī jaunā viļņa nopietnību, ir noderīgi to salīdzināt ar tradicionālākām krātuvju saindēšanas metodēm.

Uzbrukuma metode Galvenais mehānisms Redzamība cilvēkam Noteikšanas sarežģītība
Tiposkvotings Nepareizi uzrakstīti pakotņu nosaukumi Augsta (ja ieskatās uzmanīgi) Zema
Atkarību sajaukšana Iekšējo vs. publisko nosaukumu izmantošana Zema Vidēja
Neredzamais unikods Nedrukājamas rakstzīmes pirmkodā Nulle Augsta
Konta pārņemšana Uzturētāja akreditācijas datu nozagšana Nav Ļoti augsta

2026. gada marta incidents

151 pakotne, ko identificēja Aikido Security, nebija tikai koncepcijas pierādījumi; tie bija aktīvi mēģinājumi ievākt vides mainīgos, SSH atslēgas un mākoņpakalpojumu akreditācijas datus no izstrādātāju mašīnām. Līdz brīdim, kad pētnieki atzīmēja kampaņu, dažas no šīm pakotnēm jau bija integrētas automatizētos būvēšanas procesos, uzsverot ātrumu, kādā šie draudi izplatās.

Tas, kas padara šo konkrēto kampaņu ievērojamu, ir milzīgais sešu dienu laikā izlaisto pakotņu apjoms. Tas liecina par augstu automatizācijas pakāpi no uzbrucēja puses, visticamāk, izmantojot skriptus, lai ģenerētu populāru bibliotēku "ēnu" versijas un injicētu neredzamo kodu parastās utilītprogrammās.

Kā aizsargāt savu konveijeru

Uzbrucējiem pārejot uz neredzamiem draudiem, izstrādātājiem un DevOps inženieriem ir jāpielāgo sava aizsardzības stratēģija. Paļaušanās uz vizuālu pārbaudi vairs nav pietiekama. Šeit ir praktiski soļi, lai mazinātu neredzamā koda injekcijas risku:

  • Iespējojiet unikoda brīdinājumus IDE: Mūsdienu redaktoriem, piemēram, VS Code un IntelliJ, ir spraudņi vai vietējie iestatījumi, kas izceļ "neskaidras" vai nedrukājamas rakstzīmes. Pārliecinieties, ka tie ir ieslēgti visiem jūsu organizācijā.
  • Ieviesiet linterus ar unikoda pārbaudēm: Izmantojiet linterus, kas īpaši atzīmē ne-ASCII rakstzīmes pirmkodā, ja vien tās nav skaidri atļautas (piemēram, lokalizācijas failos).
  • Izmantojiet fiksācijas failus (Lockfiles): Vienmēr izmantojiet package-lock.json, poetry.lock vai requirements.txt ar specifiskiem hešiem. Tas neļauj jūsu būvēšanas sistēmai automātiski ielādēt ļaunprātīgu atkarības "jaunāko" versiju.
  • Auditējiet savus CI/CD žurnālus: Meklējiet negaidītus tīkla izejošos izsaukumus būvēšanas procesa laikā. Ļaunprātīgas pakotnes bieži mēģina "zvanīt uz mājām" ar nozagtiem akreditācijas datiem tūlīt pēc instalēšanas.

Ceļš uz priekšu

Šo 151 pakotņu atklāšana ir skarbs atgādinājums, ka atvērtā pirmkoda piegādes ķēde ir dzīva ekosistēma ar mainīgiem plēsējiem. Pāreja uz neredzamiem unikoda uzbrukumiem rāda, ka draudu izpildītāji attālinās no sociālās inženierijas un pievēršas tehniskai slēpšanai, kas izmanto cilvēka uztveres robežas.

Virzoties tālāk 2026. gadā, nozarei ir jāpāriet uz "Zero Trust" modeli attiecībā uz atkarībām. Mēs vairs nevaram pieņemt, ka kods ir drošs tikai tāpēc, ka tas ekrānā izskatās tīrs. Pārbaudei jābūt algoritmiski pamatotai, automatizētai un pietiekami dziļai, lai saredzētu to, ko cilvēka acs nespēj.

Avoti

  • Aikido Security Research Blog: "The Rise of Invisible Malicious Packages"
  • Unicode Consortium: "UTR #36: Unicode Security Considerations"
  • GitHub Security Advisory Database
  • NIST Special Publication 800-204: "Security Strategies for Microservices-based Applications"
bg
bg
bg

Uz tikšanos otrā pusē.

Mūsu end-to-end šifrētais e-pasta un mākoņdatu glabāšanas risinājums nodrošina visefektīvākos līdzekļus drošai datu apmaiņai, garantējot jūsu datu drošību un konfidencialitāti.

/ Izveidot bezmaksas kontu