V hlavní implementaci programovacího jazyka R, který se zaměřuje na statistické zpracování, analýzu a vizualizaci dat, byla objevena kritická zranitelnost (CVE-2024-27322), vedoucí k vykonávání kódu při deserializaci neověřených dat. Zranitelnost může být zneužita při zpracování speciálně formátovaných souborů ve formátech RDS (R Data Serialization) a RDX, používaných pro výměnu dat mezi aplikacemi. Problém byl odstraněn ve vydání R 4.4.0. Sledování vydání aktualizací balíčků v distribucích lze provádět na stránkách Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD.
Zranitelnost je způsobena specifikou fungování funkce readRDS, používané pro načítání souborů ve formátech RDS a RDX, které umožňují přenášet serializované objekty R pro zpracování na jiném systému. Serializace dává možnost zaznamenat stav a vyměňovat si datové sady mezi programy. Formát RDS umožňuje uchovávat stav o jednom objektu, zatímco formát RDX v kombinaci se soubory RDB poskytuje možnost přenášení informací o více objektech. Problém souvisí s tím, že formát RDS podporuje objektový kód PROMSXP, související s typem Promise, který se používá pro definici výrazů vyvolaných asynchronně při práci s přiřazenými hodnotami.
Při deserializaci se pro určení objektu Promise používají tři komponenty — hodnota Promise, výraz a prostředí. Pokud není pro typ Promise předem stanovena vypočítaná hodnota, je tato hodnota počítána při deserializaci prostřednictvím vykonávání výrazu pomocí funkce „eval“. Tímto způsobem může útočník dosáhnout vykonání libovolného kódu v jazyce R tím, že ho vloží místo výrazu spojeného s nevypočítanými hodnotami ve souborech RDS nebo RDX.
Zdroj: opennet.ru
