Windows Package Manager (winget) und Sicherheit und Vertrauenswürdigkeit der Pakete - Wie ist es darum bestellt?

Exploit

Member
Bisher installiere ich alle meine Programme, die ich für Windows benötige, manuell auf die klassische Weise, während ich unter Debian Linux ein schönes Paket Repository habe. Damit habe ich unter Windows leider einen erhöhten Pflegeaufwand, daher wäre es schön, für Windows eine ähnliche Lösung zu haben.

Mir war zwar schon bekannt, dass es seit einiger Zeit auch für Windows vergleichbare Paketmanager wie z.B. Chocolatey oder Ninite gibt, aber bei denen hat mich immer die mangelnde Sicherheit und Vertrauenswürdigkeit der Pakete oder mangelnde Pflege der Pakete bezüglich neuer Versionen und Sicherheitspatches von einer Nutzung abgehalten.

Nun habe ich leider erst heute entdeckt, dass Microsoft seit einiger Zeit mit dem Windows Package Manager (winget) eine eigene nun "offizielle" Lösung anbietet.
Weiß jemand wie es da bezüglich der Sicherheit der im Repository angebotenen Pakete aussieht?

Sind die Pakete bspw. alle kryptografisch signiert, so dass im Bedarfsfall der verwendete Key einer Person, die Pakete ins Repository einstellt, das Vertrauen entzogen und der Key für ungültig erklärt werden kann und das Paketsystem den Anwender darauf hinweist, so dass man diese Pakete, falls man sie installiert hat, automatisiert entfernen kann?
Und gibt es Maßnahmen den Entwicklern von z.B. Open Source Projekten so eine Art offiziellen Key zu geben, mit dem sie ihre Open Source Software signieren können, so dass hier nicht jeder Beliebige ein Paket eines bekannten Open Source Programms in Repo stellt bzw. man die Herkunft zwischen offiziellen Entwicklern eines Projekts vs. irgendwelche Dritte die den Code dieser Projekte nur nehmen und selber zum Paket schnüren unterscheiden kann?

Dass Sha256 Hashs, Microsoft SmartScreen, statische Analyse zur Validierung eingesetzt werden ist mir bekannt, aber welche Maßnahmen werden noch getroffen, so dass man den dort angebotenen Paketen ein Vertrauen zugestehen kann?

Wie sieht es mit der Aktualität der Pakete aus? Werden Pakete, die bekannt gewordene Sicherheitslücken enthalten schnell durch neue Versionen der Pakete ersetzt, in denen diese Sicherheitslücken gestopft wurden oder veralten die im Repo, während es auf der offiziellen Webseite der Projekte neue Versionen gibt?
Gibt es hier eine Art automatisierter Kontrolle, die sicherstellt, dass die Pakete aktuell gehalten werden. Z.B. ein automatisierter Vergleich der Version auf den Webseiten der Open Source Projekte mit der Version im Repo?

Wie wird mit verweisten Paketen umgegangen? Z.B. Warnung an den Nutzer nach n Tagen mit der Möglichkeit, diese zu entfernen?

Und zum Schluss noch eine weitere Frage, setzt ihr auf euren privaten Rechnern irgendeine dieser Paketsysteme Chocolatey, Ninite, winget usw. für Windows ein oder installiert ihr auch noch alles manuell?
 
Zum Auflisten von Upgrades ist winget ganz nett, aber ich schau dann lieber nochmals auf die Seite der Treiber/Programme, um zu sehen was sich geändert hat, und installiere per Hand.
Inwieweit denn überhaupt überwacht wird, welche Daten korrekt und vertrauenswürdig sind, weiß ich nicht bei wingets Download-URLs und anderen Quellen.
 
Danke für deine Antwort.
Mir stellt sich da noch eine andere Frage. Es gibt z.B. Hersteller die in ihren Installern Software von Dritten einfügen und wenn man den Installer ausführt, dann kann man durch entsprechendes entfernen des Häkchen die Installation dieser Drittsoftware abwählen. In den meisten Fällen ist dies sinnvoll.
Bei winget aber wird der installer in einem silent Modus, also ohne Nutzerinteraktion ausgeführt, was im Prinzip für eine Lösung wie winget durchaus sinnvoll ist. Aber gerade bei so eingebetteter Drittsotware ist es das nicht. Da frage ich mich, wie es sich dann da bei solchen Installern mit eingebetteter Drittsoftware verhält?
Installiert er dann einfach auch die eingebettete Drittsoftware?

Siehe dazu bspw. hier Punkt 1.2.3:
https://learn.microsoft.com/de-de/windows/package-manager/package/windows-package-manager-policies

