R valodas ievieŔanas ievainojamība, kas ļauj izpildīt kodu, apstrādājot rds un rdx failus

ProgrammēŔanas valodas R galvenajā implementācijā ir konstatēta kritiska ievainojamÄ«ba (CVE-2024-27322), kas ir vērsta uz datu statistiskās apstrādes, analÄ«zes un vizualizācijas problēmu risināŔanu, kas noved pie koda izpildes, deserializējot nepārbaudÄ«tus datus. IevainojamÄ«bu var izmantot, apstrādājot Ä«paÅ”i izstrādātus failus RDS (R Data Serialization) un RDX formātos, ko izmanto datu apmaiņai starp lietojumprogrammām. Problēma ir atrisināta R 4.4.0 laidienā. Varat izsekot pakotņu atjauninājumu izlaiÅ”anai izplatÄ«jumos Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD lapās.

Ievainojamību izraisa funkcija readRDS, ko izmanto, lai ielādētu failus RDS un RDX formātos, kas ļauj serializētus R objektus pārsūtīt apstrādei citā sistēmā. Serializācija ļauj uztvert stāvokli un apmainīties ar datu kopām starp programmām. RDS formāts ļauj saglabāt stāvokli par vienu objektu, un RDX formāts kombinācijā ar RDB failiem ļauj pārsūtīt informāciju par vairākiem objektiem. Problēma ir tā, ka RDS formāts atbalsta PROMSXP objekta kodu, kas saistīts ar Promise tipu, ko izmanto, lai definētu izteiksmes, kuras tiek izsauktas asinhroni, ja tiek izmantotas ar tām saistītās vērtības.

Deserializācijas laikā solÄ«juma objekta definēŔanai tiek izmantotas trÄ«s daļas — solÄ«juma vērtÄ«ba, izteiksme un vide. Ja tipam Promise nav iepriekÅ” aprēķinātas vērtÄ«bas, to aprēķina deserializācijas laikā, izpildot izteiksmi, izmantojot funkciju "eval". Tādā veidā uzbrucējs var izraisÄ«t patvaļīga R koda izpildi, aizstājot to ar izteiksmi, kas saistÄ«ta ar neaprēķinātām vērtÄ«bām RDS vai RDX failos.

Avots: opennet.ru

Pievieno komentāru