Byly odhaleny detaily útoku na infrastrukturu používanou při vývoji rámce strojového učení PyTorch, který umožnil získat přístupové klíče dostatečné pro umístění libovolných dat v repozitáři s vydáními projektu na GitHub a AWS, a také pro vkládání kódu do hlavní větve repozitáře a přidání zadního otvoru prostřednictvím závislostí. Záměna vydání PyTorch mohla být použita k útoku na velké společnosti, jako jsou Google, Meta, Boeing a Lockheed Martin, které používají PyTorch ve svých projektech. V rámci programu Bug Bounty společnost Meta vyplatila výzkumníkům 16 250 $ za informace o problému.
Podstata útoku spočívá ve schopnosti vykonávat svůj kód na serverech nepřetržité integraci, která provádí přebudování a vykonávání úloh pro testování nových změn zasílaných do repozitáře. Problém se dotýká projektů, které používají vlastní externí zpracovatele 'Self-Hosted Runner' s GitHub Actions. Na rozdíl od tradičních GitHub Actions, zpracovatelé Self-Hosted nefungují v infrastruktuře GitHub, ale na svých serverech nebo ve virtuálních strojích, které podporují vývojáři.
Vykonávání sestavovacích úloh na svých serverech umožňuje spuštění kódu, který může provádět skenování vnitřní sítě podniku, hledání v místním souborovém systému šifrovacích klíčů a přístupových tokenů, analýzu proměnných prostředí s parametry pro přístup k externím úložištím nebo cloudovým službám. Při nedostatku náležité izolace sestavovacího prostředí mohou být nalezené důvěrné údaje zaslány útočníkům ven, například prostřednictvím volání na externí API. Pro určení používání projektů 'Self-Hosted Runner' může být využito nástroje Gato, který analyzuje veřejné soubory workflow a logy spuštění CI úloh.
V PyTorch a mnoha dalších projektech, které využívají „Self-Hosted Runner“, je spuštění stavebních úloh povoleno pouze vývojářům, jejichž změny byly dříve přezkoumány a zahrnuty do kódu projektu. Držení statusu „contributor“ při používání výchozího nastavení v repozitáři umožňuje spouštět zpracovatele GitHub Actions při odesílání pull-žádostí a tím pádem vykonávat svůj kód v jakémkoliv prostředí GitHub Actions Runner, které je připojeno k repozitáři nebo do organizace spravující projekt.
Omezení na status „contributor“ se ukázalo být snadno obcházitelné - stačilo nejprve odeslat drobnou změnu a čekat na její přijetí do kódu, po čemž vývojář automaticky získal status aktivního účastníka, jehož pull-žádosti bylo povoleno testovat v CI infrastruktuře bez dalšího schvalování. Pro získání statusu aktivního vývojáře byly během experimentu použity drobné kosmetické změny spojené s odstraněním překlepů v dokumentaci. Pro získání přístupu k repozitáři a úložišti vydání PyTorch během útoku, při provádění kódu v „Self-Hosted Runner“, došlo k zachycení tokenu GitHub, který byl použit pro přístup k repozitáři z procesů sestav, a také klíčů AWS, které byly využity pro uložení výsledků sestavení.
Tato problém není specifický pro PyTorch a týká se mnoha dalších velkých projektů, které používají výchozí nastavení pro „Self-Hosted Runner“ v GitHub Actions. Například bylo zmíněno provádění podobných útoků za účelem vložení backdooru do některých velkých kryptoměnových peněženek a blockchainových projektů s miliardovou kapitalizací, provádění změn v vydáních Microsoft Deepspeed a TensorFlow, kompromitace jedné aplikace společnosti CloudFlare, a také vykonávání kódu na počítači v síti Microsoft. Detaily k těmto incidentům zatím nebyly zveřejněny. V rámci existujících programů Bug Bounty výzkumníci podali více než 20 návrhů na odměny v celkové výši několika set tisíc dolarů.
Zdroj: opennet.ru
