Unsere Organisation verlangt, dass wir alle High/Critical-Schwachstellen in unseren Docker-Images patchen, bevor wir sie in die Produktion einsetzen können. Derzeit hat unser Build von Discourse, der auf discourse/base:2.0.20251008-0017-web-only basiert, einige davon, die wir nach Möglichkeit zu patchen versuchen. Nachfolgend finden Sie die Liste der Schwachstellen, die wir patchen müssen.
Können Sie mir Ratschläge geben, ob das blinde Aktualisieren einer dieser Versionen auf Versionen, die diese Schwachstellen behoben haben, Probleme verursachen wird? Wenn ja, wie können wir feststellen, ob ein Upgrade ein Problem verursacht?
Außerdem stelle ich fest, dass es viele Golang-bezogene Schwachstellen gibt. Verwendet Discourse Golang während der Laufzeit in irgendeiner Weise, oder können wir es einfach vollständig aus dem endgültigen Image entfernen? Dasselbe gilt auch für python.
Ich denke, Sie könnten es einfach ausprobieren und sehen, was passiert. Eine Reihe von Leuten hat einen Vollzeitjob, der sich um Sicherheit und Bibliotheksversionen kümmert.
Aber warten Sie. Wenn Sie sich das Basis-Docker-Image ansehen (oh, vielleicht meinen Sie das Image, das Sie erstellt haben; ich kann es nicht genau sagen), dann denke ich, dass Ihre Aufgabe unmöglich ist, da vieles davon im Discourse-Quellcode verwaltet wird. Zum Beispiel aktualisiert dieser Commit Rack auf 2.2.20. Die Version im Basis-Docker-Image spielt keine Rolle. Sie möchten wahrscheinlich Ihr Image mit dem Launcher erstellen und dann sehen, welche Versionen von Dingen Sie haben. Sie könnten dann etwas YAML hinzufügen, um z. B. Go und Python zu entfernen.
Außerdem gibt es eine Reihe von Sicherheitsproblemen, die nur dann Probleme verursachen, wenn andere Benutzer im System vorhanden sind. Daher spielt es keine Rolle, ob diese in Ihrem Docker-Container vorhanden sind, sodass es für das Discourse-Team wahrscheinlich keine Priorität hat.
Unser aktueller Build-Prozess beginnt mit dem in der vorherigen Nachricht erwähnten Discourse-Basisimage und führt dann ein Skript aus, das nur der Bootstrap-Schritt des unterstützten Installationsprozesses (das Launcher-Skript) ist, jedoch ohne die Schritte auszuführen, die eine aktive Redis/DB-Verbindung erfordern.
Der Bootstrap-Schritt installiert meiner Annahme nach alle Ruby-Abhängigkeiten und die npm-Abhängigkeiten von Discourse. Die Versionen, die in der Schwachstellenliste aufgeführt sind, sind größtenteils Abhängigkeiten der Discourse-Anwendung selbst.
Ich habe auch etwas recherchiert und festgestellt, dass die von ihm markierten Golang-Abhängigkeiten von einer npm-Abhängigkeit namens esbuild stammen, die mit Golang erstellt wird. Die von ihm verwendete Go-Version hat eine Schwachstelle in der Standardbibliothek, die markiert wird. Ich glaube daher, dass die Behebung dieses Problems eine Neukompilierung dieser Bibliothek erfordern würde, daher bin ich mir nicht sicher, ob sich der Aufwand überhaupt lohnt.
Die anderen Schwachstellen sind jedoch entweder direkte Ruby/npm-Abhängigkeiten oder transitive Abhängigkeiten von Discourse. Meine Frage bezog sich hauptsächlich auf die Aktualisierung der Versionen dieser Abhängigkeiten, kurz bevor sie installiert werden. Ich verstehe, dass es für die Entwickler von Discourse schwierig wäre, an der Behebung dieser Probleme zu arbeiten. Ich habe nur versucht zu verstehen, ob es eine Möglichkeit gibt zu überprüfen, ob das „Upgrade“ ein Problem verursacht oder nicht, da ich vermutete, dass einige Abhängigkeiten Probleme möglicherweise nur in bestimmten Code-Pfaden verursachen.