Wysoka

Microsoft.OpenApi.YamlReader podatny na odmowę usługi (DoS) poprzez ekspansję aliasów YAML

  • Ujawniono: 14.10.2026
  • Aktualizacja: 15.10.2026 08:00

Wpływ

Niewielki dokument YAML OpenAPI zawierający zagnieżdżone kotwice i aliasy może spowodować niekontrolowane zużycie zasobów w bibliotekach Microsoft.OpenApi.YamlReader oraz Microsoft.OpenApi.Readers. Problem dotyczy parsowania dokumentów OpenAPI za pośrednictwem publicznych interfejsów API parsera YAML i może doprowadzić do alokacji nadmiernej ilości pamięci przez proces przetwarzający oraz jego zakończenia w wyniku braku pamięci (out-of-memory).

Podatne wersje

Microsoft.OpenApi.YamlReader

  • >= 2.0.0-preview.11, < 2.12.0
  • >= 3.0.0, < 3.10.0

Microsoft.OpenApi.Readers

  • < 1.6.30

Poprawki

  • Dla wersji głównej 1.X załatane są wersje 1.6.30 i wyższe.
  • Dla wersji głównej 2.X załatane są wersje 2.12.0 i wyższe.
  • Dla wersji głównej 3.X załatane są wersje 3.10.0 i wyższe.

Konsekwencje

Aplikacje, narzędzia CLI, środowiska deweloperskie lub usługi, które przetwarzają niezaufane dokumenty YAML OpenAPI w ramach własnego procesu, mogą ulec awarii w wyniku przetworzenia spreparowanego dokumentu YAML zawierającego zagnieżdżone kotwice i aliasy.

Wpływ ogranicza się wyłącznie do dostępności i przerwania działania procesu. Zgłoszenie nie dotyczy zdalnego wykonywania kodu, obejścia uwierzytelniania, ujawnienia poświadczeń, eskalacji uprawnień, wycieku danych ani wpływu na usługi hostowane przez firmę Microsoft.

Szczegóły techniczne

Microsoft.OpenApi.YamlReader oraz Microsoft.OpenApi.Readers przetwarzają YAML za pomocą biblioteki SharpYaml. SharpYaml reprezentuje aliasy jako współdzielone instancje YamlNode w skierowanym grafie acyklicznym, dzięki czemu początkowy przetworzony graf YAML pozostaje niewielki. Podczas konwersji do System.Text.Json.Nodes.JsonNode aliasy muszą zostać zmaterializowane jako niezależne węzły, ponieważ instancje JsonNode nie mogą być przypisane do wielu węzłów nadrzędnych.

Bez ograniczenia tego procesu konwersji niewielki dokument YAML wykorzystujący zagnieżdżone kotwice i aliasy może ulec wykładniczemu rozrostowi podczas przetwarzania. W przypadku N zagnieżdżonych kotwic, z których każda jest przywoływana k razy, konwersja może wymagać k^N zmaterializowanych węzłów JSON, prowadząc do nadmiernej alokacji pamięci i potencjalnego zakończenia procesu.

Jest to podatność polegająca na niekontrolowanym zużyciu zasobów, znana również jako odmowa usługi w stylu „billion laughs”.

Przykładowy ładunek

yaml
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]

Co trzeba zrobić

Użytkownicy powinni zaktualizować biblioteki do wersji Microsoft.OpenApi.YamlReader 2.12.0 lub 3.10.0, albo Microsoft.OpenApi.Readers 1.6.30, w zależności od używanej linii wersji głównej.

Załatane wersje ograniczają operacje konwersji YAML na JSON i szybko zgłaszają błąd, zamiast dopuszczać nieograniczoną ekspansję. Domyślne limity to:

  • Maksymalna liczba zmaterializowanych węzłów: 5,000,000
  • Maksymalna głębokość zagnieżdżenia: 64

W przypadku przekroczenia limitów OpenApiYamlReader.Read zgłasza błąd OpenApiDiagnostic i nie zwraca przetworzonego dokumentu.

Limity te są udostępnione jako statyczne właściwości na poziomie procesu w YamlConverter dla odbiorców, którzy muszą je dostosować dla zaufanych obciążeń:

  • YamlConverter.MaxNodeCount
  • YamlConverter.MaxDepth

Aplikacje przetwarzające dokumenty OpenAPI z niezaufanych źródeł powinny w miarę możliwości unikać ich parsowania w głównym procesie aplikacji. Uruchamianie parsowania w odizolowanym procesie pozwala zmniejszyć zakres ewentualnych szkód w przypadku awarii parsera.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
.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

Odnośniki

Ocena CVSS 7.5/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Słabość (CWE)
CWE-400, CWE-770
Platforma
.NET (NuGet)
Paczka
Microsoft.OpenApi.Readers, Microsoft.OpenApi.YamlReader
Ujawniono
14.10.2026
Aktualizacja
15.10.2026 08:00

Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.

OSV / GitHub Advisory Database - GHSA-7pxr-59rr-hqj2 - CC BY 4.0

Historia podatności: Microsoft.OpenApi.YamlReader

Wszystkie opisane podatności tej paczki (.NET (NuGet)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

To jedyna znana podatność tej paczki.

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.