HochCVE-2026-121809

    Elixir-grpc Grpc Server: Endlosschleife (CVE-2026-121809)

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

    Teilen

    Was ist betroffen, was ist zu tun

    Aktualisieren Sie Elixir-grpc Grpc Server auf Version 1.1.0, Elixir-grpc Grpc auf Version 1.0.0.

    Betroffen
    • Elixir-grpc Grpc Server lt 1.0.0..1.1.0
    • Elixir-grpc Grpc lt 0.3.1..1.0.0
    Behoben in
    • Elixir-grpc Grpc Server 1.1.0
    • Elixir-grpc Grpc 1.0.0

    Unklar, ob und wie Sie betroffen sind? Frage zu dieser Schwachstelle stellen

    Metriken

    8,2

    XIEM Effective CVSS

    Höchste verfügbare CVSS-Bewertung aus NVD- und Herstellerangaben.

    Quelle: Hersteller (CNA), CVSS v4

    8,2

    CVSS v4

    Schweregrad Hoch auf der Skala von 0 bis 10.

    Quelle: CVE.org, EUVD, OSV

    —

    EPSS-Score

    Für diese Schwachstelle liegt kein Wert vor.

    Alle Metriken anzeigen
    Schweregrad
    Hoch
    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
    71.00 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
    8,2 Methodik
    CVSS v4

    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
    8,2
    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
    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-400, CWE-835

    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
    Hohe technische Schwere: Bewerten und beheben Sie die Schwachstelle im Schwachstellenmanagement nach Art. 21 Abs. 2 lit. e NIS2 und dokumentieren Sie die Entscheidung.
    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

    Schwachstelle mit unerreichbarem Exit-Zustand ('Endlosschleife') in elixir-grpc grpc_server und grpc ermöglicht es nicht authentifizierten Angreifern, einen BEAM-Scheduler dauerhaft zu belegen, indem sie eine client-streaming- oder bidirektionale-streaming-Anfrage senden, deren Körper innerhalb einer gRPC-Nachricht endet.

    GRPC.Server.Adapters.Cowboy.read_stream/1 (grpc_server/lib/grpc/server/adapters/cowboy.ex, und der Cowboy-Adapter in grpc vor dem Paket-Split) fordert mehr Daten an, sobald der Puffer keine vollständige Nachricht enthält. Sobald der Anfragekörper endet, gibt jeder weitere Lesevorgang einen leeren Chunk zurück, sodass der Puffer sich nicht ändert und die Funktion ohne Ende wiederholt. Ein einzelner 5-Byte-Längenpräfix, der mit END_STREAM gesendet wird, hält einen Scheduler so lange beschäftigt, wie die Verbindung offen bleibt, und wiederholte Anfragen erschöpfen alle Scheduler.

    Dieses Problem betrifft grpc_server: von 1.0.0 bis 1.1.0; grpc: von 0.3.1 bis 1.0.0.

    Details

    1. Eine unvollständige Nachricht

    Ein Client sendet ein 5-Byte-gRPC-Längenpräfix, das mehr Bytes als folgen, deklariert, und beendet den Anfragekörper mit END_STREAM.

    2. Der Leser fordert mehr

    read_stream/1 ruft GRPC.Message.get_message/1 auf, das false zurückgibt, weil die deklarierte Nachricht unvollständig ist. read_stream/1 setzt dann need_more und liest erneut durch Handler.read_body/1.

    3. Jedes Lesen ist leer

    Sobald der Körper gelesen wurde, gibt der Handlers async_read_body/2 (und cowboy_req:read_body/2 in älteren Versionen) sofort einen leeren Chunk zurück. Der Puffer bleibt gleich, die Exit-Klausel für einen leeren, fertigen Puffer wird nie erfüllt, und die Schleife wiederholt sich.

    4. Kein Timeout beendet es

    Jede Iteration ist eine Nachrichtenrückmeldung zwischen zwei lokalen Prozessen, kein Socket-Wait, sodass keine I/O-Timeouts gelten. Ohne grpc-timeout-Header gibt es kein Fristende, und der Adapter-Timeout für Inaktivität ist standardmäßig :infinity. Ein Scheduler bleibt bei voller Auslastung, bis der Client die Verbindung schließt.

    Proof of Concept

    1. Starte einen Server, der eine client-streaming RPC bereitstellt, zum Beispiel RouteGuide.RecordRoute.
    2. Öffne eine HTTP/2-Verbindung und sende HEADERS für diese Methode mit content-type: application/grpc und ohne grpc-timeout.
    3. Sende einen DATA-Frame mit END_STREAM, der nur das 5-Byte-Präfix 00 00 00 00 64 enthält, das eine 100-Byte-Nachricht deklariert.
    4. Halte die Verbindung offen und beobachte, dass keine Antwort eintrifft und ein BEAM-Scheduler bei 100% CPU-Auslastung bleibt, bis die Verbindung geschlossen wird.

    Auswirkungen

    Ein nicht authentifizierter Client kann einen Scheduler pro offener Verbindung mit einer 5-Byte-Anfrage beschäftigen, und genügend Verbindungen verweigern den Dienst für jede Anwendung auf dem Knoten.

    Konfigurationen

    Der Server muss mindestens eine client-streaming- oder bidirektionale-streaming-RPC-Methode bereitstellen.

    Originalquelle nur englisch verfügbar, maschinell ins Deutsche übersetzt.

    Quelle: NVD (NIST), ENISA EUVD, cvelistv5, OSV (Open Source Vulnerabilities), CVE.org (MITRE)

    Betroffene Produkte

    Betroffen sind die folgenden Versionen. Ältere Stände derselben Reihe sind ebenfalls verwundbar, sofern nicht anders angegeben.

    Betroffene Produkte
    Betroffene VersionenBehoben in
    elixir-grpcgrpc
    • 0.3.1 – < 1.0.0
    • 1.0.0
    elixir-grpcgrpc_server
    • 1.0.0 – < 1.1.0
    • 1.1.0
    hexgrpc
    • 0.11.2
    • 0.10.1
    • 0.3.1
    • 1.0.0-rc.1
    • 0.11.0
    • 0.8.1
    • 0.4.0-alpha.1
    • 0.5.0
    • 0.10.0
    • 0.11.5
    • 0.11.4
    • 0.8.0
    • 0.10.2
    • 0.7.0
    • 0.6.0
    • 0.4.0-alpha.2
    • 0.9.0
    • 0.11.1
    • 0.5.0-beta
    • 0.5.0-beta.1
    • 0.11.3
    • —
    • —
    • 1.0.0
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    hexgrpc_server
    • 1.0.0
    • 1.0.1
    • 1.0.2
    • 1.0.4
    • 1.0.6
    • 1.0.5
    • 1.0.3
    • 1.1.0
    • —
    • —
    • —
    • —
    • —
    • —

    Hersteller und Produkte

    Weakness-Klassen (CWE)

    • CWE-400Uncontrolled Resource Consumption

      Class

      The product does not properly control the allocation and maintenance of a limited resource.

      Eintrag bei MITRE CWE-400
    • CWE-835Loop with Unreachable Exit Condition ('Infinite Loop')

      Base

      The product contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop.

      Eintrag bei MITRE CWE-835

    Quellen & Referenzen

    • github.comCPU exhaustion via a truncated gRPC message on streaming RPCs in elixir-grpc grpc_servereuvd, Herstellerhinweis, related, advisory
    • cna.erlef.orgEEF CNA record for CVE-2026-121809euvd, related, web
    • OSV (Open Source Vulnerabilities)OSV record EEF-CVE-2026-121809euvd, related
    • github.comIntroducing commit 0332faa in elixir-grpc/grpceuvd, related, web
    • github.comFix commit 38955f1 in elixir-grpc/grpceuvd, Patch, fix
    • github.comIntroducing commit 6d8a09a in elixir-grpc/grpceuvd, related, web
    • hex.pmpackages/grpc_serverpackage
    • hex.pmpackages/grpcpackage

    Ä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: keine bekannt, automatisierbar: nein

      Einzeländerung im Original anzeigen
      Einzeländerungen dieses Ereignisses im Original der NVD
      ArtAktionVorherNachher
      SSVC-Einschätzungergänzt
      —
      {"id":"CVE-2026-121809","role":"CISA Coordinator","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"version":"2.0.3","timestamp":"2026-11-13T17:55:12.226355Z"}

      Kennung der Quelle: 134c704f-9b21-4f2e-91b3-4a467353bcc0

    2. Neu erfasstEEF

      11 Einzeländerungen im Original anzeigen
      Einzeländerungen dieses Ereignisses im Original der NVD
      ArtAktionVorherNachher
      Beschreibungergänzt
      —
      Loop with Unreachable Exit Condition ('Infinite Loop') vulnerability in elixir-grpc grpc_server and grpc allows unauthenticated attackers to occupy a BEAM scheduler indefinitely via a client-streaming or bidirectional-streaming request whose body ends inside a gRPC message. GRPC.Server.Adapters.Cowboy.read_stream/1 (grpc_server/lib/grpc/server/adapters/cowboy.ex, and the Cowboy adapter in grpc before the package split) asks for more data whenever the buffer does not hold a complete message. Once the request body has ended, every further read returns an empty chunk, so the buffer never changes and the function retries without end. A single 5-byte length prefix sent with END_STREAM keeps one scheduler busy for as long as the connection stays open, and repeated requests exhaust all schedulers. This issue affects grpc_server: from 1.0.0 before 1.1.0; grpc: from 0.3.1 before 1.0.0.
      CVSSergänzt
      —
      AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
      Schwachstellentyp (CWE)ergänzt
      —
      CWE-400
      Schwachstellentyp (CWE)ergänzt
      —
      CWE-835
      Betroffene Versionen (Herausgeber)ergänzt
      —
      New affected value received. <a href="https://github.com/CVEProject/cvelistV5/blob/main/cves/2026/121xxx/CVE-2026-121809.json">CVE-2026-121809</a>
      Referenzergänzt
      —
      https://cna.erlef.org/cves/CVE-2026-121809.html
      Referenzergänzt
      —
      https://github.com/elixir-grpc/grpc/commit/0332faae5f5e132314794dbfdae5edecbccea292
      Referenzergänzt
      —
      https://github.com/elixir-grpc/grpc/commit/38955f1392cbf08eef231a347348445410455c85
      Referenzergänzt
      —
      https://github.com/elixir-grpc/grpc/commit/6d8a09ad919e208fb600538ac8b19bd733a04310
      Referenzergänzt
      —
      https://github.com/elixir-grpc/grpc/security/advisories/GHSA-c2h9-f9cc-27xh
      Referenzergänzt
      —
      https://osv.dev/vulnerability/EEF-CVE-2026-121809

      Kennung der Quelle: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db

    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-121809
    <a href="https://intel.neosec.eu/cve/CVE-2026-121809"><img src="https://intel.neosec.eu/badge/cve/CVE-2026-121809.svg" alt="CVE-2026-121809 – NEOSEC Intel" height="20"></a>