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.





