Kelemahan Keselamatan Helm Membolehkan Pelaksanaan Kod Melalui Fail Chart Berniat Jahat dan Symlink

Pasukan Komuniti BigGo
Kelemahan Keselamatan Helm Membolehkan Pelaksanaan Kod Melalui Fail Chart Berniat Jahat dan Symlink

Kelemahan keselamatan yang baru ditemui dalam Helm , pengurus pakej Kubernetes yang popular, telah mencetuskan perbincangan sengit dalam komuniti pembangun mengenai kepraktisan serangan ini dan implikasi keselamatan yang lebih luas. Kelemahan ini, yang telah diperbaiki dalam Helm v3.18.4 , membolehkan penyerang melaksanakan kod sewenang-wenangnya dengan menggabungkan fail Chart.yaml yang direka khas dengan fail Chart.lock yang disambungkan secara symlink.

Langkah-langkah Mitigasi:

  • Kemas kini kepada Helm v3.18.4 atau versi yang lebih terbaru
  • Sahkan fail Chart.lock bukan merupakan symlink sebelum mengemaskini dependensi
  • Semak carta daripada sumber yang tidak dipercayai untuk symlink yang mencurigakan

Cara Serangan Berfungsi

Kelemahan ini mengeksploitasi proses kemas kini kebergantungan Helm dengan cara yang bijak tetapi kompleks. Apabila penyerang mencipta fail Chart.yaml berniat jahat yang mengandungi kod boleh laksana dan menggantikan fail Chart.lock dengan symlink yang menunjuk kepada fail sistem sensitif seperti .bashrc atau skrip permulaan shell, menjalankan helm dependency update akan menulis kandungan berniat jahat ke fail yang disasarkan. Kod tersebut kemudiannya akan dilaksanakan apabila mangsa membuka shell atau menjalankan skrip yang disasarkan pada kali berikutnya.

Komuniti telah memperdebatkan implikasi praktikal vektor serangan ini. Ramai pembangun mempersoalkan senario dunia sebenar di mana kelemahan ini boleh dieksploitasi, kerana ia memerlukan penyerang mempunyai tahap akses sistem fail tertentu untuk mencipta symlink pada mulanya.

Keperluan Kelemahan:

  • Fail Chart.yaml berniat jahat dengan kandungan boleh laksana
  • Fail Chart.lock digantikan dengan symlink kepada fail sistem (contohnya, .bashrc)
  • Mangsa menjalankan kemas kini kebergantungan pada carta berniat jahat
  • Fail yang disasarkan mesti dilaksanakan kemudian untuk kod dapat berjalan

Mempersoalkan Senario Serangan

Sebahagian besar perbincangan tertumpu pada kepraktisan kelemahan ini. Pembangun keliru mengenai senario sah di mana penyerang boleh mencipta symlink tetapi tidak boleh mengubah suai fail sistem secara langsung. Serangan ini memerlukan mangsa menjalankan kemas kini kebergantungan pada chart yang mengandungi kedua-dua kandungan berniat jahat dan symlink yang sedia ada, menyebabkan sesetengah pihak tertanya-tanya sama ada ini mewakili kebimbangan keselamatan yang tulen atau kes tepi dengan kesan dunia sebenar yang terhad.

Kekeliruan ini sebahagiannya berpunca daripada model pengedaran Helm . Chart biasanya dikongsi sebagai pakej, dan memasukkan symlink yang menunjuk kepada fail sistem akan menjadikan chart tidak boleh digunakan pada mesin lain. Ini menimbulkan persoalan tentang bagaimana chart berniat jahat sedemikian sebenarnya sampai kepada mangsa dalam praktik.

Masalah Symlink yang Lebih Luas

Kelemahan ini menyerlahkan isu yang telah lama wujud dengan pengendalian symlink oleh Helm . Perbincangan komuniti mendedahkan bahawa Helm telah bergelut dengan keselamatan symlink selama bertahun-tahun, sebelum ini menangani kebimbangan serupa pada tahun 2019. Pembaikan semasa secara khusus menyasarkan fail Chart.lock, tetapi pembangun mempersoalkan sama ada pendekatan yang lebih komprehensif - seperti mengharamkan semua symlink luaran dalam chart yang diedarkan - mungkin diperlukan.

Sebuah chart tidak boleh mengandungi sebarang symlink di luar akarnya mencadangkan seorang ahli komuniti, mencadangkan pendekatan yang lebih ketat yang akan menghalang isu serupa merentas semua komponen chart.

Arahan Helm yang Terjejas:

  • helm dependency update - Vektor serangan utama
  • helm dependency build - Boleh menulis fail kunci apabila tiada yang wujud
  • Helm SDK downloader Manager - Menjejaskan penggunaan programatik

Respons Komuniti dan Pengajaran

Kelemahan ini juga telah mencetuskan perbincangan yang lebih luas mengenai format fail konfigurasi dan amalan keselamatan. Walaupun sesetengah pembangun mengkritik YAML sebagai bermasalah secara semula jadi, yang lain menunjukkan bahawa isu khusus ini berpunca daripada logik Helm dan bukannya YAML itu sendiri. Perdebatan ini mencerminkan ketegangan berterusan dalam komuniti pembangunan mengenai mengimbangi kebolehgunaan dengan keselamatan.

Pembaikan yang dilaksanakan dalam Helm v3.18.4 menghalang penulisan kepada fail Chart.lock yang disambungkan secara symlink, walaupun sesetengah pembangun berhujah untuk perlindungan yang lebih komprehensif. Buat masa ini, pengguna boleh melindungi diri mereka dengan memastikan fail Chart.lock bukan symlink sebelum mengemas kini kebergantungan, walaupun risiko praktikal untuk kebanyakan pengguna nampaknya terhad memandangkan syarat khusus yang diperlukan untuk eksploitasi.

Rujukan: Chart Dependency Updating With Malicious Chart.yaml Content And Symlink