A GitHub és a PyPI, vagyis a Python Package Index időalapú védelmi mechanizmusokat vezetett be annak érdekében, hogy mérsékelje a szoftveres ellátási láncot célzó támadások kockázatát, valamint korlátozza az esetleges kompromittálódások hatását. A GitHub Dependabot függőségkezelő eszközében alapértelmezetten háromnapos várakozási időt alkalmaznak az új csomagverziók telepítése előtt, míg a PyPI a közzétételt követő 14 nap elteltével már nem engedélyezi új fájlok feltöltését egy meglévő kiadáshoz.
Az intézkedések bevezetésére azt követően került sor, hogy az elmúlt évben mindkét fejlesztői ökoszisztémát több, jelentős visszhangot kiváltó támadás érte. A figyelemre méltó esetek közé tartozott többek között a „chalk” és a „debug”csomagokat érintő támadás, a „s1ngularity”művelet, a Shai-Hulud kampány, valamint a GhostActionelnevezésű ellátásilánc-támadás. A GitHub már az előző hónapban bejelentett több, az ellátási láncot fenyegető támadások kezelését célzó változtatást, a mostani intézkedések pedig ennek a biztonsági megerősítési műveletnek a folytatását jelentik.
A Dependabot a GitHub függőségfrissítési szolgáltatása, amely elemzi az alkalmazások által használt csomagokra és azok verzióira vonatkozó konfigurációs fájlokat, majd frissítési pull requesteket hoz létre annak érdekében, hogy értesítse a szoftverek karbantartóit az új csomagverziókról. Az új működés szerint a szolgáltatás 72 órával elhalasztjaa frissen közzétett csomagverziókra történő automatikus frissítést. A várakozási idő célja az, hogy a projektek nem vesznek át automatikusan egy újonnan publikált, de rosszindulatú kódot tartalmazó csomagot, a többletidő pedig lehetőséget biztosít ezen csomagok kártékony mivoltának felismerésére.
Az elmúlt időszakban több olyan eset is történt, amikor a kártékony npm-csomagokat a közzétételüket követően perceken belül észlelték és megjelölték a biztonsági megoldások. A gyors felismerés azonban önmagában nem szünteti meg azonnal a fenyegetést. A csomagtárak üzemeltetőinek és a szolgáltatóknak ugyanis intézkedniük kell a rosszindulatú komponensek eltávolításáról, így az észlelés és a tényleges törlés között továbbra is fennáll egy olyan időablak, amelyben a fejlesztők vagy automatizált rendszerek letölthetik és beépíthetik a fertőzött csomagokat.
A GitHub tájékoztatása szerint a háromnapos késleltetést úgy határozták meg, hogy az megfelelő egyensúlyt teremtsen a potenciálisan kockázatos kiadások elkerülése és a függőségek naprakészen tartása között. A felhasználók ugyanakkor a Dependabot „cooldown” konfigurációs beállításával rövidebb vagy hosszabb várakozási időt is meghatározhatnak. A GitHub arra is felhívta a figyelmet, hogy az időalapú késleltetés nem nyújt teljes körű védelmet a hosszabb ideig észrevétlenül fennálló kártékony csomagokkal szemben. Emiatt javasolt a függőségek konkrét verzióinak zárolása lockfájlok használatával, a korlátozott jogosultsági körrel rendelkező tokenek alkalmazása, valamint a szükségtelen telepítési szkriptek letiltása a CI-környezetekben.
A PyPI ezzel párhuzamosan bejelentette, hogy a csomagok karbantartói a kiadás közzétételét követő 14 nap elteltével már nem adhatnak hozzá új fájlokat az adott verzióhoz. Az intézkedés célja az úgynevezett kiadásmérgezés megakadályozása, amelynek során a támadók kompromittált publikálási tokenek vagy feltöltési munkafolyamatok felhasználásával rosszindulatú fájlokat adhatnának hozzá a korábban megbízhatónak tekintett kiadásokhoz.
A PyPI vizsgálatai alapján a projekteknek csupán rendkívül kis hányada töltött fel jogszerűen új fájlokat egy kiadáshoz annak közzétételét követő két héten túl. A 14 napos korlátozás ezért várhatóan csak minimális mértékben befolyásolja a legitim fejlesztői folyamatokat, miközben megszüntet egy potenciálisan súlyos támadási lehetőséget.
Fontos ugyanakkor kiemelni, hogy jelenleg nem ismert olyan korábbi, megerősített PyPI elleni támadás, amely bizonyíthatóan ezt a kiadásmérgezési technikát alkalmazta volna. A platform tehát megelőző jelleggel vezette be a korlátozást.