Eine Schwachstelle in der Implementierung der Programmiersprache R, die es ermöglicht, Code bei der Verarbeitung von Dateien im Format rds und rdx auszuführen.

In der Hauptimplementierung der Programmiersprache R, die auf die Lösung von Aufgaben zur statistischen Verarbeitung, Analyse und Visualisierung von Daten ausgerichtet ist, wurde eine kritische Sicherheitsanfälligkeit (CVE-2024-27322) entdeckt, die zur Ausführung von Code bei der Deserialisierung von nicht überprüften Daten führt. Die Schwachstelle kann bei der Verarbeitung speziell gestalteter Dateien in den Formaten RDS (R Data Serialization) und RDX, die für den Datenaustausch zwischen Anwendungen verwendet werden, ausgenutzt werden. Das Problem wurde in der Version R 4.4.0 behoben. Informationen über Paketaktualisierungen in den Distributionen können auf den Seiten von Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch und FreeBSD abgerufen werden.

Die Sicherheitsanfälligkeit ist das Ergebnis der Funktionsweise der Funktion readRDS, die zum Laden von Dateien in den Formaten RDS und RDX verwendet wird, die das Übertragen von serialisierten R-Objekten zur Verarbeitung auf einem anderen System ermöglichen. Die Serialisierung ermöglicht es, den Zustand zu fixieren und Datensätze zwischen Programmen auszutauschen. Das RDS-Format erlaubt es, den Zustand eines einzelnen Objekts zu speichern, während das RDX-Format in Kombination mit RDB-Dateien die Übertragung von Informationen über mehrere Objekte ermöglicht. Das Problem hängt damit zusammen, dass das RDS-Format den Objekttyp PROMSXP unterstützt, der mit dem Typ Promise verbunden ist und zur Definition von Ausdrücken verwendet wird, die asynchron aufgerufen werden, während die zugehörigen Werte verwendet werden.

Bei der Deserialisierung werden drei Komponenten verwendet, um ein Promise-Objekt zu bestimmen – der Wert des Promises, der Ausdruck und die Umgebung. Wenn für den Typ Promise kein zuvor berechneter Wert festgelegt ist, wird dieser während der Deserialisierung durch die Ausführung des Ausdrucks über die Funktion „eval“ berechnet. Dadurch kann ein Angreifer erreichen, dass beliebiger R-Code ausgeführt wird, indem er diesen anstelle des mit nicht berechneten Werten in den RDS- oder RDX-Dateien verbundenen Ausdrucks einfügt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4