Third-Party Patching: Browser, Office und Java automatisch aktuell halten
Einleitung
Windows Update kümmert sich um Windows. Aber Chrome, Firefox, Adobe Reader, 7-Zip, Notepad++, Java, VLC, Zoom und 50 weitere Tools auf jedem Endpoint? Die werden in vielen KMU schlicht ignoriert – mit dem Ergebnis, dass eine veraltete Chrome-Version oder ein 18 Monate alter Adobe Reader das Einfallstor für die nächste Phishing-Kampagne ist. Dieser Artikel zeigt, wie du Drittsoftware ohne teures Patch-Management-Tool flächendeckend aktuell hältst.
Warum das Thema wichtig ist
In den meisten Ransomware-Vorfällen ist nicht das Betriebssystem die Eintrittstür, sondern eine veraltete Anwendung – Chrome-Lücken werden binnen 24h ausgenutzt, Adobe-Reader-CVEs wandern direkt in Phishing-Kits, Java-Lücken landen in Exploit-Kits noch am Patch-Tag. Microsoft Defender Vulnerability Management zählt regelmäßig Drittsoftware als die Asset-Klasse mit der höchsten Anzahl ausnutzbarer CVEs. Wenn das OS gepatcht ist, der Browser aber nicht, schützt dich die OS-Härtung vor sehr wenig. Third-Party Patching ist die zweite Hälfte des Patch-Managements – und in vielen KMU die größere Lücke.
Welche Tools du brauchst
Drei Werkzeug-Familien decken 95 % der Third-Party-Welt auf Windows ab:
| Tool | Wofür | Kosten |
|---|---|---|
| winget (Windows Package Manager) | Microsoft-eigener Paketmanager, ab Win10 21H1 vorinstalliert | kostenlos |
| Chocolatey | reife Paketverwaltung mit großem Repository | kostenlos (Open Source), Business optional |
| PSWindowsUpdate / WSUS / Intune | OS- und teilweise App-Updates über Microsoft-Stack | kostenlos / Lizenz |
| Patch My PC (kostenfreie Home-Variante / Cloud-Pricing) | Catalog-Integration in WSUS / Intune | mixed |
Für reine Linux-Welten reicht unattended-upgrades bzw. dnf-automatic plus die Distribution-Repos – die meisten Tools (Firefox-ESR, LibreOffice, OpenJDK) kommen sowieso aus dem Distributions-Paket.
winget für KMU – der pragmatische Standard
winget ist ab Windows 10 21H1 / Windows 11 vorinstalliert. Quellen-Repository: winget (Microsoft) und msstore. Damit lassen sich >5000 Anwendungen aktualisieren.
# alle installierten Pakete anzeigen
winget list
# alle Pakete updaten, die ein Update bekommen können
winget upgrade --all --silent --accept-source-agreements --accept-package-agreements
# nur ein konkretes Paket
winget upgrade Mozilla.Firefox --silent
Per Scheduled Task einmal pro Nacht ausgeführt, ist der Großteil der Endpoint-Drittsoftware aktuell:
# Scheduled Task erstellen (als SYSTEM, täglich 02:30)
$action = New-ScheduledTaskAction `
-Execute "powershell.exe" `
-Argument "-NoProfile -ExecutionPolicy Bypass -Command `"winget upgrade --all --silent --accept-source-agreements --accept-package-agreements *>> C:\ProgramData\winget-update.log`""
$trigger = New-ScheduledTaskTrigger -Daily -At 2:30am
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest
Register-ScheduledTask -TaskName "WingetDailyUpdate" -Action $action -Trigger $trigger -Principal $principal
Wichtig: winget braucht den Benutzerkontext für manche Pakete. Wenn ein Paket im Userspace installiert ist (z. B. Slack, Teams, Discord), wird der SYSTEM-Aufruf es nicht updaten. Workaround: pro User per Logon-Skript laufen lassen.
Chocolatey – die mächtigere Alternative
Chocolatey (kurz: choco) hat mit ~10.000 Paketen das größere Repository und unterstützt SYSTEM- und User-Installs sauber. Für KMU lohnt sich vor allem die Open-Source-Variante:
# Installation (einmalig)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# Pakete listen
choco list --local-only
# alles updaten
choco upgrade all -y --no-progress
Mit Chocolatey kannst du via chocolateyinstall.ps1-Skripten auch eigene Pakete bauen (z. B. für branchenspezifische Software, die nicht im Repo ist). Für die meisten KMU genügt aber der Standard-Repository-Inhalt.
Für die Verteilung an mehrere Endpoints empfiehlt sich ein internal Chocolatey Repository (z. B. mit Sonatype Nexus oder ProGet). Die Endpoints holen sich Pakete dann von intern, was Bandbreite spart und du kannst Versionen freezen.
Browser-Patching – Sonderfall
Browser sind die meistangegriffene Software-Klasse überhaupt. Hier reicht wingetlocally oft nicht – setze auf die eingebauten Update-Mechanismen und kontrolliere sie zentral:
- Chrome / Edge: ADMX-Templates mit
UpdateDefault=1(silent install of all updates),AutoUpdateCheckPeriodMinutes=60. Microsoft pushed Edge ohnehin via Windows Update. - Firefox:
policies.json(inC:\Program Files\Mozilla Firefox\distribution\) mit"DisableAppUpdate": falseund"AppAutoUpdate": true. Für ESR per WSUS oder Group Policy. - Safari (Mac): über macOS Software Update – eigenes Pflegeregime.
Setze in den GPOs ausdrücklich auf automatische Updates ohne User-Konfirmation – sonst bleiben die Tabs offen und das Update wird wochenlang verschoben.
Office, Adobe Reader, Java – die dauerhaften Problemzonen
Microsoft 365 / Office 2019/2021: Updates über den Click-to-Run-Channel. Per GPO unter Microsoft Office 2016 (Computer) → Updates → “Enable Automatic Updates” + “Update Channel: Monthly Enterprise Channel” einstellen. Das Office-Deployment-Tool (setup.exe /configure) mit XML-Konfiguration ist die zuverlässigste Methode.
Adobe Reader DC: Updater-Service AdobeARMservice muss laufen. Per GPO unter HKLM\SOFTWARE\Policies\Adobe\Acrobat Reader\DC\FeatureLockDown\cWelcomeScreen → bShowWelcomeScreen=0 und Updater enforcen. Alternative: winget upgrade Adobe.Acrobat.Reader.64-bit. Noch besser: Adobe Reader durch SumatraPDF / FoxitReader / Edge-PDF ersetzen, wo möglich.
Java: Die wichtigste Frage ist: Brauchst du noch Oracle JRE auf Endpoints? In 90 % der KMU-Cases lautet die Antwort „nein“. Wenn doch (z. B. Branchen-App), dann auf OpenJDK wechseln (Eclipse Temurin, Microsoft OpenJDK – beides via winget verfügbar) und die Oracle-Lizenz-Falle umgehen. Old-school Oracle-JRE bleibt eine der instabilsten und am häufigsten ausgenutzten Software-Klassen.
Inventur: was läuft eigentlich überall?
Bevor du patchen kannst, musst du wissen, was installiert ist. Per PowerShell remote über alle Domain-Hosts:
# Software-Inventur über WMI – Achtung: kann lange laufen
$computers = (Get-ADComputer -Filter * -Properties Name).Name
$inventory = foreach ($pc in $computers) {
try {
Get-CimInstance -ClassName Win32_Product -ComputerName $pc -ErrorAction Stop |
Select-Object @{n='Host';e={$pc}}, Name, Version, Vendor
} catch {}
}
$inventory | Export-Csv -Path "software-inventur.csv" -NoTypeInformation
Win32_Product ist langsam (triggert MSI-Reconfigure) – besser: Registry direkt lesen via Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*. Wer Wazuh / OSQuery / Lansweeper im Einsatz hat, hat diese Inventur ohnehin schon.
Mit der Liste in der Hand: Top-20-Anwendungen identifizieren, die >50 % der Endpoints betreffen. Das sind die, die als Erstes ins automatisierte Patching müssen.
Update-Erfolg messen
Patching ohne Reporting ist Wunschdenken. Drei Metriken pro Woche:
- Patch-Coverage: % der Endpoints, auf denen das Update-Skript erfolgreich gelaufen ist (Logfile / Scheduled-Task-Status auswerten)
- Outdated-Apps-Count: pro Endpoint, wie viele Pakete veraltet sind (
winget list --upgrade-available | Measure-Object) - CVE-Exposure: bekannte CVEs in installierten Versionen – z. B. via
OSV-Scanneroder OpenVAS / Greenbone
Ein einfaches Dashboard in Grafana / Excel mit Trend über die Zeit zeigt sofort, wenn die Coverage einbricht.
SIGMA-Rule: ungeplanter Patch-Fehler
Wenn Updates plötzlich nicht mehr durchgehen, willst du das in Stunden, nicht Wochen sehen.
title: Winget Update failed multiple times in a row
detection:
selection:
EventID: 11 # Sysmon FileCreate
TargetFilename|contains: 'winget-update.log'
filter:
LogContent|contains: 'No applicable upgrade found'
condition: selection
timeframe: 7d
count: '> 3 same host'
level: medium
Sauberer ist eine kleine PowerShell-Auswertung des Logfiles, die per E-Mail / Slack / Teams meldet, wenn das Update fehlschlägt.
Stolperfallen
- User-installierte Software (Slack, Teams, Spotify) wird vom SYSTEM-Update nicht erfasst – brauchst Logon-Skript pro User
- Reboot-pflichtige Updates (Java, Office, einige Treiber) funktionieren nur, wenn die Endpoints regelmäßig neu starten
- Lizenzpflichte Software (Adobe Creative Cloud, AutoCAD) muss über die Hersteller-eigene Update-Mechanik laufen, nicht über winget
- Branchen-Software ohne Update-Mechanismus: hier hilft kein Tool – bleibt manueller Vendor-Kontakt
- Updates brechen Funktionalität: Pilot-Ring vor Production-Ring (5 % der Endpoints, 7 Tage Beobachtungszeit) reduziert das Risiko deutlich
Praxis-Checkliste
- Software-Inventur über alle Endpoints gezogen, Top-20-Anwendungen identifiziert
- winget oder Chocolatey ausgerollt (mind. einer von beiden auf jedem Windows-Endpoint)
- Scheduled Task für nächtliches
winget upgrade --allaktiv - Logon-Skript für User-Space-Updates aktiv
- Browser-Auto-Updates per GPO erzwungen (Chrome, Edge, Firefox)
- Office-Update-Channel explizit gesetzt (Monthly Enterprise empfohlen)
- Oracle JRE durch Eclipse Temurin / Microsoft OpenJDK ersetzt
- Adobe Reader durch SumatraPDF / Edge-PDF ersetzt, wo möglich
- Wöchentliches Patch-Coverage-Reporting (CSV / Dashboard) etabliert
- Pilot-Ring (5 % Endpoints, 7 Tage Vorlauf) für riskante Updates definiert
Fazit
Third-Party Patching ist die unterschätzte Hälfte des Patch-Managements – und mit winget oder Chocolatey ohne Mehrkosten in den Griff zu bekommen. Die eigentliche Arbeit ist nicht das Tool, sondern die Disziplin: Inventur pflegen, Auto-Updates erzwingen, Coverage messen, Ausreißer-Hosts triagieren. Wer das ein Quartal durchhält, hat eine der größten Eintritts-Türen für Ransomware geschlossen.
Wenn du tiefer einsteigen willst: Im Newsletter zeige ich jeden Monat konkrete Patch-Workflows, winget-/Choco-Tipps und Reporting-Beispiele. Trag dich ein.