Vulnerabilità in Python, che si manifesta durante l'elaborazione di numeri decimali non verificati in ctypes

Sono disponibili aggiornamenti correttivi per il linguaggio di programmazione Python 3.7.10 e 3.6.13, che risolvono una vulnerabilità (CVE-2021-3177) che potrebbe portare all'esecuzione di codice durante l'elaborazione di numeri in virgola mobile non verificati nei gestori che invocano funzioni in linguaggio C attraverso il meccanismo ctypes. La questione interessa anche le versioni Python 3.8 e 3.9, ma gli aggiornamenti per queste ultime sono ancora in fase di candidati per il rilascio (il rilascio è previsto per il 1° marzo).

Il problema è causato da un overflow del buffer nella funzione ctypes PyCArg_repr(), che si verifica a causa di un uso non sicuro di sprintf. In particolare, per il trattamento del risultato dell'esecuzione della conversione ‘sprintf(buffer, "", self->tag, self->value.b)’ veniva riservato un buffer statico di 256 byte («char buffer[256]»), mentre il risultato poteva superare tale valore. Per verificare se le applicazioni sono vulnerabili, si può provare a passare il valore «1e300», che durante l'elaborazione tramite c_double.from_param causerà un crash, poiché il numero risultante contiene 308 cifre e non si adatta a un buffer di 256 byte. Esempio di codice problematico: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

Il problema rimane non risolto in Debian, Ubuntu e FreeBSD, ma è già stato corretto in Arch Linux, Fedora, SUSE. In RHEL la vulnerabilità non si manifesta a causa della compilazione dei pacchetti in modalità FORTIFY_SOURCE, che blocca simili overflow del buffer nelle funzioni di stringa.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster