MittelCVE-2026-55414

    Nl-portal-backend-libraries: Server-Side-Request-Forgery (SSRF) (CVE-2026-55414)

    Veröffentlicht Zuletzt geändert Quellen: EUVD, CVE.org, OSV, Hersteller

    Teilen

    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

    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 mit nl.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, HEAD 45abcd2). In der Version 3.0.4.RELEASE behoben (siehe Behebung unten).

    Datenfluss (bestätigt im Quellcode)

    1. form/.../graphql/FormDefinitionQuery.kt — @QueryMapping getFormDefinitionByObjectenApiUrl(@Argument url), kein CommonGroundAuthentication-Parameter (gleiches gilt für getFormDefinitionById).
    2. → form/.../service/ObjectsApiFormDefinitionService.kt — die URL wird unvalidiert weitergegeben.
    3. → zgw/objectenapi/.../service/ObjectenApiService.kt getObjectByUrl(url) — der einzige Schutz ist die Host-Gleichheit (URI.create(url).host == objectsApiClientConfig.url.host); keine Schemen-/Port-/Pfadprüfung.
    4. → zgw/objectenapi/.../client/ObjectsApiClient.kt getObjectByUrl(url) über webClientWithoutBaseUrl(), das die Standardkopfzeile Authorization: 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 /graphql Aufruf von getFormDefinitionByObjectenApiUrl(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:

    1. 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 auf java.net.URI basierenden 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 dort localhost ist; dies lässt sich nicht auf Produktion verallgemeinern.

    2. Zufällige PII-Objekt-Lesung durch typisierte Deserialisierung blockiert. Die Antwort wird in ObjectsApiObject<ObjectsApiFormIoFormDefinition> deserialisiert, dessen Umschlagfelder und data.formDefinition alle nicht-null Kotlin-Eigenschaften sind (Jackson KotlinModule registriert). Ein Objekt ohne ein Top-Level data.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.getObjectByUrl herausnehmen und in ObjectsApiClient.getObjectByUrl hineinlegen, damit auch der direkte Aufrufer ZakenApiService.getZaakDetails abgedeckt 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 von ObjectsApiClient.getObjectById wiederverwenden, /api/v2/objects/{uuid}).
    • Getrennt entscheiden, ob getFormDefinitionByObjectenApiUrl / getFormDefinitionById unauthentifiziert bleiben sollten. Sie sind derzeit absichtlich öffentlich (Formulare laden vor dem Login); für eine strengere Haltung einen CommonGroundAuthentication-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 getFormDefinitionByObjectenApiUrl und 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 Produkte
    Betroffene VersionenBehoben in
    nl-portalnl-portal-backend-libraries
    • ≥ 1.1.0, < 3.0.4
    • 3.1.0
    • —
    • —
    mavennl.nl-portal:form
    • 3.0.2
    • 3.0.1
    • 1.3.0
    • 1.1.0
    • 2.0.1
    • 1.5.0
    • 2.0.2
    • 3.0.0
    • 3.0.3
    • 2.0.0
    • 1.6.0
    • 1.5.1
    • 1.3.1
    • 1.6.1
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —

    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-862
    • CWE-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).

    1. 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
      ArtAktionVorherNachher
      Referenzergänzt
      —
      https://github.com/nl-portal/nl-portal-backend-libraries/security/advisories/GHSA-xm3x-9cfw-jhx4
      SSVC-Einschätzungergä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

    2. Neu erfasstGitHub

      9 Einzeländerungen im Original anzeigen
      Einzeländerungen dieses Ereignisses im Original der NVD
      ArtAktionVorherNachher
      Beschreibungergä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.
      CVSSergänzt
      —
      AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
      Schwachstellentyp (CWE)ergänzt
      —
      CWE-918
      Schwachstellentyp (CWE)ergänzt
      —
      CWE-862
      Betroffene 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>
      Referenzergänzt
      —
      https://github.com/nl-portal/nl-portal-backend-libraries/commit/5ea04ef6445443e22e40a23fbed447e618b70c3f
      Referenzergänzt
      —
      https://github.com/nl-portal/nl-portal-backend-libraries/pull/700
      Referenzergänzt
      —
      https://github.com/nl-portal/nl-portal-backend-libraries/releases/tag/3.0.4.RELEASE
      Referenzergänzt
      —
      https://github.com/nl-portal/nl-portal-backend-libraries/security/advisories/GHSA-xm3x-9cfw-jhx4

      Kennung 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.

    Badge-Vorschau für CVE-2026-55414
    <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>