Dann kann man noch die Informationen zu jedem Paket sich anzeigen lassen, einschließlich der URL wo die Software downgeladen wird. So weit so gut. Dann könnte man zumindest überprüfen, ob das eine offzielle URL des Projekts bzw. Herstellers ist. Das Erstellen der Manifestdatei mit dem die Informationen für ein Paket in das Repository eingestellt werden, kann allerdings jeder Dritte erstellen und in das Repository einstellen.
Da stellt sich jetzt die Frage, ob dieser Dritte diese URL auch später ändern kann.
Wenn das der Fall sein sollte, dann müsste man praktisch bei jedem Update überprüfen, ob die URL auch noch die richtige, also die vom Hersteller ist oder sie inzwischen geändert wurde. Und wenn man das machen muss, dann kann man sich die Installer auch klassisch manuell downloaden, weil dann der ganze Zeitvorteil weg wäre.

Einen Weg bei einem
winget update all
Befehl, der alle Pakete updated, bestimmte Pakete auszuschließen, habe ich auch noch nicht gefunden. Das wäre aber wichtig, um bestimmte Pakete oder Paketmaintainer ausschließen zu können.
Momentan kann man ein einzelnes Repository nur als ganzes ausschließen, wovon es momentan zwei offizielle gibt. Einmal der MS Store und dann noch das Microsoft winget community repo.

Für Admins, die viele Firmenrechner verwalten müssen, ist winget durchaus interessant, da man wohl auch sein eigenes lokales Repository erstellen kann und über dieses hat man ja dann durchaus die Kontrolle. Zuhause privat ist das aber zu viel Aufwand, sofern man nur 1-2 Rechner warten muss.

Dann hat winget noch Telemetry Einstellungen, die man aber entsprechend konfigurieren kann und auch sollte:
https://learn.microsoft.com/de-de/windows/package-manager/winget/settings#telemetry-settings

Da die Pakete im silent Modus installiert werden, gehe ich mal davon aus, dass man nicht mehr frei wählen kann, wo die Programme installiert werden sollen. Die dürften also Standardmäßig in %PROGRAMFILES% (also in der Regel C:\Programme bzw. C:\Program Files)
oder %PROGRAMFILES(X86)% (also C:\Programme (x86) bzw. C:\Program Files (x86)) landen.
Sicherheitstechnisch ist das zwar egal, aber ich bevorzuge es meine eigene Ordnerstruktur zu haben, wo ich was rein installiere. Mit einem Paketsystem ist das zwar nicht mehr so wichtig, aber anderseits ist meine C: Partition nicht gerade die größte. Das könnte also zumindest für meine bestehende Installation ein Problem sein.

EDIT:
Die ganzen Manifestdateien des Community Repos kann man sich übrigens hier ansehen:
https://github.com/microsoft/winget-pkgs/tree/master/manifests/

Und wie so ein Prozess abläuft, sieht bspw. so aus, in dem Fall ist das für die Mediaplayer Software von Videolan gewesen:
https://github.com/microsoft/winget-pkgs/pull/101368

EDIT2:
Manche Software scheint allerdings im Repo veraltet zu sein.
Ich habe mir dazu mal die Software Writage als Beispiel rausgesucht, denn auf der obigen Manifestseite lag da der letzte commit 1 ganzes Jahr zurück:
https://github.com/microsoft/winget-pkgs/tree/master/manifests/w

Wie alt der commit ist muss erst einmal nichts bedeuten, denn es könnte ja sein, dass es keine neue Version von der Software gibt.
Im Repo ist Version 2.8.2.0 die neuste:
https://github.com/microsoft/winget-pkgs/tree/master/manifests/w/writage/writage

In der Manifestdatei kann man nachsehen, wo das Programm bezogen wird, also was die URL ist:
https://github.com/microsoft/winget-pkgs/pull/46614/files

Aus der URL ergibt sich die Projektseite und wenn man die besucht, kann man nachsehen, welche Version zum Download angeboten wird:
https://www.writage.com/download/

Das ist Version 2.10.0.0, die ist also neuer als die, die im Repo angeboten wird. Leider ist es eine propritäre Software und eine Changelog finde ich nirgends. Es zeigt aber schon einmal, dass die Installation über winget keine Garantie ist, dass die Software immer aktuell ist.
Das dürfte also von Maintainer zu Maintainer und von Paket zu Paket unterschiedlich sein.

Stichprobenartig habe ich mir noch ein paar bekanntere Open Source Projekte angesehen, da scheint es bezüglich der Aktualität besser auszusehen.
 
Last edited:
Back
Top