Šī ir pirmā epizode rakstu sērijā par visizplatītākajiem programmatūras piegādes ķēdes uzbrukumu veidiem: tiem, kas (ļaunprātīgi) izmanto publisku programmatūras komponentu reģistru, kas paredzēts atvērtā pirmkoda projekti lai augšupielādētu artefaktus, kurus varētu koplietot ar citiem lietotājiem. Kad ļaundari tur publicē ļaunprātīgu programmatūru, izmantojot reģistru kā līdzekli ļaunprogrammatūras izplatīšanai, notiek piegādes ķēdes uzbrukums, kad cietušās organizācijas instalē vai palaiž inficēto programmatūras komponentu.
Lai vienkāršotu diskusiju, mēs runāsim par programmatūras pakotnes:, trešo pušu izstrādāti komponenti iepakotā veidā. Tas ietver ne tikai komponentus, ko izmanto pakotņu pārvaldnieki, piemēram, NPM vai Poetry, bet arī operētājsistēmas komponenti ieskaitot bibliotēkas un izpildāmos bināros failus, konteineru attēli, un virtuālās mašīnas vai instrumentu paplašinājumi izstrādes, veidošanas un izvietošanas rīkiem. Mēs esam redzējuši ļaunprātīgas pakotnes visur. Kibernoziedzniekiem tas netraucē: viņi ir sajūsmā par mūsdienu programmatūras infrastruktūru piedāvātajām alternatīvām un izmanto reģistru un rīku, kas vislabāk atbilst viņu nodomam. Tāpēc, lūdzu, atcerieties, ka programmatūras pakotnes ir saīsinājums no konteineru attēliem, binārajām pakotnēm, atvērtā pirmkoda krātuvēm un visu veidu paplašinājumiem vai spraudņiem (IDE, CI/CD sistēmas, izveides rīki). Visas tiek regulāri pakļautas uzbrukumiem.
Seriālam būs 5 sērijas:
- Kāda ir problēma ar atvērtā pirmkoda pakotnēm? Šī ir šīs ziņas tēma. Kāpēc visu veidu noziedznieki publicē ļaunprātīgas pakotnes? Kāpēc man par to būtu jāuztraucas?
- Ļaunprātīgu pakotņu anatomija: Kādas ir tendences? Šajā epizodē mēs pievēršamies apdraudējumam, ko mēs uzraugām ar savu MEW sistēmu dienu no dienas. Liela fona trokšņa dēļ, ko rada liels skaits ļaunprātīgu pakešu, kas izmanto typosquatting vai atkarību apjukumu, mazāka daļa uzbrukumu ir daudz mānīgāki un rada lielāku risku. Kā nesenā pagātnē ir mainījusies ļaundaru uzvedība attiecībā uz operētājsistēmu? Kādi ir skaitļi? Kāda ir izmantotā taktika, metodes un procedūras, un kādas kaitīgās darbības ir novērotas?
- Aizsardzība pret atvērtā pirmkoda ļaunprātīgām pakotnēm: kas darbojas (nedarbojas)Lielākajai daļai drošību apzinošu profesionāļu ir idejas par to, kā rīkoties ar šo apdraudējumu. Esam dzirdējuši drošības vadītājus bez vilcināšanās sakām, ka SCA Rīki jau norāda, kad pakotnes versija ir ļaunprogrammatūra. Vai arī to, ka tie ir atkarīgi no labi zināmiem, augsti novērtētiem programmatūras komponentiem, kur jebkura ļaunprogrammatūra tiktu nekavējoties atklāta un noņemta. Tie norāda, ka tie izmanto atvērtas nelielas/ielāpu versijas, lai automātiski iegūtu ievainojamību labojumus, un tas ir pareizais, ieteicamais veids, kā samazināt atvērtā pirmkoda atkarību risku, ievērojot principu “ielāpojiet agri, ielāpojiet bieži”. Šajā epizodē mēs pārskatīsim, kāpēc šīs idejas ir kļūdainas un kā šādi maldīgi priekšstati veicina šī uzbrukuma mehānisma popularitāti un milzīgu risku, ar ko saskaras organizācijas. Noslēgumā mēs aplūkosim, kas darbojas, un kādas ir nepieciešamās pūles un resursi.
- Atvērtā pirmkoda ļaunprātīgās pakotnes: Xygeni pieejaŠajā epizodē mēs iepazīstinām ar Xygeni stratēģiju mūsu ļaunprogrammatūras agrīnās brīdināšanas (MEW) sistēmai. Kā šī daudzpakāpju sistēma darbojas reāllaikā, kad tiek publicēta jauna pakotnes versija, kā pierādījumi tiek iegūti no dažādiem avotiem, kā tiek veikta triāža, kādus klasifikācijas kritērijus mēs ievērojam un kāpēc joprojām ir nepieciešama manuāla analīze, lai apstiprinātu ļaunprātīgas pakotnes kandidāta būtību? Kā mūsu iekšējo un reģistra komandu atsauksmes palīdz sistēmai mācīties no iepriekš apkopotajiem pierādījumiem, lai samazinātu viltus pozitīvo rezultātu skaitu līdz minimumam. Un mēs paskaidrosim, kā mēs palīdzam NPM, GitHub, PyPI un citām galvenajām infrastruktūrām atvērtā pirmkoda atvērtā pirmkoda ekosistēmās samazināt kavēšanās laiku..
- Atvērtā pirmkoda izmantošana: ko sagaidīt no ļaundariemSērija noslēdzas, pievēršoties jaunākajām darbībām, ko pretinieki veic, lai uzbrukumus padarītu nemanāmākus, grūtāk atklājamus, mērķtiecīgākus pret konkrētām nozarēm un iegūtu lielāku labumu no šīs uzbrukumu klases. Vai izspiedējvīrusu uzbrukumi tiks veikti, izmantojot šo līdzekli? Kā ļaundari izmanto mākslīgā intelekta rīkus, lai piegādātu sarežģītākas ļaunprātīgas paketes? Vai populārākie projekti ir apdraudēti? Tas ir paredzēts, lai sniegtu lasītājiem priekšstatu par šo bruņošanās sacensību un to, ko sagaidīt īstermiņā (2024. gada otrajā pusē) un vidējā termiņā (2025. gadā). Mēs uzzināsim, kā tādi uzbrukumi kā nesenie... XZ-Utils aizmugurējā durvis, vai uzbrukums, kurā dzīvo no zemes robežām elektronu veidotājs 2024. gada martā notikušie notikumi liecina, ka mums jābūt modriem attiecībā uz pretinieku attīstību.
Atvērsim skatuvi ar pirmo epizodi: Kas notiek ar ļaunprātīgām atvērtā pirmkoda atvērtā pirmkoda pakotnēm?
Kāda ir problēma ar atvērtā pirmkoda pakotnēm?
Pēdējos gados visu veidu pārkāpēji ir izmantojuši atvērtā pirmkoda programmatūras reģistrus, lai izplatītu ļaunprātīgu rīcību. Šīs darbības ir tikpat senas kā atvērtā pirmkoda programmatūra, taču to biežums pēdējo trīs gadu laikā ir eksplodējis.
Ļaunprātīgu komponentu publicēšana publiskajos reģistros (uz atkarību balstīti uzbrukumi) ir asimetriska partizānu karadarbība, ko apdraudējumu dalībnieki izmanto ļaunprogrammatūras izplatīšanai, izmantojot organizāciju uzticību atvērtā pirmkoda komponentiem, kas nāk no nezināmiem izstrādātājiem (atcerieties atkarība xkcd komikss?). Tā kā jūs uzticaties pakotnēm un neiebilstat manuāli pārskatīt pakotņu saturu un to atkarības, šie uzbrukumi ir ārkārtīgi efektīvi. Un asimetrija rodas tāpēc, ka tos var lielā mērā automatizēt, un ļaundariem nav tieši jāmijiedarbojas ar upuri. Viņi vienkārši augšupielādē pakotni publiskajā reģistrā un ļauj tai darboties.
Ļaunprātīgas pakotnes 2022. gadā pieauga sešas reizes, un 2023. gadā tas turpināja pieaugt 2.5 reizes. Pagājušajā gadā tika konstatēti veseli 245 000 ļaunprātīgu pakotņu, kas ir vairāk nekā divas reizes vairāk nekā iepriekšējo gadu kopējais skaits. Tas ir eksponenciāls pieaugums! No simtiem pakotņu noņemšanas kā apstiprinātas ļaunprogrammatūras 2021. gadā un tūkstošiem 2022. gadā mēs redzējām daudz vairāk fona “trokšņa” 2023. gadā, ar līdzīgu tempu kā šogad. Un šajā fonā, ko izraisīja nepieredzējuši kibernoziedznieki, kas seko “mazākās pretestības ceļam”, neliela daļa augsta līmeņa uzbrukumu sasniedza virsrakstus pat vispārējos plašsaziņas līdzekļos.
Kāpēc šī ir tik liela problēma? Pastāv pārmērīga uzticēšanās visā ķēdē. Atvērtā pirmkoda programmatūra tiek izplatīta kopā ar tās pirmkodu un izlaista saskaņā ar noteiktu licenci. Jā, ikviens var pārbaudīt pirmkodu; bet kurš to dara kopumā? Kas pēc programmatūras pārbaudes, ka tajā nav ļaunprogrammatūras, veido programmatūru no pirmkodiem? Kas pirms iepakotās komponentes (pazīstamas arī kā pakete) lejup pa pakotņu pārvaldnieku vai veidošanas rīku, pārliecinās, ka pakotne nav pilna ar ļaunprogrammatūru un atbilst paredzētajam pirmkodam, no kura tai vajadzētu nākt?
Kāpēc infrastruktūra pieļauj tik vieglus uzbrukumus?
Pakotņu reģistri ir atvērti, bieži vien pieprasot minimālu izdevēja identitātes verifikāciju. “Ikviens ir laipni aicināts publicēt savu programmatūru šeit!” Uzbrucējiem latiņa ir zema: viņi izmanto vienreizējās e-pasta adreses un vienreizējās lietošanas GitHubgithub kontus, lai īsās, pikšķerēšanas tipa kampaņās izveidotu simtiem ļaunprātīgu pakotņu. Tikai mērķtiecīgām kampaņām ir nepieciešama augstāka izsmalcinātība: mēs redzējām pat uzticamas GitHub pirmkoda krātuves izveidi ar daudzām zvaigznēm un commitno vairākiem viltus līdzautoriem un citiem popularitātes un uzturēšanas rādītājiem. Iegūšana zvaigžņu vērotāji un reputācija no viltus ieguldījumiem nav grūti automatizēt. Mēs novērojām ļaunprātīgu izmantošanu visu veidu atvērtās programmatūras infrastruktūrās, ne tikai ļaunprogrammatūrā, piemēram, tējas protokola incidents.
Pakotņu pārvaldnieki tika izstrādāti lietošanas ērtumam, nevis drošībaiTie var palaist pirms un pēc instalēšanas skriptus (dažreiz ir nepieciešams kompilēt bibliotēkas vietējo kodu). Tāpat, Pakešu vadītāji instalē pakotnes no vairākiem avotiem, un dažreiz pēc noklusējuma tiek izmantoti publiskie reģistri. Viņi nepārbaudīja neatbilstību starp metadatiem publicēšanas pieprasījumā un metadatiem pašā pakotnē.
Atkarības ir ligzdotas un veido grafu. Dažās ekosistēmās, piemēram, Node (JavaScript), sīkgraudainas atkarības uzkrājas simtos vai tūkstošos. Viena lieta ir stingri kontrolēt tiešās atkarības, ko deklarē mani programmatūras projekti, bet... tranzitīvās atkarības ir grūtāk kontrolējamas. Atvērtā pirmkoda programmatūra sekoja principam “manu draugu draugi ir mani draugi”. Brālība ir norma mežonīgajos Tālajos Austrumos! Apdraudējumu izpildītāji to zina un dziļi slēpj ļaunprātīgo rīcību neskaidrās atkarībās, kas bieži vien nav zināmas. Tā bija ar… notikumu straume incidents, kas vērsts pret Copay maks.
Lūk, kā atvērtā pirmkoda programmatūra ir darbojusies kopš tās pirmsākumiem. Tas daudz nemainīsies. Daži pakotņu reģistri labākajā gadījumā pieprasa divfaktoru autentifikāciju un bieži vien tikai populārākajām pakotnēm. Daži reģistri nodrošina darbības jomas — pārbaudītas organizācijas īpašumā esošu nosaukumvietu, bet... traģiski citi to neatbalsta (PyPI) vai padara to par neobligātu (NPM). Interesanti atzīmēt, ka pat a vienkārša skrīninga shēma (pamatojoties uz DNS vai GitHub repozitorija/organizācijas atbilstību grupas ID) un veicot PGP paraksti ir obligāti visiem artefaktiem, izņemot kontrolsummas, novērš lielāko daļu "trokšņa", kas izraisa drukas kļūdas, piemēram, ļaunprātīgas pakotnes, un ierobežo lielu daļu no atkarības apjukumsIr iespējami sarežģīti uzbrukumi, taču tie ir daudz grūtāki, un tikai daži no tiem, piemēram, com.github.codingandcoding:maven-compiler-plugin pazīstams ar Maven Central. Un ne visi Maven reģistri ievēro vienu un to pašu praksi!
Pakotņu pārvaldnieku drošības kontrole var apgrūtināt, bet netraucē atkarību uzbrukumus. Daudzfaktoru autentifikācijas problēma ir tāda, ka automatizācijai kontiem tiek ģenerēti atvasināti akreditācijas dati, piemēram, piekļuves žetoni vai APIapi atslēgas, lai tos izmantotu APIapi izsaukumos, kas veikti no automatizācijas skriptiem, bez interaktīva lietotāja, kas nodrošina otro faktoru. Daudzfaktoru autentifikācija ir laba, lai aizsargātu lietotāju kontus no paroļu noplūdes, taču ģenerētie piekļuves žetoni vai APIapi atslēgas ir jāaizsargā, kamēr tie ir aktīvi, pretējā gadījumā pretinieki uzdosies par to īpašnieku. Liela daļa uz pakotnēm balstītu piegādes ķēdes kampaņu sākas ar nopludinātu atslēgu/žetonu. Atcerieties tikai tādus incidentus kā virsgrāmata, 3CX, un daudzās citās, kur neinteraktīvas akreditācijas dati vispirms tika nozagti sākotnējā ielaušanās laikā, lai sāktu piegādes ķēdes uzbrukumu.
Reakcija uz šo draudu nebija pietiekami spēcīga. Trešajā epizodē mēs pievērsīsimies tam, kas izdevās un kas cieta neveiksmi. Nozarei ir jāstrādā kopīgi, lai… standards, procesi, izglītība un rīki, lai mazinātu riskus globālajās piegādes ķēdēs. Šī nav problēma, ko viena organizācija var atrisināt viena pati.
Lai noslēgtu šo sadaļu, būtisks pārpratums: mēs runājam par ļaunprātīgs paketes, nevis neaizsargāti ievainojamības. Ievainojamības rodas no projektēšanas vai kodēšanas kļūdām, kas nejauši ieviesušās bez ļauniem nodomiem. Ievainojamības var tikt izmantotas, bet daudzas netiek izmantotas. Ļaunprātīgas pakotnes vienmēr ir tīšas, un, ja tās tiek izpildītas, pastāv 100% izmantošanas iespējamība. Nav salīdzināma riska! Tāpēc... Ir paradoksāli redzēt, cik daudz pūļu tiek veltītas ievainojamību atklāšanai un mazināšanai, un līdzvērtīgu pasākumu trūkumu attiecībā uz ļaunprātīgām komponentēm..
“Mēs uztveram drošību nopietni”
Iedomāsimies ierasto Acme korporācijaAcme, viens no galvenajiem WileCoyote.com nodrošinātājiem, lielāko daļu programmatūras nodrošina trešās puses, un vairāk nekā 80% ir no atvērtā pirmkoda projektiem. Viņi izstrādā programmatūru iekšējai lietošanai, taču nodrošina programmatūru arī saviem partneriem, pakalpojumu sniedzējiem un klientiem/galalietotājiem. Acme programmatūra ir rakstīta Go, JavaScript, Java, C# un Python valodās, un lielāko daļu programmatūras darbina mākonī, Kuberneteskubernetes klasteros. Acme veido savus pielāgotos attēlus no bāzes attēliem, kas ņemti no Docker Hub un citiem reģistriem. Viņi arī koplieto dažas bibliotēkas, pakotnes un konteineru attēlus publiskajos reģistros.
Acme uztver drošību nopietni. Viņi diezgan labi apzinās problēmu, kas saistīta ar open source securityun ar to saistīto risku. Visi izstrādātāji, sistēmu pārvaldnieki un DevOps devops inženieri izmanto šīs mazās, mīlīgās kriptogrāfijas atslēgas kā otrā faktora autentifikāciju. Visi commitkoda repozitoriji ir parakstīti, filiāles aizsardzība ir iespējota ar obligātām koda pārskatīšanām, CI/CD bloķēti, slepenie dati tiek glabāti slepenā glabātuvē, un iekšējais reģistrs daļēji atspoguļo ārējos reģistrus, kuros tiek glabāti tikai atļautie, baltajā sarakstā iekļautie komponenti. Ir prasība, lai Acme izstrādātā programmatūra ņemtu trešo pušu atkarības no šī reģistra.
Droši vien lielākā daļa organizāciju atbilst šim profilam. Cienījamais lasītāj, jūsu profils noteikti atbilst, ja jau esat šeit, vai ne?
Tad vienā neveiksmīgā dienā svarīgs front-end izstrādātājs pie Acme skrēja npm instalēt acme-cute-lib, aizmirstot, ka @acme/cute-lib bija pareizā tvēruma atkarība. Precīza kļūda nav svarīga, daudzas lietas var noiet greizi pat tad, ja pieņem pilnīgu programmatūras dzīves cikla kontroli. Mūsu izstrādātājs nezināja, ka APT grupa ir uzbrūkusi Acme, un viltīgi publicēja ļaunprātīgu komponentu ar šo nosaukumu, tāpēc ļaunprātīgā darbība aktivizējas tikai tad, kad programmatūra ir instalēta Acme datoros. Pakotne netika atklāta vairākas nedēļas pēc tās publicēšanas.
Tiek palaists instalācijas skripts, kas meklē akreditācijas datus (mūsu izstrādātāja klēpjdatorā bija daudz iespaidīgu piekļuves žetonu), ļaujot piekļūt iekšējām programmatūras krātuvēm un iepriekšminētajai iekšējai krātuvei, kurai, protams, var piekļūt tikai caur VPN. Ļaunprātīgajam kodam izdevās izmantot esošo VPN savienojumu un publicēt otrās pakāpes ļaunprātīgo komponentu iekšējā reģistrā, ietekmējot koplietojamu utilītu bibliotēku, ko koplieto lielākā daļa Acme piegādātās programmatūras.
Dažas nedēļas vēlāk citas organizācijas, kas izmantoja Acme publicētos rīkus, savos tīklos sāka pamanīt dīvainu datplūsmu, kas izmantoja Acme protokolu, bet bija vērsta uz resursdatoriem, kas atgādināja Acme domēnu. Datplūsma bija šifrēta, taču sistēmas uzraudzības rīki atrada piekļuvi negaidītiem failiem un tādu procesu izpildi, kas izskatās pēc sistēmas komandām, bet galu galā palaiž lejupielādētus izpildāmos failus.
Pārējais jau ir vēsture: Acme sākumā noliedza, ka šāda rīcība būtu vainojama viņiem un ka visi drošības pasākumi būtu ieviesti. Tikai pēc tam, kad kiberdrošības mediji sāka jautāt, kāpēc atklātās rīcības avots ir Acme komponenti, un drošības analīze publicēja informāciju par to, cik ļoti šie komponenti ir pilni ar slepenu ļaunprogrammatūru, Acme bija spiesti atzīt incidentu un izsaukt incidentu reaģēšanas uzņēmumu. Negatīva mārketinga kampaņa, kas acumirklī sagrāva grūti nopelnīto uzticību.Acme bija viena npm instalācijas attālumā no disaster”bija bieži sastopams virsraksts. Pēc tam sekoja tiesas prāvas un anulēti līgumi.
Vai saskatāt līdzības ar zināmiem iepriekšējiem incidentiem? Acme piegādes ķēdes incidents notika divos posmos, izmantojot dažādu veidu incidentus. atkarības apjukums/drukāšanas kļūdas uzbrukumi, kuros izstrādātāja darbstacija tika izmantota kā placdarms komponentu inficēšanai, kas nonāca trešo pušu izmantotajā programmatūrā. Kā to varētu novērst vai mazināt?
Kāpēc saindēti iepakojumi ir tik populāri
Šis hipotētiskais incidents parāda, ka pat ar saprātīgu pieeju atvērtā pirmkoda drošībai organizācijām ir nepieciešami īpaši pasākumi, lai izvairītos no kļūšanas par ļaunprogrammatūras upuriem atvērtā pirmkoda komponentos. Shematiski apdraudējuma izpildītājs var:
- Izveidojiet jaunu pakotni (sekojot labi zināmajām drukas kļūdu vai atkarību apjukuma metodēm, šis ir visvairāk izmantotais ceļš, ko sliktie puiši izmanto apjoma ziņā);
- Mēģiniet inficēt esošu, vai nu ievietojot to avota kodā, vai mēģinot to maskēt kā līdzstrādnieku, izmantojot pull requestvai izmantojot sociālo inženieriju, lai kļūtu par uzturētāju (kā to darīja “Jao Tan” XZ Backdoor vai labais 9vadības taustiņš GitHub lietotājs izdarīja notikumu straume incidents 2018. gada rudenī) vai iegūstot atvērtā pirmkoda repozitorija akreditācijas datus un uzdodoties par uzturētāju;
- Pakotnes veidošanas laikā injicēt ļaunprogrammatūru, palaižot ļaunprātīgu veidošanas skriptuvai traucējot pakotņu lejupielādi ar starpnieka pārtveršanu (par laimi, TLS tagad vienmēr ir nepieciešams lielākajā daļā reģistru).
- Iepakotās komponentes ievadīšana tieši reģistrā, parasti tverot reģistra akreditācijas datus (vēlamā alternatīva daudziem sarežģītiem uzbrukumiem, piemēram, Acme uzbrukumam, kur pirmajā posmā apdraudētajai darbstacijai bija iekšējais reģistra piekļuves marķieris, piemēram, parastajā veidā). .env or ~/.m2/iestatījumi.xml(ļaunprātīgi noziedznieki zina, kur meklēt noslēpumus). Tika izmantotas arī reģistru ievainojamības.
Reģistru saindēšana ar ļaunprogrammatūru ir pamatā atkarību uzbrukumiem. Nekas jauns zem saules: tā izplatība ir strauji pieaugusi, taču tās pašas metodes darbojas tagad, kā pirms pieciem gadiem.
Avots: Backstabber's Knife kolekcija.
Ļaunprātīgā pakotne var darboties instalēšanas, programmatūras izstrādes vai izpildes laikā. Un tās darbība var būt dažāda – sākot no informācijas noplūdes, piemēram, noslēpumu iegūšanas otrās fāzes mēģinājumam, līdz pirmkoda iegūšanai un papildu ļaunprogrammatūras ievietošanai. Nākamajā epizodē mēs aplūkosim ļaunprātīgās pakotnes un to publicēšanas veidu.
Papildu informācija
Nākamā epizode Ļaunprātīgu pakotņu anatomija: Kādas ir tendences? pievērsīsimies reāliem gadījumiem, kurus mēs uzraugām ar mūsu ļaunprogrammatūras agrīnās brīdināšanas sistēmu dienu no dienas. Mēs pārskatīsim, kāda veida ļaunprogrammatūra tika novērota un kura taktika, metodes un procedūras ir iecienītākās. Mēs izpētīsim obfuskāciju un to, kā tā mēģina slēpties no potenciālajiem recenzentiem, izvairīšanās metodes, lai izvairītos no atklāšanas, un to, kā tās attīstās, izmantojot telemetriju un sānu kustību. Lūdzu, sekojiet līdzi jaunumiem!
Atsauces
- Backstabber's Knife kolekcija: atvērtā pirmkoda programmatūras piegādes ķēdes uzbrukumu apskatsM. Ohm et al., 2020. gada maijs.
- Atvērtā pirmkoda ļaunprogrammatūras aizsardzībaXygeni informatīvais dokuments.
- Software Supply Chain Security Atskats pagātnē: Veidojot drošāku 2024. gaduZiņojums no Xygeni.





