CVE-2026-97853 in decimal
Zusammenfassung
von VulDB • 10.10.2026
Eine Schwachstelle mit der Bezeichnung "Memory Allocation with Excessive Size Value" (Speicherzuweisung mit übermäßigem Größenwert) in ericmj decimal ermöglicht einen Denial-of-Service-Angriff (DoS).
Die Funktion `Decimal.round/3` erstellt das vollständige Ergebnis für die angeforderte Anzahl von Dezimalstellen, bevor die Kontextgenauigkeit (standardmäßig 34 Stellen) angewendet wird. Daher steigt der Ressourcenverbrauch mit dem Argument `places`, anstatt mit der Größe des Ergebnisses zu skalieren. Bei positiven Werten für `places` werden vor der Konvertierung in eine Ganzzahl (`integer`) so viele Nullen als Charlist angehängt, wie durch das Argument angegeben sind; bei negativen Werten wird eine Charliste aus `-places` vielen Nullstellen erstellt. Ein einzelner Aufruf wie `Decimal.round(Decimal.new("1.5"), -50_000_000)` alloziert etwa 5,5 GB Speicher, was den verfügbaren Speicher erschöpfen und dazu führen kann, dass die BEAM-VM (Virtual Machine) beendet wird. Ältere Versionen stattdessen durchlaufen eine Schleife einmal pro Dezimalstelle, wodurch die CPU-Auslastung proportional zur Anzahl der Stellen ansteigt.
Jede Anwendung, die ein vom Benutzer bereitgestelltes Argument für die Anzahl der Dezimalstellen oder den Skalierungsfaktor an `Decimal.round/2` oder `Decimal.round/3` übergibt, ohne es zu begrenzen, ist davon betroffen. Die Eingabebegrenzungen, die für CVE-2026-32686 hinzugefügt wurden, decken das Argument `places` nicht ab.
Dieses Problem betrifft decimal: von Version 0.1.0 bis vor 3.1.2.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.