Pár napja hír érkezett arról, hogy kritikus sebezhetőséget azonosítottak en a függőségkezelő Összeállít (CVE-2021-29472), amely lehetővé teszi tetszőleges parancsok futtatását a rendszeren, amikor egy speciálisan kialakított URL-értékű csomagot dolgozunk fel, amely meghatározza a forráskód letöltésének irányát.
A probléma a GitDriver, a SvnDriver és a HgDriver komponensekben nyilvánul meg a Git, a Subversion és a Mercurial forrásvezérlő rendszerekkel együtt használják. A biztonsági rést az 1.10.22 és a 2.0.13 zeneszerző verzióiban javították.
Különösen a Composer alapértelmezett Packagist csomagtárháza, amely 306.000 1.400 PHP fejlesztői csomagot tartalmaz és havonta több mint XNUMX milliárd letöltést kínál.
A PHP ökoszisztémában a Composer a fő eszköz a szoftverfüggőségek kezelésére és telepítésére. A fejlesztői csapatok világszerte használják a frissítési folyamat megkönnyítésére és annak biztosítására, hogy az alkalmazások könnyedén fussanak minden környezetben és verzióban.
A kísérlet azt mutatta, hogy ha volt információ a problémáról, a támadók átvehették az irányítást a Packagist infrastruktúra felett, és elfogták a karbantartók hitelesítő adatait, vagy átirányíthatták a csomagok letöltését egy külső szerverre, a változtatásokkal megszervezhették a csomagváltozatok kézbesítését. rosszindulatú felhasználók a hátsó ajtó cseréjére a függőség telepítése során.
A végfelhasználókat fenyegető veszély korlátozott annak a ténynek köszönhető, hogy a composer.json tartalmát általában a felhasználó határozza meg, és a forráshoz vezető linkek átkerülnek a harmadik féltől származó, általában megbízható adattárak elérésekor. A fő csapás a Packagist.org adattárra és a Private Packagist szolgáltatásra esett, hogy felhívja a Composert a felhasználóktól kapott adatok átadásával. A támadók egy speciálisan kialakított csomag eldobásával futtathatták kódjukat a Packagist szervereken.
A Packagist csapata az értesítéstől számított 12 órán belül megoldotta a biztonsági rést kiszolgáltatottság. A kutatók április 22-én magánkézben értesítették a Packagist fejlesztőket, és a problémát még aznap megoldották. A sérülékenység javításával közzétett nyilvános Composer frissítést április 27-én tették közzé, a részleteket pedig április 28-án árulták el. A Packagist szerverein található naplók ellenőrzése nem tárt fel gyanús tevékenységet a biztonsági réshez kapcsolódóan.
Az argumentum-injektálási hibák egy igazán érdekes hibakategória, amelyeket a kódellenőrzések során gyakran figyelmen kívül hagynak, és a fekete doboz interakcióiban teljesen figyelmen kívül hagyják.
A problémát az URL érvényesítési kód hibája okozza a root composer.json fájlban és a forrás letöltési hivatkozásokban. A hiba 2011 novembere óta van jelen a kódban. A Packagist speciális rétegeket használ a kódletöltések kezeléséhez anélkül, hogy egy adott forrásvezérlő rendszerhez lenne kötve, amelyet a "fromShellCommandline" parancssori argumentumokkal történő meghívásával hajtanak végre.
A probléma lényege, hogy a ProcessExecutor metódus lehetővé tette további hívásparaméterek megadását az URL-ben. Ilyen menekülés hiányzott a GitDriver.php, a SvnDriver.php és a HgDriver.php illesztőprogramokból. A GitDriver.php támadást nehezítette, hogy a "git ls-remote" parancs nem támogatta további argumentumok megadását az elérési út után.
A HgDriver.php elleni támadás úgy volt lehetséges, hogy a "–config" paramétert átadta a "hq" segédprogramnak, amely lehetővé teszi bármely parancs végrehajtásának megszervezését az "alias.identify" konfiguráció manipulálásával.
Azzal, hogy egy hasonló URL-t tartalmazó tesztcsomagot küldött a Packagistnak, a kutatók megbizonyosodtak arról, hogy a kiszolgáló közzététele után HTTP-kérést kapott az AWS egyik Packagist szerverétől, amely tartalmazza az aktuális könyvtár fájljainak listáját.
Meg kell jegyezni, hogy a karbantartók nem azonosították a sérülékenység előzetes kihasználásának jeleit a csomagolók nyilvános példányaiban.
Végül, ha érdekel, hogy többet tudjon meg róla, olvassa el a részleteket A következő linken.