zaznavanje rootkitov - celovitost kode

Rootkiti niso več samo za sistemske administratorje: živijo tudi v repozitorijih

Kaj je rootkit?

Korenski komplet ni več le nizkonivojska zlonamerna programska oprema. V svojem bistvu je prikrit. zlonamerna programska oprema, ki omogoča nepooblaščen dostop medtem ko skriva svoj obstoj. V tradicionalnih kontekstih rootkiti živijo v jedru ali sistemskih storitvah. Danes pa se nahajajo tudi v vaših repozitorijih, sistemih neomejene izbire in manifestih paketov, kjer se skrivajo na vidnem mestu, spreminjajo integriteto kode in okužijo sisteme za gradnjo.

Od sistemskih rootkitov do rootkitov repozitorija

Sistemski inženirji so se včasih trudili z rootkiti v jedru. Ti so omogočali popoln nadzor nad sistemom, prestrezali sistemske klice, skrivali procese in ogrožali integriteto kode. Zdaj pa si predstavljajte scenarij, osredotočen na razvijalce: zlonamerni akter vbrizga rootkit v vaš Git repozitorij or drevo odvisnostiTa korenski komplet repozitorija je koda, ki manipulira z vašimi izhodi gradnje ali se prikrade skozi zadnja vrata in postane del artefaktov vašega paketa, še preden jih sistem sploh zažene. Korenski kompleti se premaknejo navzgor v vašo izvorno kodo, odvisnosti in CI/CD pretoki.

Kako se rootkiti skrivajo v kodnih bazah in odvisnostih

Razkrijmo oprijemljive vektorje napadov rootkitov, ki jih morajo razvijalci spremljati:

  • Zapleteno ali zavajajoče commits
    Predstavljajte si commit ki pravi »popravi tipkarsko napako«, vendar v resnici vstavi nalagalnik, ki med izvajanjem dešifrira zlonamerne koristne tovore. Zaznavanje rootkitov je zapleteno, ko commit sporočila skrivajo namen.
  • Spremenjene ali skrite knjižnice
    Pogosta uporabna funkcija je zamenjana z vpadljivo različico z zakulisjem. Prestane teste, vendar po urah beleži skrivnosti na oddaljeni strežnik. Celovitost kode je kršena, čeprav je knjižnica videti znana.
  • Ogroženi paketi tretjih oseb in tranzitivne odvisnosti
    Namestili ste lib-crypto@2.0.1; gorvodno, nekdo zastrupil različico 2.0.0 z zlonamerno programsko opremo. Zdaj vaš pipeline pomotoma potegne rootkit ali, še huje, vaša zaklepna datoteka se je premaknila in ste potegli okuženo kodo.
  • Speča koda in logične bombe

Koda ostane neškodljiva več tednov ali mesecev, nato pa se zbudi. Na primer:

Testi so danes uspešni in ne opazite, da je integriteta kode odpovedala, dokler ni prepozno.

Zakaj je zaznavanje rootkitov pomembno v DevOpsu

Korenski kompleti v vašem pipeline in repozitorije ogrožajo dejanske delovne procese razvijalcev:

  • Spremenjene gradnje, ki ostanejo neopažene: Če gre za rootkit hooks v vaš skript za gradnjo, recimo zlonameren po namestitvi or setup.py, tvoja KI bo sprejeta in ti boš brez vednosti poslal ogrožene artefakte.
  • Nedosledne ali nereproducibilne gradnje: Korenski komplet lahko povzroči, da se gradnje na razvijalskih računalnikih razlikujejo od gradilcev CI agentov. Ta razlika je opozorilni znak za integriteto kode, vendar le, če jo preverjate.
  • Vztrajno ogrožanje med izdajami: Ko je vgrajen, lahko preživi združevanje vej, izbiranje novih različic in prihodnje izdaje. Še huje, lahko se vbrizga v posodobitve in poškoduje vašo dobavno verigo.
  • Pipeline zastrupitev in lateralno gibanje znotraj razvijalskih okolij: Korenski komplet se lahko širi prek konfiguracij neomejene izbire, skupnih izvajalcev in razvijalskih računalnikov z deljenimi poverilnicami. Celovitost kode se krši ne le v kodi, temveč tudi v različnih okoljih.

Praktično odkrivanje rootkitov v Pipelines

Tukaj so razvijalcem prijazne in uporabne tehnike za izboljšanje vaše igre za odkrivanje rootkitov:

