SCW-Symbole
Held-Hintergrund ohne Trennlinie
Blog

仔细研究 MVCrequestMatcher Spring 漏洞

Brysen Ackx
Veröffentlicht Apr 19, 2023
Zuletzt aktualisiert am 09. März 2026

Am 20. März 2023 veröffentlichte Spring Security Advisories einen Blogbeitrag, der sich auf eine intern entdeckte Sicherheitslücke CVE-2023-20860 bezog. Es wurden keine detaillierten Informationen bekannt gegeben, außer dass es sich um ein Problem der Zugriffskontrolle bei der Verwendung von mvcMatchers handelt. Die Spring-Entwickler haben das Problem behoben, und es wird ein Versionsupdate empfohlen.

Möchten Sie eine Erfahrung aus erster Hand machen? Probieren Sie die Mission hier aus.

Da Sicherheit unser Hauptaugenmerk bei Secure Code Warriorist, haben wir uns entschlossen, diese mvcRequestMatchers-Schwachstelle genauer zu untersuchen und herauszufinden, wo das Kernproblem liegt.

Spring bietet die RequestMatcher-Schnittstelle, um festzustellen, ob eine Anfrage mit einem Pfadmuster übereinstimmt. Schauen Sie sich den folgenden Codeausschnitt an, in dem die Hilfsmethode mvcMatchers verwendet wird, um die Endpunkte zusammen mit ihren Authentifizierungs- und Autorisierungsanforderungen zu registrieren. Zum Beispiel können wir sehen, dass nur Benutzer mit der Rolle ADMIN auf den Endpunkt /logs/audit zugreifen können. 

MvcMisMatchers?

