
Workaround-Leitfaden für die CVE-2022-41923 Privilegienverwaltungsschwachstelle im Grails Spring Security Core Plugin, der gepatchte Filterdefinitionen für Annotation-, InterceptUrlMap- und Requestmap-Konfigurationen bereitstellt.
Die Schwachstelle CVE-2022-41923 im ungepatchten Grails Spring Security Core (GSSC)-Plugin kann zu einer unsachgemäßen Berechtigungsverwaltung führen. Dieses Repository beschreibt, wie der Fehler umgangen werden kann.
Wenn Sie eine ungepatchte Version des Plugins verwenden, empfehlen wir dringend, auf eine gepatchte Version zu aktualisieren. Falls Sie nicht sofort aktualisieren können, empfehlen wir, den in diesem Dokument beschriebenen Workaround zu implementieren. Dies ist besonders wichtig, wenn Sie die GSSC-Plugin-Version 2.x verwenden, da für Version 2.x kein Patch verfügbar ist.
Um den Workaround korrekt zu konfigurieren, müssen Sie Folgendes wissen:
Die Version des GSSC-Plugins, die Ihre Anwendung verwendet. Suchen Sie die Versionsnummer in Ihrer build.gradle-Datei.
(Suchen Sie bei Grails 2.x in der Datei BuildConfig.groovy).
Welchen Sicherheitskonfigurationstyp Sie verwenden, d. h. den Konfigurationswert für
grails.plugin.springsecurity.securityConfigType
| Konfigurationswert | Dokumentationsreferenz |
|---|---|
Annotation (Standard) |
Hinweis: In allen folgenden Anweisungen und Konfigurationen wird das Paket demo verwendet.
Passen Sie dieses Paket für Ihre Anwendung und den Speicherort der eingefügten gepatchten Quelldateien entsprechend an.
Ermitteln Sie die benötigte Workaround-Klasse basierend auf Ihrem Sicherheitskonfigurationstyp.
| Konfigurationswert | Workaround-Klasse |
|---|---|
Annotation | PatchedAnnotationFilterInvocationDefinition |
InterceptUrlMap | PatchedInterceptUrlMapFilterInvocationDefinition |
Requestmap |
Kopieren Sie die entsprechende Quelldatei in Ihren src/main/groovy-Quellbaum.
Fügen Sie abschließend die folgende Konfiguration zu Ihrer application.groovy-Konfigurationsdatei hinzu,
und ersetzen Sie dabei PatchedAnnotationFilterInvocationDefinition durch die benötigte Workaround-Klasse.
grails.plugin.springsecurity.objectDefinitionSourceBeanClass = 'demo.PatchedAnnotationFilterInvocationDefinition'
Ermitteln Sie wie oben die benötigte Workaround-Klasse basierend auf Ihrem Sicherheitskonfigurationstyp.
Kopieren Sie die entsprechende Quelldatei in Ihren src/groovy-Quellbaum.
Bearbeiten Sie dann Ihre Bean-Konfiguration basierend auf dem Sicherheitskonfigurationstyp Ihrer Anwendung.
Wenn Sie den Sicherheitskonfigurationstyp Annotation verwenden, bearbeiten Sie die grails-app/conf/spring/resources.groovy wie folgt:
import demo.PatchedAnnotationFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedAnnotationFilterInvocationDefinition) {
application = ref('grailsApplication')
grailsUrlConverter = ref('grailsUrlConverter')
responseMimeTypesApi = ref('responseMimeTypesApi')
boolean lowercase = conf.controllerAnnotations.lowercase
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... vorhandene Bean-Konfiguration ...
}
Wenn Sie den Sicherheitskonfigurationstyp InterceptUrlMap verwenden, bearbeiten Sie die grails-app/conf/spring/resources.groovy wie folgt:
import demo.PatchedInterceptUrlMapFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedInterceptUrlMapFilterInvocationDefinition) {
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... vorhandene Bean-Konfiguration ...
}
Wenn Sie den Sicherheitskonfigurationstyp Requestmap verwenden, bearbeiten Sie die grails-app/conf/spring/resources.groovy wie folgt:
import demo.PatchedRequestmapFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedRequestmapFilterInvocationDefinition) {
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... vorhandene Bean-Konfiguration ...
}
Weitere Informationen zu dieser Schwachstelle finden Sie im Grails-Blogbeitrag.
Fragen und Diskussionen können an dieses Grails Spring Security Core-Plugin Issue auf GitHub gerichtet werden.
| Secured Annotations |
InterceptUrlMap | Statische Zuordnung |
Requestmap | Requestmap-Instanzen |
PatchedRequestmapFilterInvocationDefinition |