Sicherheitsl├╝cken

CVE-2022-1642


Beschreibung

Ein Programm, das swift-corelibs-foundation verwendet, ist anfällig für einen Denial-of-Service-Angriff, der durch eine potenziell bösartige Quelle verursacht wird, die ein JSON-Dokument erzeugt, das eine Typ-Fehlanpassung enthält. Diese Schwachstelle wird durch die Interaktion zwischen einem von der Swift-Standardbibliothek angebotenen Deserialisierungsmechanismus, dem Codable-Protokoll, und der von swift-corelibs-foundation angebotenen JSONDecoder-Klasse verursacht, die Typen, die das Codable-Protokoll übernehmen, basierend auf dem Inhalt eines bereitgestellten JSON-Dokuments deserialisieren kann. Wenn ein Typ, der das Codable-Protokoll verwendet, die Initialisierung eines Feldes mit einem Integer-Wert anfordert, verwendet die JSONDecoder-Klasse einen vom Typ gelöschten Container mit verschiedenen Accessor-Methoden, um zu versuchen, einen entsprechenden JSON-Wert zu erzwingen und einen Integer-Wert zu erzeugen. In dem Fall, in dem der JSON-Wert ein numerisches Literal mit einem Fließkommaanteil war, verwendete JSONDecoder während der Validierung andere Methoden zur Typauslöschung als beim endgültigen Casting des Wertes. Das geprüfte Casting führt aufgrund dieser Diskrepanz zu einem deterministischen Absturz. Die Klasse JSONDecoder wird häufig von gängigen Swift-basierten Web-Frameworks verwendet, um den Textkörper von HTTP-Anfragen zu analysieren und eine grundlegende Typüberprüfung durchzuführen. Dadurch ist der Angriff wenig aufwändig: Das Senden eines speziell gestalteten JSON-Dokuments während einer Anfrage an diese Endpunkte führt zu deren Absturz. Der Angriff birgt an sich keine Vertraulichkeits- oder Integritätsrisiken; der Absturz wird deterministisch durch eine Abbruchfunktion erzeugt, die sicherstellt, dass die Ausführung angesichts dieser Verletzung der Annahmen nicht fortgesetzt wird. Allerdings können unerwartete Abstürze zu Verletzungen von Invarianten in Diensten führen, so dass es möglich ist, dass dieser Angriff dazu verwendet werden kann, Fehlerbedingungen auszulösen, die das Risiko erhöhen. Das Erzeugen einer Dienstverweigerung kann auch das eigentliche Ziel eines Angreifers sein. Dieses Problem wurde in Swift 5.6.2 für Linux und Windows behoben. Das Problem wurde behoben, indem sichergestellt wurde, dass sowohl bei der Validierung als auch beim Casting dieselben Methoden aufgerufen werden, so dass keine Typinkongruenz auftritt. Die Versionen von Swift für Linux und Windows sind nicht ABI-veränderbar. Um einen Dienst zu aktualisieren, muss sein Besitzer auf diese Version der Swift-Toolchain aktualisieren, dann neu kompilieren und seine Software erneut bereitstellen. Die neue Version von Swift enthält ein aktualisiertes swift-corelibs-foundation-Paket. Versionen von Swift, die auf Darwin-basierten Betriebssystemen laufen, sind nicht betroffen.


Referenzen

https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2022-1642

https://nvd.nist.gov/vuln/detail/cve-2022-1642

https://www.cvedetails.com/cve/cve-2022-1642/

https://www.tenable.com/cve/cve-2022-1642

https://vulmon.com/searchpage?q=cve-2022-1642

https://vulners.com/ubuntucve/UB:cve-2022-1642


Zurück zur Übersicht