Nel modulo tarfile fornito con Python, che offre funzioni per la lettura e la scrittura di archivi tar, sono state scoperte cinque vulnerabilità, una delle quali ha ricevuto un livello di criticità elevato. Le vulnerabilità sono state risolte nelle versioni Python 3.13.4 e 3.12.11. La vulnerabilità più pericolosa (CVE-2025-4517) consente, durante l'estrazione di un archivio opportunamente creato, di scrivere file in qualsiasi parte del file system. Negli script di sistema che utilizzano tarfile e vengono eseguiti con privilegi di root (ad esempio, nelle utility per la gestione dei pacchetti e nei container isolati), la vulnerabilità può essere sfruttata per ottenere privilegi elevati o uscire oltre i confini del container isolato.
La vulnerabilità riguarda i progetti in cui il modulo tarfile viene utilizzato per estrarre archivi tar non fidati, utilizzando la funzione TarFile.extractall() o TarFile.extract() con il parametro ‘filter=’ impostato su ‘data’ o ‘tar’. La vulnerabilità è causata da una gestione non corretta della sequenza ‘..’ nel nome del link. Il problema interessa le versioni di Python a partire dalla 3.12. La modalità ‘filter= “data”’ è applicata per impostazione predefinita nel ramo Python 3.14, attualmente in fase di sviluppo (il rilascio è previsto per l'autunno).
Altre vulnerabilità in TarFile:
- CVE-2025-4330 — possibilità di eludere il filtro dei dati estratti, il che può portare all'estrazione da un archivio di un link simbolico che punta al di fuori della directory di base in cui viene effettuata l'estrazione.
- CVE-2025-4138 — possibilità di creare link simbolici arbitrari al di fuori della directory di base durante l'estrazione di archivi con il parametro ‘filter= “data”’.
- CVE-2024-12718 — possibilità di modificare i metadati (ad esempio, la data di modifica) dei file al di fuori della directory di base durante l'estrazione di archivi con il parametro ‘filter= “data”’ o i permessi (chmod) durante l'estrazione di archivi con il parametro ‘filter= “tar”’.
- CVE-2025-4435 — se durante l'estrazione di un archivio il parametro TarFile.errorlevel è impostato su 0, nonostante la documentazione, gli elementi dell'archivio che corrispondono al filtro specificato venivano estratti anziché ignorati.
Fonte: opennet.ru
