rootkit aptikimas – kodo vientisumas

Šakniniai rinkiniai nebėra skirti tik sistemų administratoriams: jie taip pat gyvena saugyklose

Kas yra rootkitas?

Rootkit nebėra tik žemo lygio kenkėjiška programa. Iš esmės ji yra slapta. kenkėjiška programa, suteikianti neteisėtą prieigą nors ir slepia savo egzistavimą. Tradiciniuose kontekstuose rootkitai gyvena branduolio erdvėje arba sistemos paslaugose. Tačiau šiandien jie taip pat yra jūsų saugyklose, CI sistemose ir paketų manifestuose, slepiasi matomoje vietoje, kenkia kodo vientisumui ir užkrečia kompiliavimo sistemas.

Nuo sistemos rootkitų iki saugyklos rootkitų

Sistemų inžinieriai anksčiau daug dirbo kurdami branduolio rootkit'us. Jie suteikė visišką sistemos kontrolę, perėmė sistemines iškvietas, slėpė procesus ir neleido kodo vientisumui išlikti saugiam. Dabar tarkime, kad scenarijus orientuotas į kūrėją: kenkėjiškas veikėjas į jūsų kompiuterį įterpia rootkit'ą. „Git“ saugykla or priklausomybių medisŠis saugyklos rootkit yra kodas, kuris manipuliuoja jūsų kompiliavimo rezultatais arba prasiskverbia pro užpakalines duris ir tampa jūsų paketo artefaktų dalimi dar prieš sistemai juos paleidžiant. Rootkitai patenka į jūsų šaltinį, priklausomybes ir... CI/CD teka.

Kaip rootkitai slepiasi kodų bazėse ir priklausomybėse

Apžvelkime apčiuopiamus rootkit atakų vektorius, į kuriuos kūrėjai turi atkreipti dėmesį:

  • Supainiotas arba klaidinantis commits
    Įsivaizduokite a commit rašoma „ištaisyta rašybos klaida“, bet iš tikrųjų įterpia įkroviklį, kuris vykdymo metu iššifruoja kenkėjiškas apkrovas. Rootkit'ų aptikimas yra sudėtingas, kai commit Žinutės slepia ketinimus.
  • Pakeistas arba slaptas bibliotekas
    Įprasta naudingumo funkcija pakeičiama subtiliai slapta versija. Ji praeina testus, bet po darbo valandų registruoja paslaptis nuotoliniame serveryje. Kodo vientisumas pažeidžiamas, nors biblioteka atrodo pažįstama.
  • Pažeisti trečiųjų šalių paketai ir pereinamosios priklausomybės
    Įdiegėte lib-crypto@2.0.1; prieš srovę, kažkas nunuodijo versiją 2.0.0 su kenkėjiška programa. Dabar jūsų pipeline netyčia ištraukia rootkit arba, dar blogiau, jūsų užrakinimo failas buvo nustumtas ir jūs ištraukėte užkrėstą kodą.
  • Miegantis kodas ir loginės bombos

Kodas kelias savaites ar mėnesius lieka nepakitęs, o tada atsigauna. Pavyzdžiui:

Šiandien testai sėkmingai išlaikomi, ir kodo vientisumo pažeidimo nepastebite, kol nebūna per vėlu.

Kodėl „rootkit“ aptikimas yra svarbus „DevOps“ sistemoje

Rootkitai jūsų sistemoje pipeline ir saugyklos kelia grėsmę tikriems kūrėjų darbo eigoms:

  • Nepastebimai sugadinti pastatai: Jei rootkit hooks į savo kūrimo scenarijų, tarkime, kenkėjiška programa po įdiegimo or setup.py, jūsų CI bus sėkmingas, o jūs to nežinodami įkelsite pažeistus artefaktus.
  • Nenuoseklūs arba neatkartojami variantai: Šakninis rinkinys gali lemti skirtingus kompiliavimo rezultatus kūrėjų kompiuteriuose ir CI agentuose. Šis skirtumas yra raudona vėliavėlė kodo vientisumui, bet tik tuo atveju, jei jį tikrinate.
  • Nuolatinis kompromisas tarp leidimų: Įdiegus, jis gali išlikti po šakų sujungimo, atrinktų programų ir būsimų leidimų. Dar blogiau, jis gali įsiskverbti į atnaujinimus ir sugadinti jūsų tiekimo grandinę.
  • Pipeline apsinuodijimas ir šoninis judėjimas kūrėjų aplinkoje: Šakninis rinkinys gali plisti per CI konfigūracijas, bendrus vykdytojus ir kūrėjų kompiuterius su bendrais prisijungimo duomenimis. Kodo vientisumas pažeidžiamas ne tik kode, bet ir įvairiose aplinkose.

Praktinis rootkit aptikimas Pipelines

Štai kūrėjams patogūs, veiksmingi metodai, kaip pagerinti rootkit'ų aptikimo galimybes:

• Svarbiausių failų maišos patvirtinimas ir priklausomybių

