Nella versione principale del linguaggio di programmazione R, focalizzato sulla risoluzione di problemi relativi all'analisi statistica, all'analisi e alla visualizzazione dei dati, è stata identificata una vulnerabilità critica (CVE-2024-27322) che porta all'esecuzione di codice durante la deserializzazione di dati non controllati. Questa vulnerabilità può essere sfruttata durante l'elaborazione di file appositamente formattati nei formati RDS (R Data Serialization) e RDX, utilizzati per lo scambio di dati tra applicazioni. Il problema è stato risolto nella versione R 4.4.0. È possibile monitorare gli aggiornamenti dei pacchetti nelle distribuzioni sulle pagine di Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD.
La vulnerabilità è causata dalle peculiarità del funzionamento della funzione readRDS, utilizzata per caricare file nei formati RDS e RDX, che consentono di trasferire oggetti R serializzati per l'elaborazione su un altro sistema. La serializzazione consente di salvare lo stato e scambiare set di dati tra programmi. Il formato RDS consente di memorizzare lo stato di un singolo oggetto, mentre il formato RDX combinato con i file RDB consente di trasferire informazioni su più oggetti. Il problema è legato al fatto che il formato RDS supporta il codice oggetto PROMSXP, associato al tipo Promise, utilizzato per definire espressioni chiamate in modo asincrono durante l'uso dei valori associati.
Durante la deserializzazione, per identificare l'oggetto Promise vengono utilizzati tre componenti: il valore Promise, l'espressione e l'ambiente. Se per il tipo Promise non è stato fornito un valore calcolato in precedenza, esso viene calcolato durante la deserializzazione mediante l'esecuzione dell'espressione utilizzando la funzione "eval". In questo modo, un aggressore può ottenere l'esecuzione di codice arbitrario nel linguaggio R, sostituendolo con l'espressione associata ai valori non calcolati nei file RDS o RDX.
Fonte: opennet.ru
