Judul Eksploitasi: pelarian kotak pasir virtualenv
Tanggal: 2018-9-30
Eksploitasi Penulis: Topsec Technologies Inc. - vr_system
Versi: 16.0.0
Diuji pada: kali linux
CVE : Tidak ada
1、install
root<strong i="11">@kali</strong>:~#pip install virtualenv
root<strong i="12">@kali</strong>:~#virtualenv test_env
root<strong i="13">@kali</strong>:~#cd test_env/
root<strong i="14">@kali</strong>:~/test_env#source ./bin/activate
(test_env) root<strong i="15">@kali</strong>:~/test_env#`
`2、Sandbox escape
(test_env) root<strong i="16">@kali</strong>:~/test_env#python $(bash >&2)
root<strong i="17">@kali</strong>:~#
(test_env) root<strong i="18">@kali</strong>:~/test_env#python $(rbash >&2)
root<strong i="19">@kali</strong>:~#
CVE-2018-17793 telah ditetapkan untuk masalah ini (tidak diminta oleh saya).
Bisakah Anda menjelaskan dampak keamanan di sini? Memanggil bash untuk kembali ke shell normal sepertinya bukan kerentanan bagi saya. Saya tidak berpikir ada orang yang mendapat kesan bahwa virtualenv memungkinkan Anda untuk menjalankan perintah shell yang tidak tepercaya dengan aman, bukan untuk itu.
Saya meminta MITRE untuk menolak CVE
Biasa sebagai berikut:
(test_env) r0ot#python $(sh 1>&2)
(test_env) r0ot#
(test_env) r0ot#python
Python 2.7.15 (default, 1 Mei 2018, 05:55:50)
[GCC 7.3.0] di linux2
Ketik "bantuan", "hak cipta", "kredit" atau "lisensi" untuk informasi lebih lanjut.
impor os
os.system("$(sh 1>&2)")
(test_env) r0ot#
Jika Anda menjalankan kode berbahaya:
(test_env) r0ot#python $(bash >&2)
r0ot#
PO:
(test_env) r0ot#python
Python 2.7.15 (default, 1 Mei 2018, 05:55:50)
[GCC 7.3.0] di linux2
Ketik "bantuan", "hak cipta", "kredit" atau "lisensi" untuk informasi lebih lanjut.
impor os
os.system("$(bash >&2)")
r0ot#
Jika Anda menjalankan kode berbahaya
Ya, dan jika Anda melompat dari gedung, Anda mungkin menabrak sesuatu saat turun. Tidak masalah karena Anda sudah dalam masalah besar dari melompat untuk memulai.
PYTHON di kotak pasir tidak 100% aman, dan kerentanan dapat mengakibatkan melewati perlindungan kotak pasir. Apa alasan menggunakan kotak pasir?
Jika kotak pasir sulit diperbaiki, disarankan untuk menghindari risiko dalam kode dan diminta dalam deskripsi kotak pasir.
@BakedPotato999 Python di virtualenv "sandbox" adalah 0% aman; itu tidak dirancang untuk juga tidak memberikan perlindungan apa pun terhadap kode berbahaya. Anda tampaknya sangat bingung tentang tujuan virtualenv.
@BakedPotato999 Python di virtualenv "sandbox" adalah 0% aman; itu tidak dirancang untuk juga tidak memberikan perlindungan apa pun terhadap kode berbahaya. Anda tampaknya sangat bingung tentang tujuan virtualenv.
Saya pikir aplikasi yang berjalan di Virtualenv ini independen dan tidak akan mempengaruhi sistem operasi Anda yang ada. Menutup kotak pasir akan memulihkan semua operasi. Dengan kotak pasir, Anda dapat menguji program dan perangkat lunak yang mungkin berisiko. Apakah itu benar?
Tidak, sepenuhnya salah. Tujuan dari virtualenv adalah untuk memungkinkan Anda menggunakan juru bahasa Python tertentu dan set paket Python (bukan paket yang diinstal sistem dan userdir) untuk menjalankan program di lingkungan yang normal.
"Kotak pasir", seperti itu, seharusnya secara default tidak menyertakan paket sistem dan pengguna, hanya yang diinstal di virtualenv. Tetapi tidak ada yang menghentikan Anda, misalnya, mengubah sys.path
untuk mengembalikan sistem default atau paket pengguna.
Juga tidak boleh ada yang menghentikan Anda melakukan itu. Interpreter Python dalam virtualenv harus dapat melakukan semua operasi yang dapat dilakukan oleh sistem interpreter Python (jika ada) ketika dijalankan oleh pengguna yang sama. Melakukan sebaliknya akan merusak banyak penggunaan umum dan yang diharapkan dari virtualenv.
@BakedPotato999 virtualenv/bin/activate
pada dasarnya hanya menempatkan Python yang dapat dieksekusi di lingkungan virtual sebelumnya di jalur Anda. Itu tidak dibangun untuk keamanan.
Saya akan menutup ini sebagai tidak valid.
Saya hanya ingin tahu, bagaimana Anda bisa membuat virtualenv menjadi sandbox
@BakedPotato999 ?
Saya mencari melalui dokumen, github dan dengan git grep
dan satu-satunya sandbox
adalah yang ini:
James Gardner telah menulis tutorial tentang penggunaan virtualenv dengan Pylons.
yang tertaut ke http://wiki.pylonshq.com/display/pylonscookbook/Using+a+Virtualenv+Sandbox (yang memiliki sandbox
di url).
Omong-omong, urlnya sudah mati dan ada di sini https://github.com/pypa/virtualenv/blob/384c8d13490f171a7ad99eeedd7fe45021a83d87/docs/index.rst
;).
Fakta bahwa ada "eksploitasi" sekarang https://www.exploit-db.com/exploits/45528/ dan bahwa pelacak keamanan distro besar memperlakukan ini sebagai kerentanan agak lucu.
Saya kira kita mungkin dapat menggunakan ini sebagai eskalasi hak istimewa, saya akan mencobanya sebenarnya
0 hari dikonfirmasi! :D
Sangat lucu, ha ha dan semua itu, tetapi mengingat bahwa CVE telah dibuat untuk
ini dan beberapa pelacak lainnya juga mencantumkannya, sekarang mencapai
titik membuang-buang waktu yang signifikan yang harus dihabiskan untuk keamanan nyata
masalah, dengan kata lain, kami sekarang memiliki semacam DoS pada keamanan kami
infrastruktur. Jadi mari kita taruh ini di tempat tidur sekarang tolong: "kotak pasir melarikan diri" ini
bukanlah kerentanan.
@0cjs Saya baru saja membuktikan itu dapat digunakan untuk mendapatkan akses root, bagaimana itu bukan kerentanan?
root
di sana, meskipun ada penjelasan untuk itu yang kompatibel dengan eksploitasi nyata.Satu penjelasan yang masuk akal untuk hal di atas adalah bahwa baris yang dikosongkan di tangkapan layar Anda menyertakan sudo -s
dan prompt kata sandi. Itu, bersama dengan instalasi RVM yang dihapus sebagian untuk pengguna root, akan menghasilkan output persis seperti itu, tanpa mengeksploitasi apa pun.
@0cjs Saya benar-benar mengosongkannya karena berhasil, saya masih menguji untuk memastikan itu bukan karena sistem saya yang sudah ketinggalan zaman, saya sebenarnya setuju bahwa itu adalah eksploitasi kernel yang berbeda yang kebetulan muncul dengan sendirinya di dalam virtualenv, sekali lagi pengujian masih.
Nah, Anda harus mengkonfirmasi hal-hal sedikit lebih sebelum Anda melaporkan alat yang, menurut desain, memungkinkan Anda untuk menjalankan program dan kode arbitrer sebagai pengguna saat ini. Melaporkan ini sebagai kerentanan virtualenv sama masuk akalnya dengan melaporkannya sebagai kerentanan Bash karena Anda juga menggunakan Bash di atas, atau kerentanan GCC karena digunakan untuk mengkompilasi beberapa kode yang Anda jalankan di beberapa titik.
Saya tidak melaporkan apa-apa...?
root @kali :~/test_env#python $(bash >&2)
Wow, itu bagus, tetapi Anda tidak benar-benar perlu menggunakan $()...Anda bisa saja...
root@kali :~/test_env#echo "ini perdukunan"
untuk "melewati" mekanisme kotak pasir virtualenv.
@BakedPotato999 Anda berhasil mendapatkan dari mengeksekusi kode python sewenang-wenang (atau lainnya) sebagai root ... Apa yang Anda sarankan adalah masalah keamanan yang muncul dari situasi sebelumnya ke yang terakhir?
Wah, masalah yang serius. Bagaimana saya bisa menggunakan perangkat lunak yang dimaksudkan untuk melakukan satu hal jika tidak dapat melakukan hal lain dengan aman? Mohon saran.
@ednix liveoverflow?
@ednix Anda tidak bisa. Anda tidak boleh menggunakan shell Unix lagi karena tidak dapat digunakan dengan aman untuk tujuan _some_.
Bahkan, jangan pernah menggunakan komputer lagi. Hal-hal berbahaya mereka, mereka dapat digunakan untuk berbagai tujuan.
Sebenarnya "masalah" ini mengingatkan saya bahwa mungkin digunakan untuk menangani https://github.com/pypa/virtualenv/issues/1334 - apakah ada yang punya kode POC yang bisa kita mulai?
Nexus oleh Sonatype menyediakan proxy untuk pypi.org. Proxy memungkinkan mengkarantina paket apa pun dengan skor kerentanan di atas ambang batas yang diberikan.
Karena CVE virtualenv yang salah arah ini telah dikarantina. Ketika kesalahpahaman mengakibatkan CVE diajukan, hal itu berdampak nyata pada pengguna, serta pemborosan waktu dan tenaga kontributor.
Maaf jika itu menyatakan hal yang jelas tetapi masalah ini berdampak langsung kepada saya.
MITER mengatur CVE menjadi sengketa. Mungkin Anda bisa mendapatkan Sonatype untuk menghormati informasi ini.
Bahkan, jangan pernah menggunakan komputer lagi. Hal-hal berbahaya mereka, mereka dapat digunakan untuk berbagai tujuan.
Kita seharusnya tidak hidup sama sekali, hidup itu berbahaya
Komentar yang paling membantu
Saya meminta MITRE untuk menolak CVE