• Validacija zgoščevalne vrednosti za kritične datoteke in odvisnosti

Izračunajte SHA-256 (ali podobno) za ključne datoteke, kot so zahteve.txt, package-lock.jsonali skripte za gradnjo najvišje ravni:

Vsaka sprememba teh datotek kaže na morebitno zlonamerno premikanje.

• SBOM Validacija (programskega seznama materialov)

Ustvarjajo SBOM z orodji, kot sta Syft ali SPDX. Natančno spremljajte, katere odvisnosti (in različice) so v vaši gradnji. Primerjajte SBOMv različnih gradnjah za odkrivanje nepričakovanih ali zlonamernih dodatkov.

• Podpisano commitin preverjanje podpisa

Uveljavite git commit -S in preverite podpise v CI:

Nov, nepodpisan ali sumljivo podpisan commit bi lahko bila sonda za odkrivanje rootkitov.

• Zaznavanje anomalij na podlagi vedenja med gradnjo ali izvajanjem

Opremite svojo gradnjo s profiliranjem, da zaznate nenavadno vedenje: na primer nepričakovane omrežne klice med namestite npm or pip namestitevali spremembe datotek v zaščitenih imenikih:

Nepričakovan odhodni promet med namestitvijo je lahko posledica faze nalaganja rootkita.

• Iskanje zakritih ali visokoentropijskih segmentov kode

Uporabite orodja, ki označijo sumljivo entropijo kode ali dele, ki niso v kodi ASCII/težko berljivi, v pull requestsNa primer, integrirajte skeniranje za Baza64 blob-i ali nenavadna uporaba exec/eval. Označena koda je lahko speč nalagalnik ali šifriran koristni tovor.

Ohranjanje integritete kode v celotni dobavni verigi

Dolgoročno potrebujete prakse, ki odkrivanje rootkitov naredijo nekaj povsem običajnega:

  • Pripenjanje odvisnosti in datoteke zaklepanja: Vedno commit zaklepne datoteke (paket-zaklepanje.json, zahteve.zaklepanje, Itd). Pripnite različice, da ne boste pomotoma prenesli mutiranih tranzitivnih odvisnosti in tvegali, da se bo v njih vlekel rootkit.
  • Kriptografsko podpisovanje izdaj in paketov: Podpišite svoje artefakte gradnje z GPG ali podobnim. Potrošniki preverijo podpise; če je rootkit posegel v vašo izdajo, preverjanje ne uspe in prekine verigo zaupanja.
  • Redni pregled spremembe tretjih oseb in prehodne spremembe: Uporabite orodja za spremljanje odvisnosti, ki označujejo nove ali spremenjene odvisnosti. Združite z SBOM razlike za zaznavanje vbrizganih ali zamenjanih modulov.
  • Neprekinjeno spremljanje odvisnosti od premikov ali nepooblaščene spremembe: Avtomatizirajte SBOM razlike v vaši CI: gradnje ne uspejo, če se pojavijo nepričakovane odvisnosti. Spremljajte premik odvisnosti skozi čas in opozorite, če kaj odstopa od pričakovanega stanja: npr. rootkit commit ali nadomeščena odvisnost.

zaključek

Rootkiti niso več omejeni na sistemske administratorje in jedra; preselili so se v srce razvoja: vaše repozitorije, gradnje in neposredna interakcija. pipelineRazvijalci morajo odkrivanje rootkitov in integriteto kode obravnavati kot osrednji skrbi varnosti aplikacij. Z uporabo validacije zgoščevalne vrednosti, SBOM revizija, podpisana commitZ odkrivanjem anomalij v vedenju in higieno odvisnosti zgradite praktično obrambo pred rootkiti, ki živijo v kodi.

Orodje, kot je Ksigeni, osredotočen na krepitev dobavne verige programske opreme, lahko ekipam DevSecOps omogoči ohranjanje integritete kode in odkrivanje groženj rootkitov zgodaj v delovnem procesu. Je ključni zaveznik za varnost, ki je na prvem mestu za razvijalce, saj pomaga preprečiti to, preden se razširi po vašem repozitoriju, gradnji ali produkciji.

orodja-za-analizo-sestave-programske-programske-orodja-sca
Določite prednostne naloge, odpravite in zavarujte tveganja programske opreme
Pridobite svoj brezplačni račun.
Ni potrebna kreditna kartica.

Zagotovite si razvoj in dostavo programske opreme

z Xygeni Product Suite