19% gambar Docker teratas tidak memiliki kata sandi root

Sabtu lalu, 18 Mei, Jerry Gamblin dari Kenna Security diperiksa 1000 image terpopuler dari Docker Hub berdasarkan kata sandi root yang mereka gunakan. Dalam 19% kasus, itu kosong.

19% gambar Docker teratas tidak memiliki kata sandi root

Latar belakang dengan Alpen

Alasan dilakukannya penelitian kecil ini adalah Laporan Kerentanan Talos yang muncul awal bulan ini (TALOS-2019-0782), yang penulisnya - berkat penemuan Peter Adkins dari Cisco Umbrella - melaporkan bahwa image Docker dengan distribusi container Alpine yang populer tidak memiliki kata sandi root:

β€œVersi resmi image Alpine Linux Docker (sejak v3.3) berisi kata sandi NULL untuk pengguna root. Kerentanan ini diakibatkan oleh regresi yang diperkenalkan pada bulan Desember 2015. Intinya adalah bahwa sistem yang diterapkan dengan versi Alpine Linux yang bermasalah dalam sebuah container dan menggunakan Linux PAM atau mekanisme lain yang menggunakan file bayangan sistem sebagai database autentikasi dapat menerima kata sandi NULL untuk pengguna root.”

Versi image Docker dengan Alpine yang diuji untuk masalah ini adalah versi 3.3–3.9, serta rilis edge terbaru.

Penulis membuat rekomendasi berikut untuk pengguna yang terkena dampak:

β€œAkun root harus dinonaktifkan secara eksplisit pada image Docker yang dibuat dari versi Alpine yang bermasalah. Kemungkinan eksploitasi kerentanan bergantung pada lingkungan, karena keberhasilannya memerlukan layanan atau aplikasi yang diteruskan secara eksternal menggunakan Linux PAM atau mekanisme serupa lainnya."

Masalahnya adalah dihilangkan di Alpine versi 3.6.5, 3.7.3, 3.8.4, 3.9.2 dan edge (snapshot 20190228), dan pemilik gambar yang terpengaruh diminta untuk mengomentari baris dengan root di /etc/shadow atau pastikan paketnya hilang linux-pam.

Dilanjutkan dengan Docker Hub

Jerry Gamblin memutuskan untuk penasaran tentang β€œseberapa umum praktik penggunaan kata sandi nol dalam container.” Untuk tujuan ini dia menulis sebuah tulisan kecil Skrip pesta, intinya sangat sederhana:

  • melalui permintaan curl ke API di Docker Hub, daftar gambar Docker yang dihosting di sana diminta;
  • melalui jq itu diurutkan berdasarkan bidang popularity, dan dari hasil yang diperoleh, tersisa seribu pertama;
  • untuk masing-masing dari mereka itu terpenuhi docker pull;
  • untuk setiap gambar yang diterima dari Docker Hub dijalankan docker run dengan membaca baris pertama dari file /etc/shadow;
  • jika nilai string sama dengan root:::0:::::, nama gambar disimpan dalam file terpisah.

Apa yang telah terjadi? DI DALAM file ini Ada 194 baris dengan nama image Docker populer dengan sistem Linux, di mana pengguna root tidak memiliki kata sandi yang ditetapkan:

β€œDi antara nama-nama paling terkenal dalam daftar ini adalah govuk/pemerintahpaas, hashicorp, microsoft, monsanto dan mesosphere. Dan kylemanna/openvpn adalah container paling populer dalam daftar, total statistiknya lebih dari 10 juta penarikan.”

Namun perlu diingat bahwa fenomena ini tidak berarti kerentanan langsung terhadap keamanan sistem yang menggunakannya: semuanya bergantung pada bagaimana tepatnya sistem tersebut digunakan. (lihat komentar dari kasus Alpine di atas). Namun, kita telah melihat β€œmoral dari cerita ini” berkali-kali: kesederhanaan yang tampak sering kali memiliki sisi buruk, yang harus selalu diingat dan konsekuensinya harus diperhitungkan dalam skenario penerapan teknologi Anda.

PS

Baca juga di blog kami:

Sumber: www.habr.com

Tambah komentar