Kerentanan di Docker yang memungkinkan Anda keluar dari container

Dalam Toolkit untuk Mengelola Kontainer Docker Linux Terisolasi diidentifikasi kerentanan (CVE-2018-15664), yang, dalam keadaan tertentu, memungkinkan Anda mengakses lingkungan host dari sebuah container jika Anda memiliki kemampuan untuk meluncurkan image Anda di sistem atau dengan akses ke container yang sedang berjalan. Masalahnya muncul di semua versi Docker dan tetap belum diperbaiki (diusulkan, namun belum diterima, tambalan, yang mengimplementasikan penangguhan kontainer saat melakukan operasi dengan FS).

Kerentanan ini memungkinkan file diekstraksi dari wadah ke bagian sewenang-wenang dari sistem file sistem host saat menjalankan perintah β€œburuh pelabuhan cp”. Ekstraksi file dilakukan dengan hak root, yang memungkinkan untuk membaca atau menulis file apa pun di lingkungan host, yang cukup untuk mendapatkan kendali atas sistem host (misalnya, Anda dapat menimpa /etc/shadow).

Serangan hanya dapat dilakukan ketika administrator menjalankan perintah β€œdocker cp” untuk menyalin file ke atau dari container. Oleh karena itu, penyerang perlu meyakinkan administrator Docker tentang perlunya melakukan operasi ini dan memprediksi jalur yang digunakan saat menyalin. Di sisi lain, serangan dapat dilakukan, misalnya, ketika layanan cloud menyediakan alat untuk menyalin file konfigurasi ke dalam container, yang dibuat menggunakan perintah β€œdocker cp”.

Masalah tersebut disebabkan oleh kesalahan dalam penerapan fungsi tersebut IkutiSymlinkInScope, yang menghitung jalur absolut dalam sistem file utama berdasarkan jalur relatif, dengan mempertimbangkan penempatan wadah. Saat menjalankan perintah "buruh pelabuhan cp", jangka pendek kondisi balapan, yang jalurnya telah diverifikasi, namun pengoperasiannya belum dilakukan. Karena penyalinan dilakukan dalam konteks sistem file utama sistem host, dalam jangka waktu tertentu, Anda dapat mengganti tautan dengan jalur lain dan memulai penyalinan data ke lokasi sembarang di sistem file di luar wadah.

Karena jangka waktu terjadinya kondisi balapan sangat terbatas dalam persiapan mengeksploitasi prototipe Saat melakukan operasi penyalinan dari sebuah wadah, serangan yang berhasil dapat dicapai dalam waktu kurang dari 1% kasus ketika secara siklis mengganti tautan simbolik di jalur yang digunakan dalam operasi penyalinan (serangan yang berhasil dilakukan setelah sekitar 10 detik upaya untuk terus menyalin file dalam satu lingkaran dengan perintah β€œburuh pelabuhan cp”).

Dengan melakukan operasi penyalinan ke dalam kontainer, Anda dapat mencapai serangan penimpaan file berulang pada sistem host hanya dalam beberapa iterasi. Kemungkinan serangan disebabkan oleh fakta bahwa ketika menyalin ke dalam wadah, konsep "chrootarchive" digunakan, yang menurutnya proses archive.go mengekstrak arsip bukan ke chroot dari root wadah, tetapi ke dalam chroot dari wadah. direktori induk dari jalur target, dikendalikan oleh penyerang, dan tidak menghentikan eksekusi container (chroot digunakan sebagai tanda untuk mengeksploitasi kondisi balapan).

Sumber: opennet.ru

Tambah komentar