Microsoft.OpenApi.YamlReader anfällig für Denial of Service über YAML-Alias-Expansion
Auswirkungen
Ein kleines YAML-OpenAPI-Dokument mit verschachtelten Ankern und Aliasen kann einen unkontrollierten Ressourcenverbrauch in Microsoft.OpenApi.YamlReader und Microsoft.OpenApi.Readers verursachen. Das Problem betrifft das Parsen von OpenAPI-Dokumenten über die öffentlichen YAML-Reader-APIs und kann dazu führen, dass der Parsing-Prozess übermäßig viel Speicher allokiert und aufgrund von Out-of-Memory-Bedingungen beendet wird.
Betroffene Versionen
Microsoft.OpenApi.YamlReader
>= 2.0.0-preview.11, < 2.12.0>= 3.0.0, < 3.10.0
Microsoft.OpenApi.Readers
< 1.6.30
Patches
- Für die Hauptversion 1.X sind die Versionen 1.6.30 und höher gepatcht.
- Für die Hauptversion 2.X sind die Versionen 2.12.0 und höher gepatcht.
- Für die Hauptversion 3.X sind die Versionen 3.10.0 und höher gepatcht.
Tragweite
Anwendungen, CLIs, Entwicklertools oder Dienste, die nicht vertrauenswürdige YAML-OpenAPI-Dokumente innerhalb des Prozesses parsen, können durch ein speziell gestaltetes YAML-Dokument mit verschachtelten Ankern und Aliasen beendet werden.
Die Auswirkung beschränkt sich ausschließlich auf die Verfügbarkeit bzw. den Prozessabbruch. Es liegen keine Hinweise auf Remote-Codeausführung, Authentifizierungsumgehung, Offenlegung von Zugangsdaten, Rechteausweitung, Datenexposition oder Auswirkungen auf von Microsoft gehostete Dienste vor.
Details
Microsoft.OpenApi.YamlReader und Microsoft.OpenApi.Readers verarbeiten YAML über SharpYaml. SharpYaml stellt Aliase als geteilte YamlNode-Instanzen in einem gerichteten azyklischen Graphen dar, sodass der anfänglich geparste YAML-Graph klein bleibt. Bei der Konvertierung in System.Text.Json.Nodes.JsonNode müssen Aliase als unabhängige Knoten materialisiert werden, da JsonNode-Instanzen nicht mehreren übergeordneten Elementen zugewiesen werden können.
Ohne eine Begrenzung dieser Konvertierungsarbeit kann ein kleines YAML-Dokument mit verschachtelten Ankern und Aliasen während der Konvertierung exponentiell anwachsen. Bei N verschachtelten Ankern, die jeweils k-mal referenziert werden, kann die Konvertierung k^N materialisierte JSON-Knoten erfordern, was zu übermäßiger Speicherbelegung und möglichem Prozessabbruch führt.
Dies ist eine Schwachstelle durch unkontrollierten Ressourcenverbrauch, auch bekannt als Denial-of-Service im Stil von „Billion Laughs“.
Beispielhafter Payload
openapi: 3.0.0
info:
title: Test
version: 0.0.1
paths: {}
x-a: &a ["lol", "lol", "lol", "lol", "lol", "lol", "lol", "lol", "lol"]
x-b: &b [*a, *a, *a, *a, *a, *a, *a, *a, *a]
x-c: &c [*b, *b, *b, *b, *b, *b, *b, *b, *b]
x-d: &d [*c, *c, *c, *c, *c, *c, *c, *c, *c]
x-e: &e [*d, *d, *d, *d, *d, *d, *d, *d, *d]
x-f: &f [*e, *e, *e, *e, *e, *e, *e, *e, *e]
Was zu tun ist
Benutzer sollten je nach verwendeter Hauptversionslinie auf Microsoft.OpenApi.YamlReader 2.12.0 oder 3.10.0 bzw. Microsoft.OpenApi.Readers 1.6.30 aktualisieren.
Die gepatchten Versionen begrenzen den YAML-zu-JSON-Konvertierungsaufwand und brechen frühzeitig ab, anstatt eine unbegrenzte Expansion zuzulassen. Die Standardgrenzwerte sind:
- Maximale Anzahl materialisierter Knoten:
5,000,000 - Maximale Schachtelungstiefe:
64
Wenn die Grenzwerte überschritten werden, meldet OpenApiYamlReader.Read einen OpenApiDiagnostic-Fehler und gibt kein geparstes Dokument zurück.
Die Grenzwerte werden als prozessweite statische Eigenschaften auf YamlConverter für Anwender bereitgestellt, die diese für vertrauenswürdige Arbeitslasten anpassen müssen:
YamlConverter.MaxNodeCountYamlConverter.MaxDepth
Anwendungen, die OpenAPI-Dokumente aus nicht vertrauenswürdigen Quellen verarbeiten, sollten das Parsen dieser Dokumente nach Möglichkeit nicht im primären Anwendungsprozess durchführen. Die Ausführung des Parsings in einem isolierten Prozess kann den Schadensradius von Parserfehlern verringern.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| .NET (NuGet) | Microsoft.OpenApi.Readers | < 1.6.30 | 1.6.30 |
| .NET (NuGet) | Microsoft.OpenApi.YamlReader | >= 3.0.0, < 3.10.0, >= 2.0.0-preview.11, < 2.12.0 | 3.10.0, 2.12.0 |
Verweise
- https://github.com/microsoft/OpenAPI.NET/security/advisories/GHSA-7pxr-59rr-hqj2
- https://nvd.nist.gov/vuln/detail/CVE-2026-72923
- https://github.com/microsoft/OpenAPI.NET/pull/3000
- https://github.com/microsoft/OpenAPI.NET/pull/3005
- https://github.com/microsoft/OpenAPI.NET/pull/3020
- https://github.com/microsoft/OpenAPI.NET/commit/1f9aea9bdcbf4066b59ce33b3bd8f97ed9cb4766
- https://github.com/microsoft/OpenAPI.NET/commit/21793261d6860fb6e607b71fd95c0bd320724764
- https://github.com/microsoft/OpenAPI.NET/commit/4db9af07d112cdf45170b7a946f956ffe74fa14e
- https://github.com/microsoft/OpenAPI.NET
- https://github.com/microsoft/OpenAPI.NET/releases/tag/v1.6.30
- https://github.com/microsoft/OpenAPI.NET/releases/tag/v2.12.0
- https://github.com/microsoft/OpenAPI.NET/releases/tag/v3.10.0
- CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H- Schwäche (CWE)
CWE-400, CWE-770- Plattform
- .NET (NuGet)
- Paket
Microsoft.OpenApi.Readers, Microsoft.OpenApi.YamlReader- Veröffentlicht
- 14.10.2026
- Aktualisiert
- 15.10.2026 08:00
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-7pxr-59rr-hqj2 - CC BY 4.0
Schwachstellenhistorie: Microsoft.OpenApi.Readers
Alle veröffentlichten Schwachstellen dieses Pakets (.NET (NuGet)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
Dies ist die einzige bekannte Schwachstelle dieses Pakets.
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.