Hinweise zu .NET-Sicherheitsupdates für CVE-2018-8421 und SharePoint-Workflows
Nach der Installation von .NET-Sicherheitsupdates für CVE-2018-8421 funktionieren SharePoint-Workflows offenbar nicht mehr, werden beendet und stürzen beim Start ab. Microsoft hat darauf reagiert und eine Lösung bereitgestellt:
Auf dieser Seite wird auch ein Script vorgestellt, das dieses Problem beheben soll. Ich selbst hatte heute dieses Problem auf einer SharePoint-Farm, allerdings konnte das Script das Problem scheinbar nicht lösen. In den ULS-Logs war zum Zeitpunkt des Starts eines Workflows folgende Meldung zu finden:
RunWorkflow: Microsoft.SharePoint.SPException: <Error><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeTypeReferenceExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeTypeReferenceExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeTypeReferenceExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeTypeReferenceExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeTypeReferenceExpression is not mark...
Dies bedeutet, dass der Typ CodeTypeReferenceExpression in der web.config nicht als sicher angegeben wurde. Für die anderen Typen wurden die entsprechenden Einträge durch das Script gesetzt. Wir müssen also sicherstellen, dass das Script auch den Eintrag für CodeTypeReferenceExpression setzt. Hierzu muss im Script die folgende Zeile angepasst werden:
$typeNames = @( "CodeBinaryOperatorExpression", "CodePrimitiveExpression", "CodeMethodInvokeExpression", "CodeMethodReferenceExpression", "CodeFieldReferenceExpression","CodeThisReferenceExpression", "CodePropertyReferenceExpression")
Am Ende des Arrays ist die Zeichenkette “CodeTypeReferenceExpression” als zusätzlicher Wert zu ergänzen. Nach Ausführen des Scripts wird auch hierfür der Eintrag in der web.config gesetzt und die Workflows laufen damit wieder.
Hinweis: Es ist nicht klar, warum ausgerechnet dieser Typ nicht mit im Script aufgeführt war. Es könnte also sein, dass auch ein anderer Typ nicht dort mit aufgeführt ist. In diesem Fall müsste analog nach der Fehlermeldung geschaut werden, der Typ ausfindig gemacht werden und dieser im Script ergänzt werden.