I hovedimplementeringen af R-programmeringssproget, som er rettet mod at løse problemer med statistisk behandling, analyse og visualisering af data, er en kritisk sårbarhed (CVE-2024-27322) blevet identificeret, hvilket fører til kodeudførelse ved deserialisering af uverificerede data. Sårbarheden kan udnyttes ved behandling af specialdesignede filer i formaterne RDS (R Data Serialization) og RDX, der bruges til dataudveksling mellem applikationer. Problemet er løst i R 4.4.0-udgivelsen. Du kan spore udgivelsen af pakkeopdateringer i distributioner på siderne af Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD.
Sårbarheden skyldes en specifik funktion i readRDS-funktionen, der bruges til at indlæse filer i RDS- og RDX-formaterne, som tillader overførsel af serialiserede R-objekter til behandling på et andet system. Serialisering tillader indsamling af tilstand og udveksling af datasæt mellem programmer. RDS-formatet tillader lagring af tilstand om et enkelt objekt, mens RDX-formatet i kombination med RDB-filer tillader overførsel af information om flere objekter. Problemet er relateret til, at RDS-formatet understøtter PROMSXP-objektkode, der er knyttet til Promise-typen, som bruges til at definere udtryk, der kaldes asynkront, når de værdier, der er knyttet til dem, anvendes.
Under deserialisering bruges tre komponenter til at definere et Promise-objekt: Promise-værdien, udtrykket og miljøet. Hvis en Promise-type ikke har en forudberegnet værdi, beregnes en under deserialisering ved at udføre udtrykket ved hjælp af funktionen "eval". På denne måde kan en angriber udføre vilkårlig R-kode ved at erstatte den med et udtryk, der er knyttet til ikke-beregnede værdier i RDS- eller RDX-filer.
Kilde: opennet.ru