Apskaičiuokite SHA‑256 (arba panašų) kodą pagrindiniams failams, pvz. reikalavimai.txt, package-lock.jsonarba aukščiausio lygio kūrimo scenarijai:

Bet koks šių failų pakeitimas rodo galimą kenkėjišką nutekėjimą.

• SBOM (Programinės įrangos medžiagų sąrašo) patvirtinimas

Generuoti SBOM su tokiais įrankiais kaip „Syft“ arba „SPDX“. Tiksliai sekite, kurios priklausomybės (ir versijos) yra jūsų kompiliacijoje. Palyginkite SBOMs skirtingose ​​versijose, kad aptiktų netikėtus ar kenkėjiškus papildymus.

• Pasirašyta commitir parašo tikrinimas

vykdyti Git commit -S ir patikrinkite parašus CI:

Naujas, nepasirašytas arba įtartinai pasirašytas commit gali būti šaltinio „rootkit“ zondas.

• Elgesiu pagrįstas anomalijų aptikimas kūrimo arba vykdymo metu

Apipavidalinkite savo kompiliaciją profiliavimu, kad aptiktumėte neįprastą elgesį, pavyzdžiui, netikėtus tinklo skambučius npm įdiegti or pip diegimasarba failų pakeitimai apsaugotuose kataloguose:

Netikėtas išorinis srautas diegimo metu gali būti rootkit įkėlimo etapas.

• Skenuojama ieškant užmaskuotų arba didelės entropijos kodo segmentų

Naudokite įrankius, kurie žymi įtartiną kodo entropiją arba ne ASCII / sunkiai skaitomus skyrius pull requestsPavyzdžiui, integruokite nuskaitymą Pagrindas64 „blob“ tipo kodai arba keistas „exec/eval“ naudojimas. Paryškintas kodas gali būti miegantis įkroviklis arba užšifruotas naudingasis krovinys.

Kodo vientisumo palaikymas visoje tiekimo grandinėje

Ilgainiui jums reikia praktikos, kuri rootkit'ų aptikimą paverstų savaime suprantamu dalyku:

  • Priklausomybės prisegimas ir užrakinimo failai: Visada commit užrakinimo failai (package-lock.json, requirements.lockIr tt). Prisekite versijas, kad netyčia neištrauktumėte mutavusių tranzitinių priklausomybių ir nerizikuotų patekti rootkit.
  • Leidimų ir paketų kriptografinis pasirašymas: Pasirašykite savo sukurtus artefaktus naudodami GPG arba panašiai. Vartotojai tikrina parašus; jei rootkit pakeitė jūsų versiją, patikrinimas nepavyksta ir nutraukia pasitikėjimo grandinę.
  • Reguliari peržiūra trečiųjų šalių ir pereinamieji pakeitimai: Naudokite priklausomybių stebėjimo įrankius, kurie žymi naujas arba pasikeitusias priklausomybes. Derinkite su SBOM skirtumai, skirti aptikti įšvirkštus arba pakeistus modulius.
  • Nuolatinis priklausomybės poslinkio stebėjimas arba neleistini pakeitimai: Automatizuoti SBOM skirtumai jūsų CI: nepavyksta sukurti, jei atsiranda netikėtų priklausomybių. Stebėkite priklausomybių pokytį laikui bėgant ir įspėkite, jei kas nors nukrypsta nuo numatytos būsenos, pvz., rootkit commit arba pakeista priklausomybė.

Išvada

Šakniniai rinkiniai nebėra apsiribojantys sistemų administratoriais ir branduoliais; jie persikėlė į pačią kūrimo širdį: jūsų saugyklas, kompiliacijas ir integracinę sąsają (CI). pipelines. Programuotojai privalo laikyti rootkit'ų aptikimą ir kodo vientisumą pagrindiniais programų saugumo klausimais. Naudodami maišos patvirtinimą, SBOM auditas, pasirašytas commitNaudodami elgsenos anomalijų aptikimą ir priklausomybių higieną, kuriate praktinę apsaugą nuo kode esančių rootkit'ų.

Įrankis kaip Ksigeni, orientuota į programinės įrangos tiekimo grandinės stiprinimą, gali suteikti „DevSecOps“ komandoms galimybę išlaikyti kodo vientisumą ir aptikti rootkit grėsmes ankstyvoje darbo eigos stadijoje. Tai gyvybiškai svarbus sąjungininkas, užtikrinantis kūrėjams svarbiausią saugumą, padedantis sustabdyti šią grėsmę, kol ji neišplito jūsų saugykloje, kompiliavimo ar gamybos aplinkoje.

sca-tools-software-composition-analyses-tools
Prioritetizuoti, pašalinti ir apsaugoti savo programinės įrangos rizikas
Gaukite nemokamą paskyrą.
Nebūtina kreditinės kortelės.

Apsaugokite savo programinės įrangos kūrimą ir tiekimą

su „Xygeni“ produktų rinkiniu