[Gastbeitrag] WMIC QFE "Keine Instanzen verfügbar." ... abgelaufenes Zertifikat

Hallo,

hier ist Michael mit einem Gastbeitrag auf dem deutschen Windows Core Blog.

Ich bin PFE Engineer und in meiner Rolle vor Ort bei einem großen deutschen Kunden eingesetzt.

Kürzlich hatten wir mit einer Herausforderung zu kämpfen von der ich heute berichten möchte:

Der Kunde hat Windows 7 SP1 im Einsatz und Software wird via ConfigMgr 2007 SP2 R3 verteilt und installiert. Aufgrund einer Re-Organisation mussten ca. 10.000 Systeme neu installiert und mit aktueller Software versorgt werden. Die Windows 7 Installation ist ein vorab via SysPrep und ImageX erzeugtes Abbild eines Referenz Systems das zyklisch alle 3-4 Monate erneuert und mit aktueller Software installiert wird (hier sind noch deutlich mehr Schritte, diese wurden aber weil irrelevant nicht betrachtet).

Nach der Installation werden die aktuellen Security Updates sowie funktionelle Hotfixe auf das System installiert. Der Kunde prüft immer wieder bei der Installation mittels WMIC QFE ob der entsprechende Hotfix bereits installiert ist, bzw. auch ob der Hotfix erfolgreich installiert wurde. Genau an dieser Stelle wurde nun bei allen der 10.000 Systeme ein Fehler gemeldet.

C:\wmic qfe

Keine Instanzen verfügbar.

Der Referenz Computer wurde erneut überprüft, hier waren keine Fehler festzustellen. Der Deployment Prozess hatte sich auch nicht geändert, das Vorgehen war also auch okay und mehrfach getestet.

In der Folge haben wir nun überprüft ob:

1 ) WMI okay ist. Und ja, wir konnte alle Queries nach Performance Countern sowie Computereigenschaften ohne Fehler absetzen, sogar die Win32_QuickFixEngineering Klasse konnten wir verifizieren, aber beim Auflisten der Instanzen wurden keine angezeigt, bzw. 0 gemeldet.

 

 

2) Dann überprüften wir ob unter Systemsteuerung „Programme und Funktionen“ die bereits installierten Hotfixe angezeigt werden. -> Das war der Fall.

3) Als weiteren Test überprüften wir neue Hotfixe zu installieren. Das ging ohne Fehler, leider wurden dennoch keine installierten Hotfixe unter Wmic QFE angezeigt.

4) Dann habe ich mir die Datei C:\windows\logs\CBS.log angesehen um zu überprüfen ob es Hinweise auf fehlerhafte Installationen oder Patche gibt.

Hier ist dann folgendes aufgefallen:

2013-07-01 09:04:27, Error CBS Failed to verify if catalog file \\?\C:\WINDOWS\Servicing\Packages\Package_2_for_KB2705219~31bf3856ad364e35~amd64~~6.1.1.1.cat is valid. [HRESULT = 0x800b0101 - CERT_E_EXPIRED]
2013-07-01 09:04:27, Info CBS Failed to initialize package: Package_2_for_KB2705219~31bf3856ad364e35~amd64~~6.1.1.1, from path: \\?\C:\WINDOWS\Servicing\Packages\Package_2_for_KB2705219~31bf3856ad364e35~amd64~~6.1.1.1.mum, existing package: 1 [HRESULT = 0x800b0101 - CERT_E_EXPIRED]
2013-07-01 09:04:27, Info CBS Failed to resolve package [HRESULT = 0x800b0101 - CERT_E_EXPIRED]
2013-07-01 09:04:27, Info CBS Failed to populate children. [HRESULT = 0x800b0101 - CERT_E_EXPIRED]
2013-07-01 09:04:27, Info CBS Failed to initialize internal package [HRESULT = 0x800b0101 - CERT_E_EXPIRED]
2013-07-01 09:04:27, Info CBS Failed to create package. [HRESULT = 0x800b0101 - CERT_E_EXPIRED]
2013-07-01 09:04:27, Error CBS Failed to internally open package. [HRESULT = 0x800b0101 - CERT_E_EXPIRED]
2013-07-01 09:04:27, Info CBS Session: 30307881_965955247 finalized. Reboot required: no [HRESULT = 0x00000000 - S_OK]

