R-ohjelmointikielen päätoteutuksessa on tunnistettu kriittinen haavoittuvuus (CVE-2024-27322), jonka tarkoituksena on ratkaista datan tilastollisen käsittelyn, analyysin ja visualisoinnin ongelmia, mikä johtaa koodin suorittamiseen todentamattomien tietojen sarjoituksessa. Haavoittuvuutta voidaan hyödyntää, kun käsitellään erityisesti suunniteltuja RDS- (R Data Serialization)- ja RDX-muotoisia tiedostoja, joita käytetään tietojen vaihtoon sovellusten välillä. Ongelma on ratkaistu R 4.4.0 -julkaisussa. Voit seurata pakettipäivitysten julkaisua jakeluissa Debianin, Ubuntun, RHEL:n, SUSE/openSUSE, Fedoran, Archin, FreeBSD:n sivuilla.
Haavoittuvuuden aiheuttaa readRDS-toiminto, jota käytetään RDS- ja RDX-muotoisten tiedostojen lataamiseen, mikä mahdollistaa sarjoitettujen R-objektien siirtämisen toisessa järjestelmässä käsiteltäväksi. Serialisointi mahdollistaa tilan sieppaamisen ja tietojoukkojen vaihtamisen ohjelmien välillä. RDS-muoto mahdollistaa tilan tallentamisen yhdestä objektista, ja RDX-muoto yhdessä RDB-tiedostojen kanssa mahdollistaa tiedon siirtämisen useista objekteista. Ongelmana on, että RDS-muoto tukee Promise-tyyppiin liittyvää PROMSXP-objektikoodia, jota käytetään määrittämään lausekkeita, joita kutsutaan asynkronisesti, kun niihin liittyviä arvoja käytetään.
Deserialisoinnin aikana Promise-objektin määrittämiseen käytetään kolmea osaa – Promise-arvoa, lauseketta ja ympäristöä. Jos Promise-tyypillä ei ole ennalta laskettua arvoa, se lasketaan deserialisoinnin aikana suorittamalla lauseke "eval"-funktiolla. Tällä tavalla hyökkääjä voi aiheuttaa mielivaltaisen R-koodin suorittamisen korvaamalla sen lausekkeella, joka liittyy RDS- tai RDX-tiedostojen laskemattomiin arvoihin.
Lähde: opennet.ru
