Alibaba Cloud telah memperbaiki kerentanan CVE-2020-8555 di kube-controller-manager untuk Container Service for Kubernetes (ACK). Kerentanan CVE-2020-8555 adalah kerentanan Server Side Request Forgery (SSRF) pada kube-controller-manager. Pengguna yang berwenang dapat memalsukan permintaan aplikasi sisi server untuk mendapatkan informasi arbitrer dari titik akhir yang tidak dilindungi di jaringan host node master. Topik ini menjelaskan dampak, solusi, dan langkah pencegahan untuk kerentanan ini.
Skor Common Vulnerability Scoring System (CVSS) untuk kerentanan ini adalah 3.0. Untuk informasi lebih lanjut, lihat CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N. Tingkat risiko adalah sedang.
Ruang lingkup dampak
- Port lokal kube-apiserver yang mengizinkan akses tidak sah terbuka.
- Layanan yang tidak dilindungi dibuka ke jaringan host node master.
- Pengguna jahat memiliki izin untuk membuat pod atau menulis objek StorageClass dalam kluster Kubernetes.
- kube-controller-manager v1.16.0~v1.16.8
- kube-controller-manager<v1.15.11
Jenis volume yang terpengaruh meliputi GlusterFS, Quobyte, StorageFS, dan ScaleIO.
Perbaikan
Pengguna yang berwenang dapat mengeksploitasi kerentanan ini untuk membuat pod yang dipasang dengan volume rentan (GlusterFS, Quobyte, StorageFS, atau ScaleIO) atau menulis objek StorageClass dalam kluster Kubernetes. Pengguna tersebut dapat mengirim permintaan GET atau POST ke Layanan yang dibuka ke jaringan host node master. Dengan cara ini, pengguna dapat menyelidiki dan menyerang jaringan host tanpa otorisasi. Sebagai contoh, penyerang dapat menggunakan port 8080 kube-apiserver yang tidak dilindungi untuk mendapatkan Kubernetes Secrets.
Secara default, port 8080 yang tidak dilindungi ditutup untuk kluster ACK. Semua pengguna Resource Access Management (RAM) harus diberikan izin kontrol akses berbasis peran (RBAC) untuk melakukan operasi sebelumnya. Secara default, semua pengguna RAM kecuali pengguna yang membuat kluster tidak berwenang untuk membuat pod atau menulis objek StorageClass. Untuk mencegah kebocoran data dari Layanan yang tidak dilindungi di jaringan host node master, implementasikan langkah-langkah yang dijelaskan di pr.k8s.io/89794. Versi baru kube-controller-manager juga disediakan untuk memperbaiki kerentanan ini.
Pencegahan dan mitigasi
- Jangan membuka port 8080 yang tidak dilindungi pada kube-apiserver. Secara default, port ini ditutup di kluster ACK.
- Periksa apakah otentikasi permintaan diaktifkan untuk Layanan yang dibuka ke jaringan host node master. Temukan dan nonaktifkan Layanan yang tidak dilindungi yang dapat menyebabkan kebocoran data.
- Jangan memberi otorisasi kepada pengguna yang tidak tepercaya untuk membuat pod atau menulis objek StorageClass.