Zastrupitev z artefakti v dejanjih GitHub uvaža zlonamerno programsko opremo prek cevovodov programske opreme

Izvorno vozlišče: 1769941

Napadalec, ki predloži spremembe v odprtokodno skladišče na GitHubu, lahko povzroči, da projekti programske opreme, ki vključujejo najnovejšo različico komponente, prevedejo posodobitve z zlonamerno kodo.

To je glede na varnostno podjetje za dobavno verigo programske opreme Legit Security, ki je v svetovanju, objavljenem 1. decembra, navedlo, da lahko ta slabost "zastrupitve z artefakti" vpliva na projekte programske opreme, ki uporabljajo GitHub Actions - storitev za avtomatizacijo razvojnih cevovodov - tako, da sprožijo postopek gradnje, ko je zaznana sprememba v odvisnosti programske opreme. 

Ranljivost ni teoretična: Legit Security je simulirala napad na projekt, ki upravlja Rust, zaradi česar se je projekt znova prevedel z uporabo prilagojene – in zlonamerne – različice priljubljene programske knjižnice GCC, je podjetje navedlo v svetovanju.

Težava verjetno vpliva na veliko število odprtokodnih projektov, ker bodo vzdrževalci običajno izvajali teste na prispevani kodi, preden sami dejansko analizirajo kodo, pravi Liav Caspi, glavni tehnološki direktor Legit Security.

"Danes je to pogost vzorec," pravi. »Številni odprtokodni projekti danes na zahtevo za spremembo izvedejo kup testov, da potrdijo zahtevo, ker vzdrževalec ne želi najprej pregledati kode. Namesto tega samodejno izvaja teste.«

Napad izkorišča avtomatiziran proces gradnje prek GitHub Actions. V primeru programskega jezika Rust bi lahko ranljivi vzorec napadalcu omogočil izvajanje kode na privilegiran način kot del razvojnega cevovoda, krajo skrivnosti repozitorija in morebitno poseganje v kodo, je dejal Legit Security.

"Preprosto povedano: v ranljivem delovnem toku lahko vsak uporabnik GitHub ustvari fork, ki zgradi artefakt," je podjetje navedeno v svojem svetovanju. »Nato vbrizgajte ta artefakt v prvotni proces gradnje repozitorija in spremenite njegov rezultat. To je še ena oblika napada na dobavno verigo programske opreme, kjer napadalec spremeni rezultat gradnje.«

Ranljivost omogoča napad, podoben napad z vstavljanjem zlonamerne programske opreme, ki je ciljal na CodeCov in prek programske opreme tega podjetja njegove stranke na nižji stopnji.

»Pomanjkanje izvorne implementacije GitHub za komunikacijo artefaktov med potekom dela je pripeljalo do tega, da so številni projekti in skupnost GitHub Actions razvili nevarne rešitve za komunikacijo med potekom dela in je ta grožnja postala zelo razširjena,« je v svetovanju navedeno Legit Security.

GitHub je potrdil težavo in plačal nagrado za informacije, medtem ko je Rust popravil svoj ranljivi cevovod, je izjavil Legit Security.

Vir: Legit Security

Dobavna veriga programske opreme potrebuje varnost

Ranljivost je zadnja varnostna težava, ki vpliva na dobavne verige programske opreme. Industrija in vladne agencije si vedno bolj prizadevajo okrepiti varnost odprtokodne programske opreme in programske opreme, ki je na voljo kot storitev.

Maja 2021 je na primer Bidnova administracija izdala izvršni ukaz o izboljšanju kibernetske varnosti države, zvezni predpis, ki med drugimi zahtevami nalaga vladi, da bo zahteva osnovne varnostne standarde za katero koli programsko opremo, ki jo kupi. Na strani zasebne industrije imata Google in Microsoft obljubil milijarde dolarjev za okrepitev varnosti v odprtokodnem ekosistemu, ki zagotavlja kodo, ki obsega več kot tri četrtine kodne baze povprečne aplikacije.

Logično, a ranljivo

Varnostna težava spada v razred težav, ki jih je težko najti, poznanih kot logične težave, ki vključujejo težave z dovoljenji, možnostjo vstavitve razcepljenih repozitorijev v cevovod in pomanjkanje razlikovanja med razcepljenimi in osnovnimi repozitoriji.

Ker projekti programske opreme pogosto uporabljajo avtomatizirane skripte za preverjanje predložitve kode, preden jih posredujejo vzdrževalcem, bodo zahteve za vleko izvedene prek avtomatizacije, preden jih kateri koli človek preveri za zlonamerno kodo. Medtem ko avtomatizacija prihrani čas, jo je treba obravnavati tudi kot način, da napadalci vstavijo zlonamerno kodo v cevovod.

"Ko se ukvarjate z odprtokodnim razvojem, je problem večji, ker sprejemate prispevke od kogar koli na svetu," pravi Caspi. "Izvajate stvari, ki jim ne morete zaupati."

GitHub je priznal težavo in razširil načine za izključitev prispevkov zunanjih sodelavcev iz samodejnega vstavljanja v cevovod dejanj. Podjetje posodobil svoja API-ja GetArtifact in ListArtifacts s ciljem zagotoviti več informacij za pomoč pri ugotavljanju, ali je artefaktu mogoče zaupati.

»Vsakdo, ki počne karkoli podobnega projektu Rust – zaupa vhodu tretje osebe – je še vedno ranljiv,« pravi Caspi. »To je logična težava. GitHub je pravkar olajšal pisanje varnejšega skripta.«

Časovni žig:

Več od Temno branje