Tehnika “Revival Hijack” izkorišča ranljivost v procesu odstranjevanja paketov na PyPI
Tehnika “Revival Hijack” je nedavno postala aktualna, ker izkorišča ranljivost v procesu odstranjevanja paketov na platformi Python Package Index (PyPI). Ko je priljubljen paket na PyPI odstranjen, njegovo ime takoj postane na voljo za registracijo drugim uporabnikom.
Zlonamerni akterji lahko izkoristijo to stanje s tem, da ugrabijo ime zapuščenega paketa in ga nadomestijo z zlonamerno različico. To lahko povzroči resne varnostne preboje, ko nič hudega sluteči uporabniki posodobijo ali ponovno namestijo paket. Ta tehnika je posebej nevarna, ker ne zahteva napak uporabnikov in lahko zlahka zaobide obstoječe varnostne ukrepe.
Analize so pokazale, da so tisoči priljubljenih PyPI paketov dovzetni za takšne napade, kar opozarja na nujnost izboljšanih varnostnih ukrepov za preprečevanje takšnih zlonamernih dejavnosti.
Namenski račun “security_holding” za zaščito skupnosti PyPI
Da bi zaščitili skupnost PyPI pred ugrabljanjem paketov, je bil ustvarjen namenski račun imenom “security_holding”, ki je navdihnjen po pristopu NPM. Ta račun je bil uporabljen za rezervacijo najbolj priljubljenih zapuščenih paketov z nadomestitvijo s praznimi paketi.
Ta ukrep je preprečil zlonamernim akterjem, da bi izkoriščali te pakete in vnašali zlonamerno kodo. Uporaba različice 0.0.0.1 je zagotovila, da prazne zamenjave ne bi nehote prenesli uporabniki z zastarelimi namestitvami paketov.
Grožnja »Revival Hijack« je resna
Grožnjo “Revival Hijack” poudarjajo visoki števci prenosov »varno ugrabljenih« paketov PyPI. To je posledica odvisnosti na zastarele delovne naloge in skripte, ki se nanašajo na izbrisane pakete, ter tipkarskih napak uporabnikov.
Grožnja je bolj resna, kot je bilo sprva ocenjena, saj lahko potencialno prizadene širši spekter uporabnikov preko pip posodobitev. Priljubljenost odvisnosti ugrabljenih paketov še povečuje potencialni vpliv napada na oskrbovalno verigo.
Obstoječi varnostni ukrepi in možne izboljšave
PyPI uporablja več ukrepov za preprečevanje ugrabitve paketov, vključno z blokiranjem paketov z enakimi ali podobnimi imeni že obstoječim paketom, kot tudi tistih na črnem seznamu. Preverjanje podobnosti vključuje zamenjavo določenih znakov s številkami in odstranjevanje ločil za odkrivanje tipkarskih napak.
Čeprav ti ukrepi pomagajo zmanjšati tveganje zlonamernih paketov, niso izčrpni. Na primer, bolj obsežen črni seznam bi lahko učinkovito preprečil napad Revival Hijack z avtomatičnim dodajanjem imen odstranjenih projektov.
Primer napada: Paket “pingdomv3”
Zlonamerni akterji so izkoristili tehniko »Revival Hijack« z ugrabitvijo zapuščenega paketa »pingdomv3« na PyPI. Prvotni paket (Python implementacija Pingdom API) je bil nazadnje posodobljen aprila 2020.
Marca 2024 je nov lastnik (Jinnis) registriral ime in izdal navidezno benigne posodobitve. Vendar pa je kasnejša posodobitev vključevala Base64 kodirano zlonamerno tovorno kodo, ki so jo zaznali avtomatizirani sistemi za skeniranje. Raziskovalci pri JFrog so prijavili zlonamerno programsko opremo PyPI-ju, in vse verzije ugrabljenega paketa so bile odstranjene.