Nieuwe kwetsbaarheid voor R-programmering stelt projecten bloot aan supply chain-aanvallen

Er is een beveiligingsprobleem ontdekt in de programmeertaal R dat kan worden uitgebuit door een bedreigingsacteur om een ​​kwaadaardig RDS-bestand (R Data Serialization) te maken, zodat dit resulteert in het uitvoeren van code wanneer het wordt geladen en waarnaar wordt verwezen.

De fout, toegewezen aan de CVE-identificatie CVE-2024-27322“behelst het gebruik van veelbelovende objecten en luie evaluatie in R”, zei AI-applicatiebeveiligingsbedrijf HiddenLayer in een rapport gedeeld met The Hacker News.

RDS is, net als Pickle in Python, een formaat dat wordt gebruikt om de status van datastructuren of objecten te serialiseren en op te slaan in R, een open-source programmeertaal die wordt gebruikt in statistisch computergebruik, datavisualisatie en machinaal leren.

Cyberbeveiliging

Dit proces van serialisatie – serialize() of saveRDS() – en deserialisatie – unserialize() en readRDS() – wordt ook gebruikt bij het opslaan en laden van R-pakketten.

De hoofdoorzaak achter CVE-2024-27322 ligt in het feit dat het kan leiden tot het uitvoeren van willekeurige code bij het deserialiseren van niet-vertrouwde gegevens, waardoor gebruikers worden blootgesteld aan supply chain-aanvallen via speciaal vervaardigde R-pakketten.

Een aanvaller die de fout wil bewapenen, zou daarom kunnen profiteren van het feit dat R-pakketten het RDS-formaat gebruiken om gegevens op te slaan en te laden, waardoor automatische code-uitvoering ontstaat wanneer het pakket wordt gedecomprimeerd en gedeserialiseerd.

“R-pakketten zijn kwetsbaar voor deze exploit en kunnen daarom worden gebruikt als onderdeel van een supply chain-aanval via pakketrepository's”, aldus beveiligingsonderzoekers Kasimir Schulz en Kieran Evans. “Als een aanvaller een R-pakket wil overnemen, hoeft hij alleen maar het rdx-bestand te overschrijven met het kwaadwillig vervaardigde bestand. Wanneer het pakket wordt geladen, wordt de code automatisch uitgevoerd.”

Het beveiligingsprobleem is verholpen in versie 4.4.0, uitgebracht op 24 april 2024, na verantwoorde openbaarmaking.

Cyberbeveiliging

‘Een aanvaller kan hier misbruik van maken [flaw] door een bestand in RDS-formaat te maken dat een belofte-instructie bevat die de waarde instelt op unbound_value en de expressie om willekeurige code te bevatten,' zei HiddenLayer. 'Vanwege luie evaluatie zal de expressie alleen worden geëvalueerd en uitgevoerd als het symbool dat aan de RDS is gekoppeld bestand wordt geopend.”

“Dus als dit eenvoudigweg een RDS-bestand is en een gebruiker er een symbool (variabel) aan toewijst om ermee te werken, zal de willekeurige code worden uitgevoerd wanneer de gebruiker naar dat symbool verwijst. Als het object is gecompileerd binnen een R-pakket, het pakket kan worden toegevoegd aan een R-repository zoals CRAN, en de expressie zal worden geëvalueerd en de willekeurige code zal worden uitgevoerd wanneer een gebruiker dat pakket laadt.”

Thijs Van der Does