Cacat Python berusia 15 tahun ditemui dalam ‘lebih 350,000’ projek

Sekurang-kurangnya 350,000 projek sumber terbuka dipercayai berpotensi terdedah kepada eksploitasi melalui kecacatan modul Python yang kekal tidak diperbaiki selama 15 tahun.

Pada hari Selasa, firma keselamatan Trellix berkata penyelidik ancamannya telah menghadapi kelemahan dalam Python tarfile modul, yang menyediakan cara untuk membaca dan menulis berkas mampat fail yang dikenali sebagai arkib tar. Pada mulanya, pemburu pepijat menyangka mereka akan mendapat hari sifar.

Ia ternyata menjadi kira-kira isu 5,500 hari: pepijat telah menjalani kehidupan terbaiknya selama sedekad setengah yang lalu sementara menunggu kepupusan.

Dikenal pasti sebagai CVE-2007-4559kelemahan itu muncul pada 24 Ogos 2007, dalam a Catatan senarai mel Python daripada Jan Matejek, yang pada masa itu penyelenggara pakej Python untuk SUSE. Ia boleh dieksploitasi untuk berpotensi menulis ganti dan merampas fail pada mesin mangsa, apabila aplikasi yang terdedah membuka arkib tar berniat jahat melalui tarfile.

“Kerentanan berlaku pada asasnya seperti ini: Jika anda tar fail bernama "../../../../../etc/passwd" dan kemudian buat admin untar itu, /etc/passwd akan ditimpa,” jelas Matejek pada masa itu.

Cacat traversal direktori tarfile ialah dilaporkan pada 29 Ogos 2007 oleh Tomas Hoger, seorang jurutera perisian di Red Hat.

Tetapi ia telah ditangani, semacam. Sehari sebelumnya, Lars Gustäbel, penyelenggara modul tarfile, komited perubahan kod yang menambah lalai benar check_paths parameter dan fungsi pembantu kepada TarFile.extractall() kaedah yang membuang ralat jika laluan fail arkib tar tidak selamat.

Tetapi pembaikan itu tidak menangani TarFile.extract() kaedah – yang Gustäbel kata “tidak boleh digunakan sama sekali” – dan membiarkan terbuka kemungkinan bahawa mengekstrak data daripada arkib yang tidak dipercayai mungkin menyebabkan masalah.

Dalam benang komen, Gustäbel menjelaskan dia tidak lagi menganggap ini sebagai isu keselamatan. “tarfile.py tidak melakukan kesalahan, kelakuannya mematuhi definisi pax dan garis panduan resolusi nama laluan dalam POSIX,” tulisnya.

“Tiada eksploitasi praktikal yang diketahui atau mungkin. I [updated] dokumentasi dengan amaran bahawa mungkin berbahaya untuk mengekstrak arkib daripada sumber yang tidak dipercayai. Itulah satu-satunya perkara yang perlu dilakukan IMO.”

Sesungguhnya, dokumentasi menerangkan senapang kaki ini:

Amaran: Jangan sekali-kali mengekstrak arkib daripada sumber yang tidak dipercayai tanpa pemeriksaan terlebih dahulu. Ada kemungkinan bahawa fail dibuat di luar laluancth ahli yang mempunyai nama fail mutlak bermula dengan "/" atau nama fail dengan dua titik "..".

Namun di sini kita berada, dengan kedua-duanya extract() dan extractall() masih menimbulkan ancaman laluan sewenang-wenangnya.

“Kerentanan adalah serangan lintasan laluan dalam extract dan extractall berfungsi dalam modul tarfile yang membenarkan penyerang menimpa fail sewenang-wenangnya dengan menambahkan jujukan ‘..’ pada nama fail dalam arkib tar,” jelas Kasimir Schulz, penyelidik kerentanan untuk Trellix, dalam catatan blog.

Urutan “..” menukar laluan kerja semasa ke direktori induk. Jadi menggunakan kod seperti coretan enam baris di bawah, kata Schulz, the tarfile modul boleh diberitahu untuk membaca dan mengubah suai metadata fail sebelum ia ditambahkan pada arkib tar. Dan hasilnya adalah eksploitasi.

import tarfile

def change_name(tarinfo):
    tarinfo.name = "../" + tarinfo.name
    return tarinfo

with tarfile.open("exploit.tar", "w:xz") as tar:
    tar.add("malicious_file", filter=change_name)

Menurut Schulz, Trellix dibina alat percuma yang dipanggil Creosote untuk mengimbas CVE-2007-4559. Perisian ini telah menemui pepijat yang mengintai dalam aplikasi seperti Spyder IDE, persekitaran saintifik sumber terbuka yang ditulis untuk Python, dan Polemarch, perkhidmatan pengurusan infrastruktur IT untuk Linux dan Docker.

Syarikat menganggarkan tarfile kecacatan boleh ditemui “dalam lebih 350,000 projek sumber terbuka dan lazim dalam projek sumber tertutup.” Ia juga menunjukkan bahawa tarfile ialah modul lalai dalam mana-mana projek Python dan terdapat dalam rangka kerja yang dicipta oleh AWS, Facebook, Google dan Intel, dan dalam aplikasi untuk pembelajaran mesin, automasi dan bekas Docker.

Trellix berkata ia berfungsi untuk menyediakan kod yang dibaiki untuk projek yang terjejas.

“Dengan menggunakan alatan kami, kami pada masa ini mempunyai tampung untuk 11,005 repositori, sedia untuk permintaan tarik,” jelas Charles McFarland, penyelidik kelemahan untuk Trellix, dalam catatan blog. “Setiap tampung akan ditambahkan pada repositori bercabang dan permintaan tarik dibuat dari semasa ke semasa. Ini akan membantu individu dan organisasi sama-sama menyedari masalah itu dan memberi mereka penyelesaian satu klik.

“Disebabkan saiz projek yang mudah terjejas, kami menjangkakan untuk meneruskan proses ini dalam beberapa minggu akan datang. Ini dijangka mencecah 12.06 peratus daripada semua projek yang terdedah, lebih sedikit daripada 70K projek pada masa siap.”

Baki 87.94 peratus daripada projek yang terjejas mungkin ingin mempertimbangkan pilihan lain yang mungkin. ®

We wish to say thanks to the writer of this article for this incredible web content

Cacat Python berusia 15 tahun ditemui dalam ‘lebih 350,000’ projek


Visit our social media accounts as well as other pages related to themhttps://paw6.info/related-pages/