Před pár dny objevila se zpráva, že byla identifikována kritická zranitelnost en správce závislostí Hudební Skladatel (CVE-2021-29472), která vám umožňuje spouštět libovolné příkazy v systému při zpracování balíčku se speciálně vytvořenou hodnotou URL, která určuje směr stahování zdrojového kódu.
Problém se projevuje v komponentách GitDriver, SvnDriver a HgDriver používá se se systémy řízení zdrojů Git, Subversion a Mercurial. Chyba zabezpečení byla opravena ve verzích 1.10.22 a 2.0.13 ve službě Composer.
Zejména je ovlivněno výchozí úložiště balíčků Packagist společnosti Composer, které obsahuje 306.000 1.400 vývojářských balíčků PHP a nabízí více než XNUMX miliardy stažení za měsíc.
V ekosystému PHP je Composer hlavním nástrojem pro správu a instalaci závislostí softwaru. Vývojové týmy po celém světě ji používají k usnadnění procesu upgradu a zajištění bezproblémového běhu aplikací ve všech prostředích a verzích.
Experiment ukázal, že pokud by existovaly informace o problému, útočníci by mohli převzít kontrolu nad infrastrukturou Packagist a zachytit pověření správců nebo přesměrovat stahování balíčků na server třetí strany a zajistit dodání variant balíčků se změnami. uživatelé se zlými úmysly vyměnit backdoor během instalace závislostí.
Nebezpečí pro koncové uživatele je omezené vzhledem k tomu, že obsah souboru composer.json je obvykle definován uživatelem a odkazy na zdroj jsou předávány při přístupu k úložištím třetích stran, která jsou obvykle spolehlivá. Hlavní rána dopadla na úložiště Packagist.org a službu Private Packagist, které volají Skladatel s přenosem dat přijatých od uživatelů. Útočníci mohli spustit svůj kód na serverech Packagist zrušením speciálně vytvořeného balíčku.
Tým Packagist vyřešil chybu zabezpečení do 12 hodin od oznámení zranitelnosti. Výzkumníci soukromě informovali vývojáře Packagist 22. dubna a problém byl opraven ve stejný den. Veřejná aktualizace Composeru s opravou této chyby zabezpečení byla vydána 27. dubna a podrobnosti byly odhaleny 28. dubna. Audit protokolů na serverech Packagist neodhalil žádnou podezřelou aktivitu spojenou s touto chybou zabezpečení.
Chyby vkládání argumentů jsou opravdu zajímavou třídou chyb, které jsou často přehlíženy během kontroly kódu a zcela přehlíženy v interakcích černé skříňky.
Problém je způsoben chybou v ověřovacím kódu URL v kořenovém souboru composer.json a ve zdrojových odkazech ke stažení. Tato chyba je v kódu od listopadu 2011. Packagist používá ke správě stahování kódu speciální vrstvy, aniž by byl vázán na konkrétní systém řízení zdroje, který je spuštěn voláním „fromShellCommandline“ s argumenty příkazového řádku.
Jádrem problému je, že metoda ProcessExecutor vám umožnila zadat jakékoli další parametry volání v adrese URL. Takový únik chyběl u ovladačů GitDriver.php, SvnDriver.php a HgDriver.php. Útoku GitDriver.php bránila skutečnost, že příkaz „git ls-remote“ nepodporoval zadání dalších argumentů za cestou.
Útok na HgDriver.php byl možný předáním parametru „–config“ obslužnému programu „hq“, který umožňuje organizovat provádění libovolného příkazu manipulací s konfigurací „alias.identify“.
Odesláním testovacího balíčku s podobnou adresou URL společnosti Packagist vědci zajistili, že po jeho zveřejnění obdržel jejich server požadavek HTTP od jednoho ze serverů Packagist na AWS, který obsahoval seznam souborů v aktuálním adresáři.
Je třeba poznamenat, že správci nezjistili žádné známky předchozího zneužití této chyby zabezpečení ve veřejné instanci balírny.
Nakonec, pokud máte zájem o tom vědět více, můžete si přečíst podrobnosti Na následujícím odkazu.