Nochmals den Error Code mit dem ERR Tool nachgeschlagen (https://www.microsoft.com/en-us/download/details.aspx?id=985 )
C:\>err 0x800b0101
# for hex 0x800b0101 / decimal -2146762495
CERT_E_EXPIRED winerror.h
# A required certificate is not within its validity period
# when verifying against the current system clock or the
# timestamp in the signed file.
# 1 matches found for "0x800b0101"

Aha, ein Zertifikatsproblem?
Wir haben dann den KB2705219 nochmals runtergeladen und versucht manuell zu installieren und siehe da folgende Fehlermeldung erschien im Installation‘s Event Log:

      Protokollname: Setup
Quelle: Microsoft-Windows-WUSA
Datum: 03.07.2013 11:37:45
Ereignis-ID: 3
Aufgabenkategorie:Keine
Ebene: Fehler
Schlüsselwörter:
Benutzer: Contoso\MKoeppl
Computer: D4779999.Contoso.Org
Beschreibung:
Das Windows-Update "Sicherheitsupdate für Windows (KB2705219)" konnte aufgrund eines Fehlers nicht installiert werden: 2148204801 "Ein erforderliches Zertifikat befindet sich nicht im Gültigkeitszeitraum gemessen an der aktuellen Systemzeit oder dem Zeitstempel in der signierten Datei." (Befehlszeile: ""C:\WINDOWS\system32\wusa.exe" "C:\tmp_SW\Windows6.1-KB2705219-v2-x64.msu" ")

Gut, wenn immer es ein Problem mit dem Windows Component Servicing Stack gibt empfehle ich den Einsatz des CheckSUR Tools (https://support.microsoft.com/kb/947821/de )

Das Ergebnis war leider nicht ganz wie erwartet,….der Fehler war nach wie vor da aber zumindest wurde der Verdacht auf ein Problem mit Zertifikaten und dem Update KB2705219 bestätigt.

=================================
Checking System Update Readiness.
Binary Version 6.1.7601.21645
Package Version 19.0
2013-07-01 10:10

Checking Windows Servicing Packages

Checking Package Manifests and Catalogs
(w)         CBS Catalog Expired      0x800B0101                servicing\Packages\Package_2_for_KB2705219~31bf3856ad364e35~amd64~~6.1.1.1.cat                       
(w)         CBS Catalog Expired      0x800B0101                servicing\Packages\Package_3_for_KB2705219~31bf3856ad364e35~amd64~~6.1.1.1.cat                       

Checking Package Watchlist

Checking Component Watchlist

Checking Packages

Checking Component Store
(w) CSI Catalog Expired 0x800B0101 winsxs\Catalogs\5ecdd16d7678267e96a8c15964d5ca11bcf7f6f5cd1bd7bf28103ffbea31d9c1.cat ccb3aa159d2..53a473e1121_31bf3856ad364e35_6.1.7601.22044_eb09bf772e4bea12
(w) CSI Catalog Expired 0x800B0101 winsxs\Catalogs\f1c7c5a3cc1162153614fe17164933ea85a923dd79b8906ba59f851dc570675f.cat 01800be40f3..2c39cffa780_31bf3856ad364e35_6.1.7601.22044_eb01e5b08795f850       

Summary:
Seconds executed: 539
No errors detected
  CSI Catalog Expired Total count: 2
CBS Catalog Expired Total count: 2

Auch hier also die Bestätigung das es ein Problem mit dem abgelaufenen Catalog gibt (Catalog Expired).
Wie kann man das via GUI verifizieren? Eigentlich ganz einfach, man muss nur im Explorer den Pfad zu dem CAT File wie im CBS.log zu sehen eingeben.

Dann bekommt man die Eigenschaften des CAT Files angezeigt. Wenn man sich nun die Zertifikatsdetails anzeigen lässt sieht man den Fehler schon…

 

Nun also nochmals einen Blick in das Security Bulletin geworfen und auch das Kleingedruckte angesehen…..

 

https://technet.microsoft.com/de-de/security/bulletin/ms12-054

Revisionen

      ·         V1.0 (14. August 2012): Bulletin veröffentlicht.

  • ·         V1.1 (15. August 2012): Es wurde erklärt, dass das Update KB2712808 nur Systemen mit Server Core-Installation von Windows Server 2008 R2 angeboten wird, wenn die Einstellung Printing-ServerCore-Rolle aktiviert ist.
  • ·         V2.0 (9. Oktober 2012): Bulletin überarbeitet, um das Update KB2705219 für Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7 und Windows Server 2008 R2 erneut zu veröffentlichen. Endbenutzer, die Windows XP und Windows Server 2003 verwenden, müssen die erneut veröffentlichten Updatepakete nicht installieren, um ein Problem mit digitalen Zertifikaten zu vermeiden, das in der Microsoft-Sicherheitsempfehlung 2749655 beschrieben ist. Endbenutzer von Windows Vista, Windows 7 und Windows Server 2008 müssen die erneut veröffentlichten Updatepakete installieren, um ein Problem mit digitalen Zertifikaten zu vermeiden, das in der Microsoft-Sicherheitsempfehlung 2749655 beschrieben ist.
  • ·         V2.1 (10. Oktober 2012): Den Häufig gestellten Fragen (FAQ) wurde ein Eintrag bezüglich des erneut veröffentlichten Updates KB2731847 als Anleitung zur Bereitstellung hinzugefügt. Weitere Informationen finden Sie in den häufig gestellten Fragen (FAQs) zu diesem Update.

Tatsache der Patch KB2705219 war erneut veröffentlicht worden als KB2705219-V2 weil bei dem Originalen ein Zertifikat mit relativ kurzer Ablaufzeit verwendet wurde. Testweise haben wir dann den KB2705219 deinstalliert, das ging nur nachdem wir die Systemzeit in die Nähe des installationszeitpunktes gesetzt haben. Sofort nachdem der Hotfix entfernt war konnte der WMI QFE wieder aufgerufen werden. Eine weitere Möglichkeit (und die haben wir für die Fläche nun im Visier) ist die Installation von KB2749655 (https://technet.microsoft.com/de-de/security/advisory/2749655), hier ist auch dokumentiert warum:

Microsoft ist sich eines Problems mit bestimmten digitalen Zertifikaten bewusst, die ohne ordnungsgemäße Zeitstempelattribute von Microsoft generiert wurden. Mit diesen digitalen Zertifikaten wurden später einige wichtige Komponenten und Softwarebinärdateien von Microsoft signiert. Dies könnte Kompatibilitätsprobleme zwischen den betroffenen Binärdateien und Microsoft Windows verursachen. Dies ist zwar kein Sicherheitsrisiko, da die digitale Signatur für Dateien, die von Microsoft erzeugt und signiert wurden, verfrüht ablaufen werden. Dieses Problem kann sich jedoch ungünstig auf die Fähigkeit auswirken, betroffene Microsoft-Komponenten und Sicherheitsupdates richtig zu installieren und zu deinstallieren.

Auf weiteren Systemen haben wir dann sicherstellen können das durch die Installation von KB2749655 das Problem behoben ist. Problem gelöst, Kunde naja …. zufrieden.
Wir konnten zwar das Problem schnell eingrenzen und auch einen (guten) Workaround bereitstellen aber in diesem Fall ist es einfach ärgerlich das wir zunächst überhaupt in ein Problem laufen mussten und das dann auch gleich noch eine derart große Zahl der Anwender betroffen war.
Ich wollte auch noch auf 2 Blog’s von US Kollegen verweisen die ich während meiner Suche nach Lösungen / Ideen gefunden hatte – leider konnte mir keiner der beiden bei der Lösung dieses spezifischen Problems helfen, dennoch fand ich die Informationen sehr hilfreich.

Two Minute Drill: Win32_QuickFixEngineering – No instances available

     https://blogs.technet.com/b/askperf/archive/2012/06/29/two-minute-drill-win32-quickfixengineering-no-instances-available.aspx

Using CheckSUR and update packages to fix corruption

     https://blogs.technet.com/b/joscon/archive/2010/05/26/using-checksur-and-update-packages-to-fix-corruption.aspx

Gruß Michael