In Spring ist ** ein Muster, das mit einer beliebigen Anzahl von Verzeichnissen und Unterverzeichnissen in einer URL übereinstimmt. Zum Beispiel würde /bankaccount/** allen URLs entsprechen, die mit /bankaccount/ beginnen, einschließlich Unterverzeichnissen wie /bankaccount/dashboard/settings

Das *-Muster ist ein Muster, das mit jeder URL übereinstimmt und genau eine Ebene eines Unterverzeichnisses hat. Zum Beispiel würde /bankaccount/* auf bankaccount/dashboard passen .

Bei der Konfiguration der Matcher mit * stellt Spring fest, dass "eine Fehlanpassung beim Pattern-Matching zwischen Spring Security und Spr ing MVC" stattgefunden hat, wodurch die Schwachstelle entstand.

Da dem doppelten Platzhalter kein Trennzeichen vorangestellt ist, passt der Pfad nicht zu einer eingehenden Anfrage, da allen eingehenden Anfragen ein Schrägstrich vorangestellt wird. Dies bedeutet, dass die Zugriffskontrollregeln nicht angewendet werden und jeder nicht authentifizierte Benutzer auf die Ressourcen zugreifen kann.

Werfen wir einen Blick auf den Commit, der das Problem behoben hat.

Die auffälligste und wichtigste Änderung ist die Hinzufügung von Zeile 315, mit der die Umgehung der Autorisierungs- und Authentifizierungsregeln behoben wird. Sie stellt sicher, dass jedem Pfadmuster, das übermittelt wird, ein Schrägstrich (/) vorangestellt wird. 

404 Treffer nicht gefunden

PathPatternMatchableHandlerMapping-Klasse (Quelle : spring-framework)

Beim Senden einer Webanforderung an /bankaccounts/view wird die Match-Methode die im Sicherheitsfilter definierten Muster analysieren und mit dem angeforderten Pfad vergleichen. Der Parser wandelt das angegebene Muster in einen Baum von Pfadelementen um.

Der Parser liest das erste Zeichen als SeparatorPathElement. Er setzt dann das Lesen der Zeichenfolgen bis zum nächsten Trennzeichen fort und erstellt ein neues LiteralPathElement.

Was läuft also schief, wenn ** als Muster verwendet wird? 

Es gibt zwar eine Vielzahl von Pfadelementtypen, aber die interessantesten sind das WildcardPathElementund das WildcardTheRestPathElement mit ihren jeweiligen Zeichenkettendarstellungen: * und /**. 

Ein WildcardPathElement stimmt mit null oder mehr Zeichen innerhalb eines einzelnen Pfadsegments überein, während ein WildcardTheRestPathElement mit null oder mehr Pfadsegmenten allein übereinstimmt (einschließlich der Trennzeichen).

Letzteres gibt uns einen Hinweis darauf, was falsch läuft, wenn ** als Muster eingegeben wird. Beim Parsen wird nach Mustern gesucht, aber ** beginnt nicht mit dem erwarteten Schrägstrich. Anstatt also ein WildcardTheRestPathElement zu werden, wird es zu zwei aufeinanderfolgenden WildcardPathElementen.

Anschließend wird das geparste Muster zum Abgleich mit der angeforderten URL verwendet. Es wird erwartet, dass Pfade mit einem Schrägstrich beginnen, aber ein Platzhalter passt nicht auf Trennzeichen.

Auszug aus WildCardPathElement.java

Dies bedeutet, dass anstelle eines RequestMatchResult ein Nullwert zurückgegeben wird. Folglich werden die Zugriffskontrollregeln, die diesem Abgleicher zugewiesen wurden, nicht auf die angeforderte URL angewendet.

Spring hat das Problem behoben, indem ein Schrägstrich vorangestellt wurde. Mit anderen Worten: Jedes **-Muster wird zu /**, d. h. es kann als WildcardTheRestPathElement geparst werden, und es wird ein RequestMatchResult zurückgegeben, da das Muster nun mit der angeforderten URL übereinstimmt.

Schwachstelle oder API-Missbrauch?

Es ist fraglich, ob dies als Schwachstelle betrachtet werden sollte, da der Code wie vorgesehen funktioniert. Das Problem liegt im Wesentlichen darin, dass in der Spring-Dokumentation nicht ausdrücklich erwähnt wird, dass Pfade mit einem Trennzeichen beginnen sollten. Daher könnte es eher als ein Fall von API-Missbrauch und nicht als ein Fehler oder eine Schwachstelle angesehen werden.

黄色几何抽象背景上的骷髅图标
黄色几何抽象背景上的骷髅图标
Ressourcen anzeigen
Ressourcen anzeigen

2023 年 3 月 20 日,Spring Security Advisories 发布了一篇博客文章,引用了内部发现的漏洞 CVE-2023-20860。没有透露任何详细信息,只是这是与使用 “mvcMatchers” 有关的访问控制问题。Spring 开发人员已经修复了这个问题,建议进行版本更新。由于安全是我们在Secure Code Warrior的主要关注点,因此我们决定更深入地研究这个MvcRequestMatchers漏洞,找出核心问题所在。

Interessiert an mehr?

mehr erfahren

Secure Code Warrior kann Ihrem Unternehmen dabei helfen, Code während des gesamten Softwareentwicklungszyklus zu schützen und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, Chief Information Security Officer oder in einem anderen sicherheitsrelevanten Bereich tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu minimieren.

Demo buchen
Teilen auf:
LinkedIn-MarkenSozialx Logo
作者
Brysen Ackx
Veröffentlicht Apr 19, 2023

Brysen ist Softwareentwickler bei Secure Code Warrior mit Schwerpunkt auf dem Schreiben von sicherem Code.

Teilen auf:
LinkedIn-MarkenSozialx Logo
黄色几何抽象背景上的骷髅图标
黄色几何抽象背景上的骷髅图标

Am 20. März 2023 veröffentlichte Spring Security Advisories einen Blogbeitrag, der sich auf eine intern entdeckte Sicherheitslücke CVE-2023-20860 bezog. Es wurden keine detaillierten Informationen bekannt gegeben, außer dass es sich um ein Problem der Zugriffskontrolle bei der Verwendung von mvcMatchers handelt. Die Spring-Entwickler haben das Problem behoben, und es wird ein Versionsupdate empfohlen.

Möchten Sie eine Erfahrung aus erster Hand machen? Probieren Sie die Mission hier aus.

Da Sicherheit unser Hauptaugenmerk bei Secure Code Warriorist, haben wir uns entschlossen, diese mvcRequestMatchers-Schwachstelle genauer zu untersuchen und herauszufinden, wo das Kernproblem liegt.

Spring bietet die RequestMatcher-Schnittstelle, um festzustellen, ob eine Anfrage mit einem Pfadmuster übereinstimmt. Schauen Sie sich den folgenden Codeausschnitt an, in dem die Hilfsmethode mvcMatchers verwendet wird, um die Endpunkte zusammen mit ihren Authentifizierungs- und Autorisierungsanforderungen zu registrieren. Zum Beispiel können wir sehen, dass nur Benutzer mit der Rolle ADMIN auf den Endpunkt /logs/audit zugreifen können. 

MvcMisMatchers?

In Spring ist ** ein Muster, das mit einer beliebigen Anzahl von Verzeichnissen und Unterverzeichnissen in einer URL übereinstimmt. Zum Beispiel würde /bankaccount/** allen URLs entsprechen, die mit /bankaccount/ beginnen, einschließlich Unterverzeichnissen wie /bankaccount/dashboard/settings

Das *-Muster ist ein Muster, das mit jeder URL übereinstimmt und genau eine Ebene eines Unterverzeichnisses hat. Zum Beispiel würde /bankaccount/* auf bankaccount/dashboard passen .

Bei der Konfiguration der Matcher mit * stellt Spring fest, dass "eine Fehlanpassung beim Pattern-Matching zwischen Spring Security und Spr ing MVC" stattgefunden hat, wodurch die Schwachstelle entstand.

Da dem doppelten Platzhalter kein Trennzeichen vorangestellt ist, passt der Pfad nicht zu einer eingehenden Anfrage, da allen eingehenden Anfragen ein Schrägstrich vorangestellt wird. Dies bedeutet, dass die Zugriffskontrollregeln nicht angewendet werden und jeder nicht authentifizierte Benutzer auf die Ressourcen zugreifen kann.

Werfen wir einen Blick auf den Commit, der das Problem behoben hat.

Die auffälligste und wichtigste Änderung ist die Hinzufügung von Zeile 315, mit der die Umgehung der Autorisierungs- und Authentifizierungsregeln behoben wird. Sie stellt sicher, dass jedem Pfadmuster, das übermittelt wird, ein Schrägstrich (/) vorangestellt wird. 

404 Treffer nicht gefunden

PathPatternMatchableHandlerMapping-Klasse (Quelle : spring-framework)

Beim Senden einer Webanforderung an /bankaccounts/view wird die Match-Methode die im Sicherheitsfilter definierten Muster analysieren und mit dem angeforderten Pfad vergleichen. Der Parser wandelt das angegebene Muster in einen Baum von Pfadelementen um.

Der Parser liest das erste Zeichen als SeparatorPathElement. Er setzt dann das Lesen der Zeichenfolgen bis zum nächsten Trennzeichen fort und erstellt ein neues LiteralPathElement.

Was läuft also schief, wenn ** als Muster verwendet wird? 

Es gibt zwar eine Vielzahl von Pfadelementtypen, aber die interessantesten sind das WildcardPathElementund das WildcardTheRestPathElement mit ihren jeweiligen Zeichenkettendarstellungen: * und /**. 

Ein WildcardPathElement stimmt mit null oder mehr Zeichen innerhalb eines einzelnen Pfadsegments überein, während ein WildcardTheRestPathElement mit null oder mehr Pfadsegmenten allein übereinstimmt (einschließlich der Trennzeichen).

Letzteres gibt uns einen Hinweis darauf, was falsch läuft, wenn ** als Muster eingegeben wird. Beim Parsen wird nach Mustern gesucht, aber ** beginnt nicht mit dem erwarteten Schrägstrich. Anstatt also ein WildcardTheRestPathElement zu werden, wird es zu zwei aufeinanderfolgenden WildcardPathElementen.

Anschließend wird das geparste Muster zum Abgleich mit der angeforderten URL verwendet. Es wird erwartet, dass Pfade mit einem Schrägstrich beginnen, aber ein Platzhalter passt nicht auf Trennzeichen.

Auszug aus WildCardPathElement.java

Dies bedeutet, dass anstelle eines RequestMatchResult ein Nullwert zurückgegeben wird. Folglich werden die Zugriffskontrollregeln, die diesem Abgleicher zugewiesen wurden, nicht auf die angeforderte URL angewendet.

Spring hat das Problem behoben, indem ein Schrägstrich vorangestellt wurde. Mit anderen Worten: Jedes **-Muster wird zu /**, d. h. es kann als WildcardTheRestPathElement geparst werden, und es wird ein RequestMatchResult zurückgegeben, da das Muster nun mit der angeforderten URL übereinstimmt.

Schwachstelle oder API-Missbrauch?

Es ist fraglich, ob dies als Schwachstelle betrachtet werden sollte, da der Code wie vorgesehen funktioniert. Das Problem liegt im Wesentlichen darin, dass in der Spring-Dokumentation nicht ausdrücklich erwähnt wird, dass Pfade mit einem Trennzeichen beginnen sollten. Daher könnte es eher als ein Fall von API-Missbrauch und nicht als ein Fehler oder eine Schwachstelle angesehen werden.

Ressourcen anzeigen
Ressourcen anzeigen

Füllen Sie das folgende Formular aus, um den Bericht herunterzuladen.

Wir möchten Ihre Erlaubnis einholen, Ihnen Informationen über unsere Produkte und/oder relevante Themen zur Sicherheit von Codes zuzusenden. Wir werden Ihre personenbezogenen Daten stets mit größter Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Einreichen
scw Erfolgssymbol
scw-Fehlersymbol
Um das Formular zu senden, aktivieren Sie bitte die „Analyse“-Cookies. Nach Abschluss können Sie diese wieder deaktivieren.
黄色几何抽象背景上的骷髅图标

Am 20. März 2023 veröffentlichte Spring Security Advisories einen Blogbeitrag, der sich auf eine intern entdeckte Sicherheitslücke CVE-2023-20860 bezog. Es wurden keine detaillierten Informationen bekannt gegeben, außer dass es sich um ein Problem der Zugriffskontrolle bei der Verwendung von mvcMatchers handelt. Die Spring-Entwickler haben das Problem behoben, und es wird ein Versionsupdate empfohlen.

Möchten Sie eine Erfahrung aus erster Hand machen? Probieren Sie die Mission hier aus.

Da Sicherheit unser Hauptaugenmerk bei Secure Code Warriorist, haben wir uns entschlossen, diese mvcRequestMatchers-Schwachstelle genauer zu untersuchen und herauszufinden, wo das Kernproblem liegt.

Spring bietet die RequestMatcher-Schnittstelle, um festzustellen, ob eine Anfrage mit einem Pfadmuster übereinstimmt. Schauen Sie sich den folgenden Codeausschnitt an, in dem die Hilfsmethode mvcMatchers verwendet wird, um die Endpunkte zusammen mit ihren Authentifizierungs- und Autorisierungsanforderungen zu registrieren. Zum Beispiel können wir sehen, dass nur Benutzer mit der Rolle ADMIN auf den Endpunkt /logs/audit zugreifen können. 

MvcMisMatchers?

In Spring ist ** ein Muster, das mit einer beliebigen Anzahl von Verzeichnissen und Unterverzeichnissen in einer URL übereinstimmt. Zum Beispiel würde /bankaccount/** allen URLs entsprechen, die mit /bankaccount/ beginnen, einschließlich Unterverzeichnissen wie /bankaccount/dashboard/settings

Das *-Muster ist ein Muster, das mit jeder URL übereinstimmt und genau eine Ebene eines Unterverzeichnisses hat. Zum Beispiel würde /bankaccount/* auf bankaccount/dashboard passen .

Bei der Konfiguration der Matcher mit * stellt Spring fest, dass "eine Fehlanpassung beim Pattern-Matching zwischen Spring Security und Spr ing MVC" stattgefunden hat, wodurch die Schwachstelle entstand.

Da dem doppelten Platzhalter kein Trennzeichen vorangestellt ist, passt der Pfad nicht zu einer eingehenden Anfrage, da allen eingehenden Anfragen ein Schrägstrich vorangestellt wird. Dies bedeutet, dass die Zugriffskontrollregeln nicht angewendet werden und jeder nicht authentifizierte Benutzer auf die Ressourcen zugreifen kann.

Werfen wir einen Blick auf den Commit, der das Problem behoben hat.

Die auffälligste und wichtigste Änderung ist die Hinzufügung von Zeile 315, mit der die Umgehung der Autorisierungs- und Authentifizierungsregeln behoben wird. Sie stellt sicher, dass jedem Pfadmuster, das übermittelt wird, ein Schrägstrich (/) vorangestellt wird. 

404 Treffer nicht gefunden

PathPatternMatchableHandlerMapping-Klasse (Quelle : spring-framework)

Beim Senden einer Webanforderung an /bankaccounts/view wird die Match-Methode die im Sicherheitsfilter definierten Muster analysieren und mit dem angeforderten Pfad vergleichen. Der Parser wandelt das angegebene Muster in einen Baum von Pfadelementen um.

Der Parser liest das erste Zeichen als SeparatorPathElement. Er setzt dann das Lesen der Zeichenfolgen bis zum nächsten Trennzeichen fort und erstellt ein neues LiteralPathElement.

Was läuft also schief, wenn ** als Muster verwendet wird? 

Es gibt zwar eine Vielzahl von Pfadelementtypen, aber die interessantesten sind das WildcardPathElementund das WildcardTheRestPathElement mit ihren jeweiligen Zeichenkettendarstellungen: * und /**. 

Ein WildcardPathElement stimmt mit null oder mehr Zeichen innerhalb eines einzelnen Pfadsegments überein, während ein WildcardTheRestPathElement mit null oder mehr Pfadsegmenten allein übereinstimmt (einschließlich der Trennzeichen).

Letzteres gibt uns einen Hinweis darauf, was falsch läuft, wenn ** als Muster eingegeben wird. Beim Parsen wird nach Mustern gesucht, aber ** beginnt nicht mit dem erwarteten Schrägstrich. Anstatt also ein WildcardTheRestPathElement zu werden, wird es zu zwei aufeinanderfolgenden WildcardPathElementen.

Anschließend wird das geparste Muster zum Abgleich mit der angeforderten URL verwendet. Es wird erwartet, dass Pfade mit einem Schrägstrich beginnen, aber ein Platzhalter passt nicht auf Trennzeichen.

Auszug aus WildCardPathElement.java

Dies bedeutet, dass anstelle eines RequestMatchResult ein Nullwert zurückgegeben wird. Folglich werden die Zugriffskontrollregeln, die diesem Abgleicher zugewiesen wurden, nicht auf die angeforderte URL angewendet.

Spring hat das Problem behoben, indem ein Schrägstrich vorangestellt wurde. Mit anderen Worten: Jedes **-Muster wird zu /**, d. h. es kann als WildcardTheRestPathElement geparst werden, und es wird ein RequestMatchResult zurückgegeben, da das Muster nun mit der angeforderten URL übereinstimmt.

Schwachstelle oder API-Missbrauch?

Es ist fraglich, ob dies als Schwachstelle betrachtet werden sollte, da der Code wie vorgesehen funktioniert. Das Problem liegt im Wesentlichen darin, dass in der Spring-Dokumentation nicht ausdrücklich erwähnt wird, dass Pfade mit einem Trennzeichen beginnen sollten. Daher könnte es eher als ein Fall von API-Missbrauch und nicht als ein Fehler oder eine Schwachstelle angesehen werden.

Webinar ansehen
Fangen wir an.
mehr erfahren

Klicken Sie auf den folgenden Link und laden Sie die PDF-Datei dieser Ressource herunter.

Secure Code Warrior kann Ihrem Unternehmen dabei helfen, Code während des gesamten Softwareentwicklungszyklus zu schützen und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, Chief Information Security Officer oder in einem anderen sicherheitsrelevanten Bereich tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu minimieren.

Bericht anzeigenDemo buchen
Ressourcen anzeigen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Interessiert an mehr?

试试我们的使命,亲身体验影响,学习如何避免犯类似的错误。

现在就试试吧
Teilen auf:
LinkedIn-MarkenSozialx Logo
作者
Brysen Ackx
Veröffentlicht Apr 19, 2023

Brysen ist Softwareentwickler bei Secure Code Warrior mit Schwerpunkt auf dem Schreiben von sicherem Code.

Teilen auf:
LinkedIn-MarkenSozialx Logo

Am 20. März 2023 veröffentlichte Spring Security Advisories einen Blogbeitrag, der sich auf eine intern entdeckte Sicherheitslücke CVE-2023-20860 bezog. Es wurden keine detaillierten Informationen bekannt gegeben, außer dass es sich um ein Problem der Zugriffskontrolle bei der Verwendung von mvcMatchers handelt. Die Spring-Entwickler haben das Problem behoben, und es wird ein Versionsupdate empfohlen.

Möchten Sie eine Erfahrung aus erster Hand machen? Probieren Sie die Mission hier aus.

Da Sicherheit unser Hauptaugenmerk bei Secure Code Warriorist, haben wir uns entschlossen, diese mvcRequestMatchers-Schwachstelle genauer zu untersuchen und herauszufinden, wo das Kernproblem liegt.

Spring bietet die RequestMatcher-Schnittstelle, um festzustellen, ob eine Anfrage mit einem Pfadmuster übereinstimmt. Schauen Sie sich den folgenden Codeausschnitt an, in dem die Hilfsmethode mvcMatchers verwendet wird, um die Endpunkte zusammen mit ihren Authentifizierungs- und Autorisierungsanforderungen zu registrieren. Zum Beispiel können wir sehen, dass nur Benutzer mit der Rolle ADMIN auf den Endpunkt /logs/audit zugreifen können. 

MvcMisMatchers?

In Spring ist ** ein Muster, das mit einer beliebigen Anzahl von Verzeichnissen und Unterverzeichnissen in einer URL übereinstimmt. Zum Beispiel würde /bankaccount/** allen URLs entsprechen, die mit /bankaccount/ beginnen, einschließlich Unterverzeichnissen wie /bankaccount/dashboard/settings

Das *-Muster ist ein Muster, das mit jeder URL übereinstimmt und genau eine Ebene eines Unterverzeichnisses hat. Zum Beispiel würde /bankaccount/* auf bankaccount/dashboard passen .

Bei der Konfiguration der Matcher mit * stellt Spring fest, dass "eine Fehlanpassung beim Pattern-Matching zwischen Spring Security und Spr ing MVC" stattgefunden hat, wodurch die Schwachstelle entstand.

Da dem doppelten Platzhalter kein Trennzeichen vorangestellt ist, passt der Pfad nicht zu einer eingehenden Anfrage, da allen eingehenden Anfragen ein Schrägstrich vorangestellt wird. Dies bedeutet, dass die Zugriffskontrollregeln nicht angewendet werden und jeder nicht authentifizierte Benutzer auf die Ressourcen zugreifen kann.

Werfen wir einen Blick auf den Commit, der das Problem behoben hat.

Die auffälligste und wichtigste Änderung ist die Hinzufügung von Zeile 315, mit der die Umgehung der Autorisierungs- und Authentifizierungsregeln behoben wird. Sie stellt sicher, dass jedem Pfadmuster, das übermittelt wird, ein Schrägstrich (/) vorangestellt wird. 

404 Treffer nicht gefunden

PathPatternMatchableHandlerMapping-Klasse (Quelle : spring-framework)

Beim Senden einer Webanforderung an /bankaccounts/view wird die Match-Methode die im Sicherheitsfilter definierten Muster analysieren und mit dem angeforderten Pfad vergleichen. Der Parser wandelt das angegebene Muster in einen Baum von Pfadelementen um.

Der Parser liest das erste Zeichen als SeparatorPathElement. Er setzt dann das Lesen der Zeichenfolgen bis zum nächsten Trennzeichen fort und erstellt ein neues LiteralPathElement.

Was läuft also schief, wenn ** als Muster verwendet wird? 

Es gibt zwar eine Vielzahl von Pfadelementtypen, aber die interessantesten sind das WildcardPathElementund das WildcardTheRestPathElement mit ihren jeweiligen Zeichenkettendarstellungen: * und /**. 

Ein WildcardPathElement stimmt mit null oder mehr Zeichen innerhalb eines einzelnen Pfadsegments überein, während ein WildcardTheRestPathElement mit null oder mehr Pfadsegmenten allein übereinstimmt (einschließlich der Trennzeichen).

Letzteres gibt uns einen Hinweis darauf, was falsch läuft, wenn ** als Muster eingegeben wird. Beim Parsen wird nach Mustern gesucht, aber ** beginnt nicht mit dem erwarteten Schrägstrich. Anstatt also ein WildcardTheRestPathElement zu werden, wird es zu zwei aufeinanderfolgenden WildcardPathElementen.

Anschließend wird das geparste Muster zum Abgleich mit der angeforderten URL verwendet. Es wird erwartet, dass Pfade mit einem Schrägstrich beginnen, aber ein Platzhalter passt nicht auf Trennzeichen.

Auszug aus WildCardPathElement.java

Dies bedeutet, dass anstelle eines RequestMatchResult ein Nullwert zurückgegeben wird. Folglich werden die Zugriffskontrollregeln, die diesem Abgleicher zugewiesen wurden, nicht auf die angeforderte URL angewendet.

Spring hat das Problem behoben, indem ein Schrägstrich vorangestellt wurde. Mit anderen Worten: Jedes **-Muster wird zu /**, d. h. es kann als WildcardTheRestPathElement geparst werden, und es wird ein RequestMatchResult zurückgegeben, da das Muster nun mit der angeforderten URL übereinstimmt.

Schwachstelle oder API-Missbrauch?

Es ist fraglich, ob dies als Schwachstelle betrachtet werden sollte, da der Code wie vorgesehen funktioniert. Das Problem liegt im Wesentlichen darin, dass in der Spring-Dokumentation nicht ausdrücklich erwähnt wird, dass Pfade mit einem Trennzeichen beginnen sollten. Daher könnte es eher als ein Fall von API-Missbrauch und nicht als ein Fehler oder eine Schwachstelle angesehen werden.

Verzeichnis

PDF herunterladen
Ressourcen anzeigen
Interessiert an mehr?

mehr erfahren

Secure Code Warrior kann Ihrem Unternehmen dabei helfen, Code während des gesamten Softwareentwicklungszyklus zu schützen und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, Chief Information Security Officer oder in einem anderen sicherheitsrelevanten Bereich tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu minimieren.

Demo buchen下载
Teilen auf:
LinkedIn-MarkenSozialx Logo
Ressourcenzentrum

Ressourcen, die Ihnen den Einstieg erleichtern

Weitere Beiträge
Ressourcenzentrum

Ressourcen, die Ihnen den Einstieg erleichtern

Weitere Beiträge