In diesem Blogpost hat Thomas Shinder von Microsoft den neuen “Microsoft Security Guide” vorgestellt. Der Artikel ist ziemlich interessant und sehr lesenswert.
Besonders der letzte Abschnitt hat es mir angetan. Dort heißt es:
The Security Update Guide development API can be used to create a report in CVRF format. To use this API, click the DEVELOPER tab, and log into TechNet when prompted. From this tab, you can see code samples in a variety of scripting languages.
Jetzt wird es doch interessant. Microsoft veröffentlicht also Sicherheitsprobleme und Updates im Security Guide und bietet direkt auch eine API an. Das Beste daran: Es gibt sogar ein PowerShell Modul, welches einem etwas Arbeit abnimmt. Die Daten können aber auch via Webrequest direkt im XML oder JSON Format runtergeladen und weiter verarbeitet werden. Um an die Daten zu kommen wird lediglich ein kostenloser API-Key benötigt.
Als ich den Artikel gelesen hatte, habe ich direkt gedacht: Eine Mail sobald Exchange Updates oder Sicherheitslücken veröffentlicht werden, wäre schon klasse…
Ich habe daher angefangen ein kleines Script zu schreiben, welches diese Aufgabe erfüllt. So sieht es bisher aus:
Das Script, welches weiter unten runtergeladen werden kann, ist noch nicht perfekt, aber es steht ja noch am Anfang. Ich plane das Script in den Exchange Reporter, sowie in den Exchange Monitor aufzunehmen. Bis es soweit ist, warte ich aber noch ein paar CVEs ab um Erfahrungen zu sammeln.
Das PowerShell Script hat zwei Voraussetzungen. Den API Key und das PowerShell Modul “MsrcSecurityUpdates”. Der API-Key kann kostenlos auf der Website des Microsoft Security Guide beantragt werden, dazu wird lediglich ein Microsoft-Konto benötigt:
Nachdem sich mit einem Microsoft-Konto angemeldet wurde, kann der API Key direkt angezeigt werden:
Jetzt kann das Powershell Modul MsrcSecurityUpdates installiert werden. Für die Installation muss die PowerShell mit Administratorrechten gestartet werden:
Install-Module MSRCSecurityUpdates -force
Im Script selbst müssen die ersten 7 Zeilen angepasst werden, ich denke es erklärt sich von selbst:
Hier kann das Script runtergeladen werden:
ExchangeCVENotification
Nach den erforderlichen Anpassungen kann eine neue geplante Aufgabe angelegt werden, welche das Script täglich startet:
Derzeit erwartet das Script noch, dass es täglich gestartet wird. Das Script benachrichtigt nur wenn neue Inhalte für Exchange Server gefunden wurden. Es gibt noch einiges zu verbessern, Feedback nehme ich gerne entgegen.
Hi Frank,
ich habe gerade die Microsoft Security API angefordert und im Skript eingetragen.
Der Aufruf führt allerdings leider zu folgender Fehlermeldung:
“
PS D:\ExchangeCVENotification> .\ExchangeCVENotification.ps1
Get-MsrcCvrfDocument : Das Argument für den Parameter „ID“ kann nicht überprüft werden. Das Argument „2019-Aug“ gehört
nicht zu dem vom ValidateSet-Attribut angegebenen Satz „2016-Apr,2016-Aug,2016-Dec,2016-Jul,2016-Jun,2016-May,2016-Nov,
2016-Oct,2016-Sep,2017-Apr,2017-Aug,2017-Dec,2017-Feb,2017-Jan,2017-Jul,2017-Jun,2017-Mar,2017-May,2017-May-B,2017-Nov,
2017-Oct,2017-Sep,2018-Apr,2018-Aug,2018-Dec,2018-FEB,2018-Jan,2018-Jul,2018-Jun,2018-Mar,2018-May,2018-Nov,2018-Oct,20
18-Sep,2019-Apr,2019-Feb,2019-Jan,2019-Jul,2019-Jun,2019-Mar,2019-May“. Geben Sie ein Argument an, das in dem Satz
enthalten ist, und führen Sie dann den Befehl erneut aus.
In D:\ExchangeCVENotification\ExchangeCVENotification.ps1:114 Zeichen:37
+ $CvrfDoc = Get-MsrcCvrfDocument -ID $monthOfInterest -ApiKey $APIKey
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-MsrcCvrfDocument], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Get-MsrcCvrfDocument
get-date : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben
akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben
akzeptieren.
In D:\ExchangeCVENotification\ExchangeCVENotification.ps1:115 Zeichen:63
+ $CvrfRelease = $CvrfDoc.DocumentTracking.CurrentReleaseDate | get-date
+ ~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetDateCommand
„
Hi Franky,
bitte nimm dich auch den aktuellen Update Problem an.
Das dürfte einige deiner followover interessieren.
„Cant start Transport service after installing March 2017 Windows Updates“
Hi Marco,
ich finde nur einen Thread zu KB4013429 auf Edge Transport Servern. Das KB4013429 wurde allerdings heute durch das KB4015438 ersetzt. Vielleicht ist das schon nicht mehr relevant? Ich habe keine Edge Transport Server im Einsatz und kann es daher auch nicht testen.
Gruß, Frank