<p>virtualenv Sandbox melarikan diri</p>

Dibuat pada 30 Sep 2018  ·  31Komentar  ·  Sumber: pypa/virtualenv

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>:~#

Komentar yang paling membantu

Saya meminta MITRE untuk menolak CVE

Semua 31 komentar

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

0dayconfirmed

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?

  1. Saya tidak dapat melihat bukti di tangkapan layar Anda bahwa Anda menggunakan apa pun yang terkait dengan virtualenv untuk mendapatkan akses root. Agak mencurigakan bahwa itu menyebutkan apa yang tampaknya menjadi instalasi Ruby Version Manager di direktori home root di sana, meskipun ada penjelasan untuk itu yang kompatibel dengan eksploitasi nyata.
  2. Saya tidak dapat memikirkan mekanisme yang masuk akal untuk melakukan apa yang Anda lakukan di luar mengeksploitasi sesuatu di luar virtualenv, karena virtualenv tidak memiliki dan tidak menggunakan file suid atau serupa, juga tidak mengambil hak istimewa dari pengguna mana pun selain yang menjalankannya. (Saya tidak mengatakan bahwa mekanismenya tidak ada, tetapi Anda perlu memberikan setidaknya beberapa indikasi di mana masalah ini mungkin terjadi. Jika Anda telah melaporkannya secara bertanggung jawab, Anda harus mengatakannya, dan kepada siapa Anda telah melaporkannya. melaporkannya.)

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

Apakah halaman ini membantu?
0 / 5 - 0 peringkat