Chyba zabezpečení v implementaci jazyka R, která umožňuje spuštění kódu při zpracování souborů rds a rdx

V hlavní implementaci programovacího jazyka R byla identifikována kritická zranitelnost (CVE-2024-27322), která je zaměřena na řešení problémů statistického zpracování, analýzy a vizualizace dat vedoucí ke spuštění kódu při deserializaci neověřených dat. Tuto chybu zabezpečení lze zneužít při zpracování speciálně navržených souborů ve formátech RDS (R Data Serialization) a RDX používaných pro výměnu dat mezi aplikacemi. Problém je vyřešen ve verzi R 4.4.0. Vydání aktualizací balíčků v distribucích můžete sledovat na stránkách Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD.

Zranitelnost je způsobena funkcí readRDS, která se používá k načítání souborů ve formátech RDS a RDX, které umožňují přenos serializovaných R objektů ke zpracování v jiném systému. Serializace umožňuje zachytit stav a vyměňovat soubory dat mezi programy. Formát RDS umožňuje uložit stav o jednom objektu a formát RDX v kombinaci se soubory RDB umožňuje přenášet informace o několika objektech. Problém je v tom, že formát RDS podporuje objektový kód PROMSXP spojený s typem Promise, který se používá k definování výrazů, které jsou volány asynchronně, když jsou použity jejich přidružené hodnoty.

Během deseralizace se k definování objektu Promise používají tři části – hodnota Promise, výraz a prostředí. Pokud typ Promise nemá předem vypočítanou hodnotu, vypočítá se během deserializace provedením výrazu pomocí funkce "eval". Tímto způsobem by útočník mohl způsobit spuštění libovolného kódu R tím, že jej nahradí výrazem spojeným s nevypočítanými hodnotami v souborech RDS nebo RDX.

Zdroj: opennet.ru

Přidat komentář