Ini ialah arahan guestfs-security yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
guestfs-security - keselamatan libguestfs
DESCRIPTION
Halaman manual ini membincangkan implikasi keselamatan menggunakan libguestfs, terutamanya dengan
tetamu yang tidak dipercayai atau berniat jahat atau imej cakera.
KESELAMATAN OF GUNAKAN SISTEM FAIL
Anda tidak boleh melekapkan sistem fail tetamu yang tidak dipercayai terus pada kernel hos anda (cth.
menggunakan loopback atau kpartx).
Apabila anda memasang sistem fail, kesilapan dalam sistem fail kernel (VFS) boleh dipertingkatkan
eksploitasi oleh penyerang mencipta sistem fail berniat jahat. Eksploitasi ini sangat teruk untuk
dua sebab. Pertama terdapat sangat banyak pemacu sistem fail dalam kernel, dan banyak daripadanya
mereka jarang digunakan dan tidak banyak perhatian pembangun telah diberikan kepada kod tersebut.
Ruang pengguna Linux membantu keropok yang berpotensi dengan mengesan jenis sistem fail dan
memilih pemacu VFS yang betul secara automatik, walaupun jenis sistem fail itu tidak dijangka.
Kedua, eksploitasi peringkat kernel adalah seperti eksploitasi akar tempatan (lebih teruk dalam beberapa cara), memberi
akses segera dan menyeluruh kepada sistem sehingga ke peringkat perkakasan.
Eksploitasi ini boleh wujud dalam kernel untuk masa yang sangat lama
(https://lwn.net/Articles/538898/).
Libguestfs menyediakan pendekatan berlapis untuk melindungi anda daripada eksploitasi:
sistem fail yang tidak dipercayai
--------------------------------------
isirong perkakas
--------------------------------------
proses qemu berjalan sebagai bukan akar
--------------------------------------
sVirt [jika menggunakan libvirt + SELinux]
--------------------------------------
inti hos
Kami menjalankan kernel Linux di dalam mesin maya qemu, biasanya berjalan sebagai pengguna bukan root.
Penyerang perlu menulis sistem fail yang mula-mula mengeksploitasi kernel, dan kemudian
mengeksploitasi sama ada maya qemu (cth. pemacu qemu yang rosak) atau libguestfs
protokol, dan akhirnya menjadi serius seperti eksploitasi kernel hos yang diperlukan
meningkatkan keistimewaannya untuk mengakar. Selain itu jika anda menggunakan hujung belakang libvirt dan
SELinux, sVirt digunakan untuk mengehadkan proses qemu. Peningkatan berbilang langkah ini, dilakukan
oleh sekeping data statik, dianggap amat sukar untuk dilakukan, walaupun kami tidak pernah menyatakannya
'tidak pernah' tentang isu keselamatan.
Pemanggil juga boleh mengurangkan permukaan serangan dengan memaksa jenis sistem fail semasa melekap
(gunakan "guestfs_mount_vfs").
UMUM KESELAMATAN KONSIDERASI
Berhati-hati dengan sebarang fail atau data yang anda muat turun daripada tetamu (dengan "muat turun" yang kami maksudkan
bukan sahaja arahan "guestfs_download" tetapi sebarang arahan yang membaca fail, nama fail,
direktori atau apa-apa lagi daripada imej cakera). Penyerang boleh memanipulasi data untuk
menipu program anda untuk melakukan perkara yang salah. Pertimbangkan kes seperti:
· data (fail dll) tidak ada
· hadir tetapi kosong
· menjadi lebih besar daripada biasa
· mengandungi data 8 bit sewenang-wenangnya
· berada dalam pengekodan aksara yang tidak dijangka
· mengandungi homoglyphs.
PROTOKOL KESELAMATAN
Protokol ini direka bentuk untuk selamat, berdasarkan RFC 4506 (XDR) dengan bahagian atas yang ditentukan
saiz mesej. Walau bagaimanapun program yang menggunakan libguestfs juga mesti berhati-hati - sebagai contoh
anda boleh menulis program yang memuat turun binari daripada imej cakera dan melaksanakannya secara tempatan,
dan tiada jumlah keselamatan protokol akan menyelamatkan anda daripada akibatnya.
PEMERIKSAAN KESELAMATAN
Bahagian API pemeriksaan (lihat "PEMERIKSAAN") mengembalikan rentetan yang tidak dipercayai terus daripada
tetamu, dan ini boleh mengandungi sebarang data 8 bit. Pemanggil harus berhati-hati untuk mengelakkannya
sebelum mencetaknya ke fail berstruktur (contohnya, gunakan HTML melarikan diri jika mencipta a
laman sesawang).
Konfigurasi tetamu boleh diubah dengan cara yang luar biasa oleh pentadbir maya
mesin, dan mungkin tidak mencerminkan realiti (terutamanya untuk tidak dipercayai atau berniat jahat secara aktif
tetamu). Sebagai contoh, kami menghuraikan nama hos daripada fail konfigurasi seperti
/etc/sysconfig/network yang kami temui dalam tetamu, tetapi pentadbir tetamu boleh dengan mudah
manipulasi fail ini untuk memberikan nama hos yang salah.
API pemeriksaan menghuraikan konfigurasi tetamu menggunakan dua perpustakaan luaran: Augeas (Linux
konfigurasi) dan hivex (Windows Registry). Kedua-duanya direka untuk menjadi teguh di muka
data berniat jahat, walaupun serangan penafian perkhidmatan masih boleh dilakukan, contohnya dengan
fail konfigurasi bersaiz besar.
BERGUNA TIDAK BERTUAH TAMAT PERINTAH
Berhati-hati dalam menjalankan arahan daripada tetamu. Dengan menjalankan arahan dalam
tetamu, anda memberi masa CPU kepada binari yang anda tidak kawal, di bawah pengguna yang sama
akaun sebagai perpustakaan, walaupun dibalut dengan maya qemu. Maklumat lanjut dan
alternatif boleh didapati di bahagian "PERINTAH BERJALAN".
CVE-2010 3851-
https://bugzilla.redhat.com/642934
Pepijat keselamatan ini melibatkan pengesanan format cakera automatik yang qemu lakukan pada cakera
imej.
Imej cakera mentah hanyalah bait mentah, tiada pengepala. Imej cakera lain seperti qcow2
mengandungi tajuk khas. Qemu menangani perkara ini dengan mencari salah satu tajuk yang diketahui,
dan jika tiada yang ditemui maka andaikan imej cakera mestilah mentah.
Ini membolehkan tetamu yang telah diberikan imej cakera mentah untuk menulis beberapa pengepala lain. Pada
but seterusnya (atau apabila imej cakera diakses oleh libguestfs) qemu akan melakukan pengesanan automatik
dan fikir format imej cakera adalah, katakan, qcow2 berdasarkan pengepala yang ditulis oleh tetamu.
Ini sendiri tidak akan menjadi masalah, tetapi qcow2 menawarkan banyak ciri, salah satunya adalah untuk
benarkan imej cakera merujuk kepada imej lain (dipanggil "cakera sokongan"). Ia melakukan ini dengan
meletakkan laluan ke cakera sokongan ke dalam pengepala qcow2. Laluan ini tidak disahkan
dan boleh menunjuk ke mana-mana fail hos (cth. "/ etc / passwd"). Cakera sandaran kemudiannya terdedah
melalui "lubang" dalam imej cakera qcow2, yang sudah tentu berada di bawah kawalan sepenuhnya
daripada penyerang.
Dalam libguestfs ini agak sukar untuk dieksploitasi kecuali dalam dua keadaan:
1. Anda telah mendayakan rangkaian atau telah membuka cakera dalam mod tulis.
2. Anda juga menjalankan kod yang tidak dipercayai daripada tetamu (lihat "PERINTAH MENJALANKAN").
Cara untuk mengelakkan ini adalah dengan menentukan format cakera yang dijangkakan apabila menambah cakera (the
pilihan "format" pilihan kepada "guestfs_add_drive_opts"). Anda harus sentiasa melakukan ini jika
cakera adalah format mentah, dan ia adalah idea yang baik untuk kes lain juga. (Lihat juga "IMEJ CAKERA
FORMAT").
Untuk cakera yang ditambahkan daripada libvirt menggunakan panggilan seperti "guestfs_add_domain", format diambil
dari libvirt dan dilalui.
Untuk alat libguestfs, gunakan --format parameter baris arahan mengikut kesesuaian.
CVE-2011 4127-
https://bugzilla.redhat.com/752375
Ini ialah pepijat dalam kernel yang membenarkan tetamu menulis ganti bahagian pemacu hos
yang biasanya tidak boleh mereka akses.
Adalah memadai untuk mengemas kini libguestfs kepada mana-mana versi ≥ 1.16 yang mengandungi perubahan yang
mengurangkan masalah.
CVE-2012 2690-
https://bugzilla.redhat.com/831117
Versi lama kedua-dua virt-edit dan perintah "edit" guestfish mencipta fail baharu
mengandungi perubahan tetapi tidak menetapkan kebenaran, dsb bagi fail baharu agar sepadan dengan
yang lama. Hasilnya ialah jika anda mengedit fail sensitif keselamatan seperti
/ etc / bayangan maka ia akan dibiarkan boleh dibaca dunia selepas suntingan.
Ia memadai untuk mengemas kini libguestfs kepada mana-mana versi ≥ 1.16.
CVE-2013 2124-
https://bugzilla.redhat.com/968306
Pepijat keselamatan ini adalah kecacatan dalam pemeriksaan di mana tetamu yang tidak dipercayai menggunakan pepijat khas
fail yang dibuat dalam OS tetamu boleh menyebabkan double-free dalam perpustakaan C (penafian
perkhidmatan).
Adalah memadai untuk mengemas kini libguestfs kepada versi yang tidak terdedah: libguestfs ≥
1.20.8, ≥ 1.22.2 atau ≥ 1.23.2.
CVE-2013 4419-
https://bugzilla.redhat.com/1016960
Apabila menggunakan ikan tetamu(1) --jauh atau guestfish --dengar pilihan, guestfish akan buat
soket di lokasi yang diketahui (/tmp/.guestfish-$UID/socket-$PID).
Lokasi mestilah yang diketahui agar kedua-dua hujung berkomunikasi. Bagaimanapun tidak
semakan telah dilakukan bahawa direktori yang mengandungi (/tmp/.guestfish-$UID) dimiliki oleh
pengguna. Oleh itu pengguna lain boleh mencipta direktori ini dan berpotensi merampas soket yang dimiliki
oleh pelanggan atau pelayan guestfish pengguna lain.
Adalah memadai untuk mengemas kini libguestfs kepada versi yang tidak terdedah: libguestfs ≥
1.20.12, ≥ 1.22.7 atau ≥ 1.24.
Penafian of perkhidmatan apabila memeriksa cakera imej bersama rasuah btrfs jumlahnya
Ia adalah mungkin untuk ranap libguestfs (dan program yang menggunakan libguestfs sebagai perpustakaan) oleh
mempersembahkan imej cakera yang mengandungi volum btrfs yang rosak.
Ini disebabkan oleh penolakan penunjuk NULL yang menyebabkan penafian perkhidmatan, dan tidak
dianggap boleh dieksploitasi lagi.
Lihat commit d70ceb4cbea165c960710576efac5a5716055486 untuk penyelesaian. Pembetulan ini disertakan dalam
libguestfs stable branches ≥ 1.26.0, ≥ 1.24.6 dan ≥ 1.22.8, dan juga dalam RHEL ≥ 7.0.
Versi terdahulu libguestfs tidak terdedah.
CVE-2014 0191-
Libguestfs sebelum ini menggunakan API libxml2 yang tidak selamat untuk menghuraikan XML libvirt. API ini
lalai untuk membenarkan sambungan rangkaian dibuat apabila dokumen XML tertentu
dibentangkan. Menggunakan dokumen XML yang cacat juga mungkin untuk menghabiskan semua CPU, memori
atau deskriptor fail pada mesin.
Oleh kerana XML libvirt berasal daripada sumber yang dipercayai (daemon libvirt) ia tidak difikirkan
bahawa ini boleh dieksploitasi.
Ini telah ditetapkan dalam libguestfs ≥ 1.27.9 dan pembetulan telah disandarkan kepada versi yang stabil ≥
1.26.2, ≥ 1.24.9, ≥ 1.22.10 dan ≥ 1.20.13.
kejutan shell (bash CVE-2014-6271)
Pepijat bash ini secara tidak langsung menjejaskan libguestfs. Untuk maklumat lanjut lihat:
https://www.redhat.com/archives/libguestfs/2014-September/msg00252.html
CVE-2014 8484-
CVE-2014 8485-
Kedua-dua pepijat dalam binutil ini menjejaskan GNU tali(1) program, dan dengan itu
API "guestfs_strings" dan "guestfs_strings_e" dalam libguestfs. Menjalankan tali pada an
fail yang tidak dipercayai boleh menyebabkan pelaksanaan kod sewenang-wenangnya (terhad kepada fail libguestfs
perkakas).
Dalam libguestfs ≥ 1.29.5 dan ≥ 1.28.3, libguestfs menggunakan "rentetan" -a pilihan untuk mengelakkan BFD
menghuraikan pada fail.
CVE-2015 5745-
https://bugzilla.redhat.com/show_bug.cgi?id=1251157
Ini bukan kelemahan dalam libguestfs, tetapi kerana kami sentiasa memberikan port siri virtio
kepada setiap tetamu (kerana itulah cara komunikasi hos tetamu berlaku), peningkatan daripada
perkakas kepada proses qemu hos adalah mungkin. Ini boleh menjejaskan anda jika:
· program libguestfs anda menjalankan program yang tidak dipercayai daripada tetamu (menggunakan "guestfs_sh"
dll), atau
· satu lagi eksploitasi ditemui dalam (contohnya) kod sistem fail kernel yang membenarkan a
sistem fail yang cacat untuk mengambil alih perkakas.
Jika anda menggunakan sVirt untuk mengehadkan qemu, itu akan menggagalkan beberapa serangan.
Kebenaran of .ssh and .ssh/authorized_keys
https://bugzilla.redhat.com/1260778
Alatannya virt-customize(1), virt-sysprep(1) dan pembina kebajikan(1) mempunyai --ssh-suntik
pilihan untuk menyuntik kunci SSH ke dalam imej cakera mesin maya. Mereka mungkin mencipta a
~pengguna/.ssh direktori dan ~user/.ssh/authorized_keys failkan tetamu untuk melakukan ini.
Dalam libguestfs < 1.31.5 dan libguestfs < 1.30.2, direktori dan fail baharu akan mendapat mod
0755 dan mod 0644 masing-masing. Walau bagaimanapun kebenaran ini (terutama untuk ~pengguna/.ssh)
adalah lebih luas daripada kebenaran yang digunakan OpenSSH. Dalam libguestfs semasa, direktori
dan fail dibuat dengan mod 0700 dan mod 0600.
Gunakan guestfs-security dalam talian menggunakan perkhidmatan onworks.net