Nl-portal-backend-libraries: Server-Side-Request-Forgery (SSRF) (CVE-2026-55414)
Veröffentlicht Zuletzt geändert Quellen: EUVD, CVE.org, OSV, Hersteller
Was ist betroffen, was ist zu tun
Die vorliegenden Quellen nennen keine Fix-Version. Prüfen Sie die Herstellerhinweise in den Referenzen unten.
- Betroffen
- Nl-portal-backend-libraries
gte 1.1.0, < 3.0.4..* - Nl-portal-backend-libraries
eq 3.1.0..3.1.0
- Nl-portal-backend-libraries
Unklar, ob und wie Sie betroffen sind? Frage zu dieser Schwachstelle stellen
Metriken
5,3
XIEM Effective CVSS
Höchste verfügbare CVSS-Bewertung aus NVD- und Herstellerangaben.
Quelle: Hersteller (CNA), CVSS v3
5,3
CVSS v3
Schweregrad Mittel auf der Skala von 0 bis 10.
Quelle: EUVD, CVE.org, OSV, Hersteller
0,4 %
EPSS-Score
Niedrig – Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Quelle: FIRST EPSS, Perzentil 38,5
Alle Metriken anzeigen
- Schweregrad
- Mittel
Priorität (0–325)
Der Priorisierungs-Score ist eine zusammengeführte Kennzahl, die mehrere Einzelsignale zu einer einzigen, handlungsleitenden Rangfolge verdichtet: technische Schwere (CVSS), Ausnutzungswahrscheinlichkeit (EPSS), der Status als bekannt ausgenutzt (KEV) und der Kontext des betroffenen Assets. Ziel ist die Antwort auf die einzig wirklich wichtige Frage im Schwachstellenmanagement: Was zuerst?
Im Glossar lesen- 68.36 Methodik
Exploit-Reife
Ein Exploit ist Code oder eine Technik, die eine konkrete Schwachstelle gezielt ausnutzt, um ein unbeabsichtigtes Verhalten zu erzwingen — etwa Code auszuführen oder Rechte auszuweiten. Er ist das Werkzeug, das aus einer theoretischen Lücke einen praktischen Angriff macht.
Im Glossar lesen- kein öffentlicher PoC bekannt
XIEM Effective CVSS
XIEM® ist das gestufte Managed-Security-Betriebsmodell von NEOSEC und eine eingetragene Marke der NEOSEC GmbH. Es erweitert klassisches SIEM — die zentrale Sammlung, Normalisierung und Korrelation sicherheitsrelevanter Ereignisse — um Endpunkt-Forensik, Netzwerk-Sichtbarkeit und Täuschungstechnik und führt diese zu drei aufeinander aufbauenden Stufen zusammen: Sentry, Orchestrate und Command.
Im Glossar lesen- 5,3 Methodik
CVSS v3
CVSS ist der weltweit verbreitete, offene Standard zur Bewertung der technischen Schwere einer Schwachstelle auf einer Skala von 0 bis 10. Er beschreibt, wie leicht eine Lücke ausnutzbar ist und welchen Schaden sie anrichten kann — nicht jedoch, wie wahrscheinlich ihre tatsächliche Ausnutzung ist. CVSS und das ergänzende EPSS beantworten bewusst unterschiedliche Fragen.
Im Glossar lesen- 5,3
EPSS-Score
Der EPSS-Score ist der absolute Modell-Output für eine einzelne Schwachstelle: die geschätzte Wahrscheinlichkeit einer realen Ausnutzung in den nächsten 30 Tagen, ausgedrückt als Wert zwischen 0 und 1 (bzw. 0 % bis 100 %). Ein Score von 0,42 bedeutet „das Modell schätzt eine 42-prozentige Chance auf reale Ausnutzung binnen 30 Tagen“.
Im Glossar lesen- 0,4 %
- Niedrig – Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
EPSS-Perzentil
Das EPSS-Perzentil ist die relative Einordnung einer Schwachstelle innerhalb aller EPSS-bewerteten CVEs, ausgedrückt als Wert zwischen 0 und 1. Ein Perzentil von 0,90 bedeutet „diese CVE hat einen höheren EPSS-Score als 90 % aller anderen bewerteten CVEs“. Anders als der EPSS-Score ist es keine Wahrscheinlichkeit — sondern eine Positionierung im Ranking.
Im Glossar lesen- 38,5
- Hoch – CVE rangiert über dem Median aller heute bewerteten CVEs (Rang ≥ 36 %).
KEV-Status
Der KEV-Katalog ist eine von der US-Behörde CISA gepflegte Liste von Schwachstellen, für die eine aktive Ausnutzung in der Praxis nachgewiesen ist. Er beantwortet nicht die Frage „wie schwer?“, sondern „wird es bereits angegriffen?“ — und priorisiert damit das Patchen scharf.
Im Glossar lesen- —
- Veröffentlicht
- CISA-Bewertung (SSVC)
- Ausnutzung: Proof of Concept · automatisierbar · Auswirkung: teilweise
- Quelle: CISA Vulnrichment, Stand 15. Oktober 2026
CWE
CWE ist ein Katalog typischer Schwächen-Arten in Software und Hardware — etwa fehlerhafte Eingabevalidierung, unsichere Speicherbehandlung oder mangelhafte Authentisierung. Während eine CVE eine konkrete Schwachstelle in einem konkreten Produkt benennt, beschreibt eine CWE die zugrunde liegende Fehlerklasse.
Im Glossar lesen- CWE-862, CWE-918
Erkennungsregeln
Für diese Schwachstelle liegt noch keine NEOSEC-Erkennungsregel vor.
Einordnung nach NIS2 und CRA
Regelbasierte Einordnung aus Ausnutzungsstatus und Schweregrad. Sie ersetzt keine Prüfung im Einzelfall.
NIS2
NIS2 ist die EU-Richtlinie (EU) 2022/2555 zur Erhöhung des Cybersicherheitsniveaus in der Union. Sie weitet Pflichten gegenüber der ersten NIS-Richtlinie deutlich aus: mehr Sektoren, verbindliches Risikomanagement, gestufte Meldepflichten und persönliche Verantwortung der Geschäftsleitung.
Im Glossar lesen- Behandeln Sie die Schwachstelle im regulären Schwachstellenmanagement nach Art. 21 Abs. 2 lit. e NIS2.
CRA
Der CRA ist die EU-Verordnung (EU) 2024/2847 mit horizontalen Cybersicherheitsanforderungen an „Produkte mit digitalen Elementen“ — von Industriesteuerungen über Software bis zu vernetzten Verbrauchergeräten. Erstmals müssen Hersteller Sicherheit über den gesamten Produktlebenszyklus gewährleisten, Schwachstellen behandeln und Sicherheitsupdates bereitstellen.
Im Glossar lesen- Ab dem 11.12.2027 verpflichtet Anhang I Teil II CRA Hersteller betroffener Produkte mit digitalen Elementen, Schwachstellen unverzüglich zu behandeln und Sicherheitsupdates bereitzustellen.
ISO/IEC 27001
ISO/IEC 27001 ist der international führende Standard für ein Informationssicherheits-Managementsystem (ISMS). Er beschreibt einen risikobasierten, prozessorientierten Rahmen, um Informationssicherheit systematisch zu planen, umzusetzen, zu überprüfen und zu verbessern.
Im Glossar lesen- Maßnahme A.8.8, Management technischer Schwachstellen: Relevanz für Ihre Systeme bewerten, Behebung einplanen und nachweisen.
Beschreibung
Zusammenfassung
Die öffentlichen GraphQL-Resolver getFormDefinitionByObjectenApiUrl(url) und der veraltete getFormDefinitionById(id) holen eine vom Aufrufer bereitgestellte URL mit dem privilegierten Objecten-API-Token ab. Da das /graphql-Endpunkt permitAll() ist und diese Resolver keinen CommonGroundAuthentication-Parameter deklarieren, kann ein unauthentifizierter Aufrufer den Backend dazu bringen, eine ausgehende Anfrage mit der Autorisierung Authorization: Token <objecten-api-token> an eine vom Aufrufer beeinflusste URL auf dem konfigurierten Objecten-API-Host zu senden. Dies ist ein eingeschränkter (gleicher Host) serverseitiger Anfragebetrug kombiniert mit fehlender Autorisierung.
Verantwortungsvoll gemeldet und in einer lokalen Laboreinrichtung gegen die eigene WebFlux-Sicherheitsstapel des Projekts bestätigt. Kein Produktions-System wurde zugänglich gemacht.
Betroffen
nl.nl-portal:form(der öffentliche Resolver / Einstiegspunkt) zusammen mitnl.nl-portal:objectenapi(wo der Host-Schutz lebt).- Erstmals in 1.1.0.RELEASE (2023-10-31) ausgeliefert; der anfällige Code wurde am 2023-08-12 (Commit
b2f87ca) eingeführt und ist seitdem in jeder Version vorhanden (1.1.x, 1.2.5, 1.3.0, die 3.0.x-Linie und 3.1.0 /next-minor, HEAD45abcd2). In der Version 3.0.4.RELEASE behoben (siehe Behebung unten).
Datenfluss (bestätigt im Quellcode)
form/.../graphql/FormDefinitionQuery.kt—@QueryMapping getFormDefinitionByObjectenApiUrl(@Argument url), keinCommonGroundAuthentication-Parameter (gleiches gilt fürgetFormDefinitionById).- →
form/.../service/ObjectsApiFormDefinitionService.kt— die URL wird unvalidiert weitergegeben. - →
zgw/objectenapi/.../service/ObjectenApiService.ktgetObjectByUrl(url)— der einzige Schutz ist die Host-Gleichheit (URI.create(url).host == objectsApiClientConfig.url.host); keine Schemen-/Port-/Pfadprüfung. - →
zgw/objectenapi/.../client/ObjectsApiClient.ktgetObjectByUrl(url)überwebClientWithoutBaseUrl(), das die StandardkopfzeileAuthorization: Token <token>zur vollständig vom Aufrufer bereitgestellten URL anhängt.
Erreichbarkeit: /graphql ist permitAll() (core/.../security/OauthSecurityAutoConfiguration.kt). Die Authentifizierung wird nur auf Resolvers durchgesetzt, die einen CommonGroundAuthentication-Parameter deklarieren; diese tun es nicht, und es gibt kein @PreAuthorize/Instrumentationssicherheitsnetz. Die eigene GraphQLEndpointAuthorizationIT des Projekts listet getFormDefinitionByObjectenApiUrl als eine absichtlich öffentliche Operation auf — die unauthentifizierte Erreichbarkeit ist also beabsichtigt; der Defekt besteht darin, dass ein absichtlich-öffentlicher Resolver ein privilegiertes Token an eine vom Aufrufer beeinflusste URL weiterleitet.
Sekundär (Verteidigung in Tiefe): zgw/zaken-api/.../service/ZakenApiService.kt getZaakDetails ruft objectsApiClient.getObjectByUrl direkt auf, um den Dienst-Level-Host-Schutz zu umgehen. Es ist derzeit nur über das authentifizierte Feldresolver ZaakQuery.zaakdetails mit serverseitig abgeleiteten URLs erreichbar — also kein unauthentifizierter Vektor heute — zeigt aber, warum der Schutz im Client gehört.
Proof of Concept (Lab, gegen den realen WebFlux-Stapel)
- Ein unauthentifizierter
POST /graphqlAufruf vongetFormDefinitionByObjectenApiUrl(url: ...)wird ohne Authentifizierung ausgeführt. - Mit dem konfigurierten Objecten-API-Host auf einem Mockserver, wurde eine ausgehende Anfrage an einen vom Aufrufer gewählten Port/Pfad dieses Hosts mit
Authorization: Token <konfiguriertes-Token>gesendet — bestätigt, dass das Token zu vom Aufrufer beeinflussten URLs hinzugefügt wird.
Auswirkung und Schweregrad — wichtige Einschränkungen
Als Mittel bewertet wegen zweier Code-Level-Fakten, die den praktischen Einfluss einschränken:
-
Keine cross-host SSRF / Token-Exfiltration in Standardbereitstellungen. Das Token reist nur zum konfigurierten Objecten-API-Host. Die Exfiltration erfordert einen von Angreifern kontrollierten Listener an diesem Host (ein anderer Port/Pfad, der anderswo weitergeleitet wird) — generell nicht der Fall in verwalteten Bereitstellungen. Eine Reihe von URL-Parser-Ausweichlasten wurde getestet (Benutzerinfo
@,%2f/%00/%09, Backslash,#/?, doppelter-Host, trailing-dot, IDN/Unicode full-stop, fraction-slash, IPv6); keine Parser-Differential wurde zwischen dem aufjava.net.URIbasierenden Schutz und dem Spring/Netty URI-Bauer von WebClient gefunden — jede Last entweder hielt die Anfrage am konfigurierten Host oder wurde abgelehnt (fail-closed). Das Lab-Token-Leak PoC funktioniert nur, weil der konfigurierte Host dortlocalhostist; dies lässt sich nicht auf Produktion verallgemeinern. -
Zufällige PII-Objekt-Lesung durch typisierte Deserialisierung blockiert. Die Antwort wird in
ObjectsApiObject<ObjectsApiFormIoFormDefinition>deserialisiert, dessen Umschlagfelder unddata.formDefinitionalle nicht-null Kotlin-Eigenschaften sind (JacksonKotlinModuleregistriert). Ein Objekt ohne ein Top-Leveldata.formDefinition(z.B. taken/berichten/zaakdetails) kann nicht deserialisiert werden (DecodingException) und gibt keine Daten zurück. Der Resolver kann daher nur Objekte zurückgeben, die wie eine Form-Definition geformt sind — und Form-Definitionen sind absichtlich öffentlich (vor dem Login geladen).
Erhöhungskonditionen, die den Schweregrad in Richtung Hoch erhöhen würden:
- der Objecten-API-Host teilt sich Infrastruktur mit einem von Angreifern kontrollierbaren Endpunkt (anderer Port/Pfad), um das privilegierte Token abzufangen; oder
- ein URL-Parser-Differential wird später gefunden, das den Host-Schutz umgeht.
Behebung
- Den Host-Validierung aus
ObjectenApiService.getObjectByUrlherausnehmen und inObjectsApiClient.getObjectByUrlhineinlegen, damit auch der direkte AufruferZakenApiService.getZaakDetailsabgedeckt ist, und es von host-only auf Schemen + Host + Port + Pfadpräfix verschärfen. Am besten, kein vollständiger URL akzeptieren: UUID des Objekts validieren/ausziehen und die URL aus der fest konfigurierten Basis neu aufbauen (das bestehende Muster vonObjectsApiClient.getObjectByIdwiederverwenden,/api/v2/objects/{uuid}). - Getrennt entscheiden, ob
getFormDefinitionByObjectenApiUrl/getFormDefinitionByIdunauthentifiziert bleiben sollten. Sie sind derzeit absichtlich öffentlich (Formulare laden vor dem Login); für eine strengere Haltung einenCommonGroundAuthentication-Parameter wie in den anderen Resolvers hinzufügen — dabei beachten, dass dies das Vorab-Login-Formular-Laden unterbricht.
Anerkennung
Verantwortungsvoll gemeldet von Ray Sabee (https://whitehatsecurity.nl), unabhängiger Sicherheitsforscher — GitHub @raysabee.
Behebung
In der Version 3.0.4.RELEASE behoben (Commit 39ad80f, PR #700, "rework form module"):
- Die unauthentifizierten Resolvers
getFormDefinitionByObjectenApiUrlund der veraltete `getFormDefinition
Originalquelle nur englisch verfügbar, maschinell ins Deutsche übersetzt.
Quelle: ENISA EUVD, cvelistv5, NVD (NIST), CVE.org (MITRE), OSV (Open Source Vulnerabilities), GitHub Security Advisories
Betroffene Produkte
Betroffen sind die folgenden Versionen. Ältere Stände derselben Reihe sind ebenfalls verwundbar, sofern nicht anders angegeben.
| Betroffene Versionen | Behoben in | ||
|---|---|---|---|
| nl-portal | nl-portal-backend-libraries |
|
|
| maven | nl.nl-portal:form |
|
|
Hersteller und Produkte
Weakness-Klassen (CWE)
CWE-862Missing Authorization
Class
The product does not perform an authorization check when an actor attempts to access a resource or perform an action.
Eintrag bei MITRE CWE-862CWE-918Server-Side Request Forgery (SSRF)
Base
The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
Eintrag bei MITRE CWE-918
Quellen & Referenzen
- github.comnl-portal/nl-portal-backend-libraries/security/advisories/GHSA-…web, x_refsource_CONFIRM, euvd
- github.comnl-portal/nl-portal-backend-libraries/pull/700web, x_refsource_MISC, euvd
- github.comnl-portal/nl-portal-backend-librariespackage
- github.comnl-portal/nl-portal-backend-libraries/commit/5ea04ef6445443e22e…x_refsource_MISC, euvd
- github.comnl-portal/nl-portal-backend-libraries/releases/tag/3.0.4.RELEASEx_refsource_MISC, euvd
Änderungen an der CVE
Wer diese CVE wann geändert hat: die NVD (Analyse, betroffene Produkte, CVSS), der Herausgeber der CVE (CNA) und ergänzende Stellen wie CISA (ADP).
Eintrag geändertCISA ADP
CISA-Einschätzung (SSVC): Ausnutzung: Proof of Concept, automatisierbar: ja
2 Einzeländerungen im Original anzeigen
Einzeländerungen dieses Ereignisses im Original der NVD Art Aktion Vorher Nachher Referenz ergänzt —https://github.com/nl-portal/nl-portal-backend-libraries/security/advisories/GHSA-xm3x-9cfw-jhx4SSVC-Einschätzung ergänzt —{"id":"CVE-2026-55414","role":"CISA Coordinator","options":[{"exploitation":"poc"},{"automatable":"yes"},{"technicalImpact":"partial"}],"version":"2.0.3","timestamp":"2026-10-15T18:25:48.650492Z"}Kennung der Quelle: 134c704f-9b21-4f2e-91b3-4a467353bcc0
Neu erfasstGitHub
CVSS V3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Schwachstellentyp: CWE-918, CWE-862
Beschreibung erfasst oder geändert
Neue Referenzen:- https://github.com/nl-portal/nl-portal-backend-libraries/commit/5ea04ef6445443e22e40a23fbed447e618b70c3f
- https://github.com/nl-portal/nl-portal-backend-libraries/pull/700
- https://github.com/nl-portal/nl-portal-backend-libraries/releases/tag/3.0.4.RELEASE
- https://github.com/nl-portal/nl-portal-backend-libraries/security/advisories/GHSA-xm3x-9cfw-jhx4
9 Einzeländerungen im Original anzeigen
Einzeländerungen dieses Ereignisses im Original der NVD Art Aktion Vorher Nachher Beschreibung ergänzt —NL Portal Backend Libraries provide backend components for Dutch government portals that interact with residents, customers, suppliers, and partner organizations. From 1.1.0 until 3.0.4, and in 3.1.0, the public getFormDefinitionByObjectenApiUrl and deprecated getFormDefinitionById GraphQL resolvers are reachable without CommonGroundAuthentication and forward a caller-influenced URL through ObjectenApiService.getObjectByUrl to ObjectsApiClient.getObjectByUrl, which attaches the privileged Objecten-API token. The host-equality check restricts requests to the configured Objecten-API host but does not constrain the scheme, port, or path, allowing an unauthenticated caller to induce a token-bearing request to a chosen endpoint on that host. Standard deployments are not exposed to cross-host SSRF, token capture requires attacker-controlled routing on the configured host, and typed deserialization limits returned data to objects shaped like form definitions. The 3.0 release line is fixed in version 3.0.4. The advisory does not identify a fixed 3.1 release.CVSS ergänzt —AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:NSchwachstellentyp (CWE) ergänzt —CWE-918Schwachstellentyp (CWE) ergänzt —CWE-862Betroffene Versionen (Herausgeber) ergänzt —New affected value received. <a href="https://github.com/CVEProject/cvelistV5/blob/main/cves/2026/55xxx/CVE-2026-55414.json">CVE-2026-55414</a>Referenz ergänzt —https://github.com/nl-portal/nl-portal-backend-libraries/commit/5ea04ef6445443e22e40a23fbed447e618b70c3fReferenz ergänzt —https://github.com/nl-portal/nl-portal-backend-libraries/pull/700Referenz ergänzt —https://github.com/nl-portal/nl-portal-backend-libraries/releases/tag/3.0.4.RELEASEReferenz ergänzt —https://github.com/nl-portal/nl-portal-backend-libraries/security/advisories/GHSA-xm3x-9cfw-jhx4Kennung der Quelle: security-advisories@github.com
Badge einbetten
Zeigen Sie Schweregrad und KEV-Status dieser Schwachstelle auf Ihrer Seite – mit Link hierher. Das Bild wird stündlich aktualisiert.
<a href="https://intel.neosec.eu/cve/CVE-2026-55414"><img src="https://intel.neosec.eu/badge/cve/CVE-2026-55414.svg" alt="CVE-2026-55414 – NEOSEC Intel" height="20"></a>