Feltárták a PyTorch gépi tanulási keretrendszer fejlesztésénél használt infrastruktúrára irányuló támadás részleteit, amely lehetővé tette a hozzáférési kulcsok kinyerését, elegendő információval az adatbázisban tárolt tetszőleges adatok publikálásához a projekt kiadási tárolójában a GitHub-on és az AWS-en, valamint a kód behelyettesítéséhez a fő tároló ágba és hátsó ajtó hozzáadásához a függőségek révén. A PyTorch kiadásának hamisítása használható volt támadás végrehajtásához nagy cégek, mint a Google, Meta, Boeing és Lockheed Martin ellen, amelyek a PyTorch-ot használják projektjeikben. A Bug Bounty program keretében a Meta $16,250-t fizetett a kutatóknak a problémáról szóló információkért.
A támadás lényege a saját kód végrehajtásának lehetősége szervereken a folyamatos integráció során, amely új változtatások tesztelésére szolgáló feladatokat hajt végre, amelyeket a tárolóba küldenek. A probléma érinti azokat a projekteket, amelyek saját külső feldolgozókat, azaz „Self-Hosted Runner”-t használnak a GitHub Actions keretében. A megszokott GitHub Actions-zel ellentétben a Self-Hosted feldolgozók nem a GitHub infrastruktúrájában működnek, hanem saját szervereiken vagy virtuális gépeiken, amelyeket a fejlesztők üzemeltetnek.
A saját szervereken végrehajtott buildfeladatok lehetővé teszik olyan kód futtatását, amely belső vállalati hálózatok átvizsgálására, titkosítási kulcsok és hozzáférési tokenek keresésére, valamint a környezeti változók elemzésére használható külső tárolók vagy felhőszolgáltatások elérési paramétereivel. Megfelelő elszigetelés hiányában a felfedezett bizalmas adatok a támadók számára kifelé küldhetők, például külső API-kkal való kapcsolaton keresztül. A „Self-Hosted Runner” használatának meghatározására a Gato eszközkészlet szolgálhat, amely a nyilvános workflow fájlokat és a CI feladatok indítási naplóit elemzi.
A PyTorch és sok más, „Self-Hosted Runner”-t használó projekt esetében a buildfeladatok elindítása kizárólag a fejlesztők számára engedélyezett, a változtatásaik előzetes felülvizsgálaton estek át és bekerültek a projekt kódbázisába. A „contributor” státusz megléte a tároló alapértelmezett beállításaival lehetővé teszi a GitHub Actions feldolgozók indítását pull-kérelem benyújtásakor, így a kódjuk végrehajtása bármely GitHub Actions Runner környezetben, amely a tárolóhoz vagy a projektet kezelő szervezethez van kapcsolva.
A státusz "kontributor" megkerülése könnyű volt — elegendő volt először egy kisebb változtatást küldeni és megvárni annak elfogadását a kódba, ezután a fejlesztő automatikusan aktív résztvevővé vált, akinek a pull-kéréseit tesztelni lehetett a CI-infrastruktúrában, külön ellenőrzés nélkül. Az aktív fejlesztői státusz megszerzése érdekében a kísérlet során kisebb kozmetikai változtatásokra került sor, amelyeket a dokumentációban lévő elírások helyesbítése indokolt. A PyTorch tárolójához és a kiadási tárolóhoz való hozzáférés érdekében a támadás során a "Self-Hosted Runner" kód végrehajtása közben a GitHub tokenje kerül elkapásra, amelyet a tároló elérésére használtak a build folyamatok során, valamint az AWS kulcsokat, amelyeket a build eredmények elmentésére használtak.
A probléma nem specifikus a PyTorch számára, számos más nagyobb projektet érint, amelyek a GitHub Actions "Self-Hosted Runner" alapértelmezett beállításait használják. Például megemlíthető hasonló támadások végrehajtása bizonyos nagy kriptovaluta tárcákba és milliárdos piaci tőkével rendelkező blokklánc projektekbe belépve, a Microsoft Deepspeed és TensorFlow kiadások módosítása, a CloudFlare egy alkalmazásának kompromittálása, valamint kód végrehajtása a Microsoft hálózatán. A részletek ezekről az incidensekről egyelőre nem kerültek nyilvánosságra. A Bug Bounty program keretein belül a kutatók több mint 20 pályázatot nyújtottak be, hogy pár százezer dollár értékű jutalmat kapjanak.
Forrás: opennet.ru
