A Project Zero közzétette a GitHub súlyos biztonsági megsértésének részleteit és arról beszámolnak a hiba befolyásolja a művelet munkafolyamat-parancsait a GitHub-tól, és nagy súlyosságúnak minősül. (Ezt a hibát júliusban fedezték fel, de a szokásos 90 napos nyilvánosságra hozatali időszak alatt a részleteket csak most tették közzé.)
Ez a hiba a kevés hiányosság közé vált, amelyet nem javítottak a Google Project Zero által biztosított szokásos 90 napos időkeret lejárta előtt.
Felix Wilhelm szerint (aki felfedezte), a Project Zero csapat tagja, a hiba a fejlesztők munkájának automatizálására szolgáló eszköz, a GitHub cselekvési funkcióját érinti. Ennek oka, hogy az Actions munkafolyamat-parancsok "sérülékenyek az injekciós támadásokkal szemben":
„Műveletek A Github támogatja az úgynevezett munkafolyamat-parancsokat, mint kommunikációs csatornát az Action közvetítő és a végrehajtott művelet között. A munkafolyamat-parancsok az / src / Runner.Worker / ActionCommandManager.cs fájlban vannak végrehajtva, és úgy működik, hogy az összes végrehajtott művelet STDOUT-ját elemzi a két parancsjel egyikének megkeresésével.
Említse meg ennek a funkciónak a nagy problémája, hogy nagyon sérülékeny az injekciós támadásokkal szemben. Mivel a végrehajtási folyamat minden, az STDOUT-ban kinyomtatott sor után kutat munkafolyamat-parancsok után, minden olyan GitHub-művelet sérülékeny, amely nem megbízható tartalmat tartalmaz a végrehajtás részeként.
A legtöbb esetben az önkényes környezeti változók beállításának képessége távoli kódfuttatást eredményez, amint egy másik munkafolyamat fut. Némi időt töltöttem a népszerű GitHub-tárak nézegetésével, és szinte minden olyan projekt, amely kissé összetett GitHub-műveleteket használ, kiszolgáltatott az ilyen hibáknak.
Ezt követően, néhány példát adott a hiba kihasználására és megoldást is javasolt:
- Tényleg nem vagyok biztos abban, hogy mi a legjobb módszer a javításra. Úgy gondolom, hogy a munkafolyamat-parancsok végrehajtásának módja alapvetően bizonytalan. A v1 parancs szintaxisának elértéktelenítése és a setet-env engedélyezési listával való megerősítése valószínűleg a közvetlen RCE vektorokkal szemben működne.
„Azonban a későbbi lépésekben használt„ normál ”környezeti változók felülbírálásának képessége is valószínűleg elég a bonyolultabb műveletek kiaknázásához. Nem elemeztem a munkaterület többi vezérlőjének biztonsági hatását sem.
Másrésztmegemlíti, hogy jó hosszú távú megoldás A munkafolyamat-parancsok külön csatornára (pl. Egy új fájlleíró) történő áthelyezése lenne az STDOUT általi elemzés elkerülése érdekében, de ez sok létező műveleti kódot meg fog törni.
Ami a GitHubot illeti, a fejlesztői október 1-jén kiküldtek egy tanácsadót, és megszüntették a sérülékeny parancsokat, de azzal érveltek, hogy amit Wilhelm talált, az valójában "mérsékelt biztonsági rés". A GitHub hozzárendelte a CVE-2020-15228 hibajazítót:
„A GitHub Actions futásidejében közepes biztonsági rést azonosítottak, amely lehetővé teheti az utak és környezeti változók befecskendezését olyan munkafolyamatokba, amelyek nem megbízható adatokat naplóznak az STDOUT-ba. Ez a környezeti változók bevezetéséhez vagy módosításához vezethet a munkafolyamat-író szándéka nélkül.
„Annak érdekében, hogy segítsen nekünk megoldani ezt a problémát, és lehetővé tegye a környezeti változók dinamikus beállítását, új fájlkészletet vezettünk be a munkafolyamatok környezeti és útvonal-frissítéseinek kezelésére.
„Ha önállóan üzemeltetett brókereket használ, ellenőrizze, hogy frissítették-e őket a 2.273.1 vagy újabb verzióra.
Wilhelm szerint október 12-én a Zero projekt felvette a kapcsolatot a GitHub-szal, és proaktívan felajánlotta nekik a 14 napos határidőt, ha a GitHub több időt szeretne a sebezhető parancsok letiltására. Természetesen az ajánlatot elfogadták, és a GitHub abban reménykedett, hogy október 19-e után letiltja a sérülékeny parancsokat. A Project Zero ezután november 2-re tűzte ki az új közzétételi dátumot.
forrás: https://bugs.chromium.org