Nachdem der Contao Manager mit der Version 1.9.0 bereits neue Sicherheitsfeatures erhalten hat, setzen wir jetzt mit Version 1.10 noch einen drauf!
Hinweis: Gleich wird es ein bisschen technisch, ist aber für diese Version leider nicht anders möglich.
Die Kurzfassung, falls es dir doch ein bisschen zu sehr ins Detail geht: Die Version 1.10 ist jetzt noch sicherer und verhindert neuerdings auch gewisse Man-In-the-Middle-Attacken.
Grundlagen: Paketverwaltung
Die Grundfunktion des Contao Managers besteht darin, Extensions (oder in allgemeiner Composer-Sprache einfach nur «Pakete») zu installieren, zu aktualisieren und natürlich auch zu entfernen.
Bei der Paketverwaltung gibt es zwei grundsätzlich verschiedene Informationen, die technisch von Composer auch in zwei unterschiedlichen Dateien verwaltet und vom Contao Manager entsprechend visuell dargestellt werden:
- In der
composer.json
bestimmst du, was du brauchst (z. B. «Ich will Contao, Version 5.3 oder höher aber nie eine 6er-Version»). Für die Composer-Vertrauten also ^5.3
.
- Die
composer.lock
hingegen bestimmt, was du bekommst (z. B. «Du bekommst Contao in Version 5.3.33»).
Oder anders ausgedrückt:
composer.json
= Einkaufszettel mit ungefähren Angaben
composer.lock
= Einkaufskorb mit genauen Produkten
Dabei übernimmt Composer die Aufgabe, aus den Angaben deiner composer.json
die bestmögliche Kombination aller Pakete und deren Abhängigkeiten herauszufinden und diese dann in der composer.lock
festzuhalten.
Sind die Paketinformationen (nicht nur die Versionen sondern z. B. auch die URLs wo diese Pakete heruntergeladen werden können) erstmal in der composer.lock
gelandet, findet keine weitere Validierung mehr statt.
Möchtest du dein Wissen vertiefen? Dann kann ich dir folgenden Beitrag composer.json
- Versionsbedingungen und Abhängigkeiten ans Herz legen. Darin erklärt Christian dir das Thema Versionsbedingungen und gibt dir Tipps, wie du mit Fehlermeldungen umgehst, wenn bestimmte Versionen nicht installiert werden können.
Die Composer Resolver Cloud und die Contao Manager API
Bei einer Aktualisierung der Pakete bedient der Contao Manager standardmässig die Composer Resolver Cloud. Dies ganz einfach deswegen, weil die Auflösung der Abhängigkeiten potenziell mehr RAM benötigt, als auf deinem Hosting zur Verfügung steht.
Die Cloud antwortet mit der finalen composer.lock
, deren Inhalte der Contao Manager via Composer im Anschluss installiert. Die Informationen werden also ungeprüft verarbeitet.
Würde es ein Angreifer schaffen, die Composer Resolver Cloud zu übernehmen, könnte er dir ein bösartiges Paket unterjubeln. Mit grösster Wahrscheinlichkeit so, dass du es niemals bemerken würdest.
Aber damit nicht genug. Der Contao Manager verfügt auch über eine Schnittstelle (API), womit direkt composer.json
bzw. composer.lock
Dateien an den Contao Manager geschickt werden können und somit eine Installation aktualisiert bzw. verändert werden kann.
Ein solcher Dienst, der diese API nutzt, ist z. B. trakked.io. Auch dort wäre es so, dass wenn ein Angreifer es schafft, sich beim Service einzuschleusen, er dir ungewünschte Pakete unterjubeln könnte.
Die Lösung: Validierung der composer.lock
Getrieben durch diesen Angriffsvektor haben wir in den vergangenen Wochen an einer Validierungs-Bibliothek gearbeitet, welche in der Lage ist zu prüfen, ob der Inhalt einer composer.lock
zur Definition der composer.json
und den konfigurierten Repositories passt.
Entstanden ist dabei terminal42/composer-lock-validator welche diverse Angriffsszenarien korrekt erkennt. Es ist somit nicht mehr möglich:
- Pakete hinzuzufügen, obwohl sie in der
composer.json
gar nicht erwähnt werden.
- Pakete hinzuzufügen, obwohl sie von keinem anderen Paket gewünscht werden.
- Pakete zu entfernen, die da sein müssten.
- Die Metadaten eines Pakets zu verändern.
Der soeben veröffentlichte Contao Manager in Version 1.10 nutzt diese Bibliothek nun überall und verhindert diesen Angriffsvektor ab sofort!
Also auch wenn du keinen Dienst nutzt, der von der API Gebrauch macht, so bleibst du ab sofort von der Gefahr einer feindlichen Übernahme der Composer Resolver Cloud geschützt.
Weiterhin viel Spass beim neuerdings viel sichereren Updaten von Paketabhängigkeiten! 😎 🔐
Kommentare
Kommentar von Franko |
Wie immer informativ & dabei die Komplexität einfach erklärt u. auf den Punkt gebracht.
Mein Dank an Yanick/Andreas (& weitere) für diese Beiträge & Pflege des Contao Manager.
Franko
Kommentar von Philipp |
Mega!!!
Kommentar von Bernhard |
Alle Daumen hoch! Danke für die Info und natürlich auch für die stetige Weiterentwicklung des CM.
Bernhard
Kommentar von Erich Jännert |
Super anschauliche Erklärung. Passt zu Contao!
Einen Kommentar schreiben