idNSA.id - Periset dari perusahaan keamanan siber Italia Shielder menemukan kerentanan eksekusi kode jarak jauh di Visual Studio Code Remote Development Extension.
Visual Studio Code Remote Development memungkinkan pengguna untuk mengadopsi container, remote machine, atau Windows Subsystem for Linux (WSL) sebagai lingkungan pengembangan berfitur lengkap.
Pengguna dapat:
1. Kembangkan pada sistem operasi yang sama yang Anda gunakan atau gunakan perangkat keras yang lebih besar atau lebih khusus.
2. Pisahkan lingkungan pengembangan Anda agar tidak memengaruhi konfigurasi local machine.
3. Permudah kontributor baru untuk memulai dan pertahankan semua orang di lingkungan yang konsisten.
4. Gunakan alat atau runtime yang tidak tersedia di OS lokal Anda atau kelola beberapa versinya.
5. Kembangkan aplikasi Linux Anda menggunakan Subsistem Windows untuk Linux.
6. Akses lingkungan pengembangan yang ada dari beberapa mesin atau lokasi.
7. Debug aplikasi yang berjalan di tempat lain seperti situs pelanggan atau di cloud.
Pakar keamanan dari perusahaan keamanan siber Shielder menemukan bahwa Visual Studio Code Remote Development Extension, versi 1.50, gagal membersihkan bidang host yang diteruskan sebagai argumen dari command ssh. Aktor ancaman dapat mengeksploitasi masalah ini, dilacak sebagai CVE-2020-17148, untuk menyuntikkan opsi ProxyCommand yang dapat mengakibatkan eksekusi perintah arbitrer.
Penasihat keamanan yang diterbitkan oleh Microsoft menyatakan bahwa penyerang harus meyakinkan pengguna dengan Ekstensi Pengembangan Jarak Jauh Kode Visual Studio yang diinstal untuk mengklik tautan yang dibuat khusus.
“Seorang penyerang harus meyakinkan pengguna dengan Ekstensi Pengembangan Jarak Jauh Visual Studio Code yang diinstal untuk mengklik tautan yang dibuat khusus.” membaca nasihat yang diterbitkan oleh Microsoft.
Menurut pakar keamanan Abdel Adim `smaury` Oisfi, injeksi argumen berada di ekstensi "Remote - SSH", yang digunakan dan diinstal oleh ekstensi "Remote Development".
Peneliti menunjukkan bahwa ekstensi menggunakan biner SSH dari host untuk mengatur koneksi dengan remote host.
“Salah satu cara untuk memicu koneksi SSH adalah dengan menggunakan vscode:// skema URI. Secara khusus, formatnya adalah sebagai berikut: vscode://vscode-remote/ssh remote+$REMOTE_HOST+$PATH_OF_PROJECT_ON_THE_REMOTE_HOST
Setelah pengguna menelusuri URI seperti yang sebelumnya, VSCode dibuka dan ekstensi mencoba terhubung ke $REMOTE_HOST.” membaca nasihat yang diterbitkan oleh Shielder.
“Saat menghubungkan, perintah berikut dijalankan: ssh -T -D $RANDOM_PORT "$REMOTE_HOST" bash
Karena tidak ada sanitasi yang dilakukan pada $REMOTE_HOST
input yang disediakan pengguna, dimungkinkan untuk menyuntikkan argumen sewenang-wenang ke biner SSH.
SSH memiliki opsi yang disebut ProxyCommand, yang menentukan perintah yang dieksekusi sebelum melakukan koneksi SSH yang sebenarnya.
Pakar juga menerbitkan Bukti konsep untuk kerentanan ini:
1. Instal Kode Visual Studio
2. Instal ekstensi "Remote Development" (https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)
3. Buka browser
4. Kunjungi URL berikut: vscode://vscode-remote/ssh-remote+-oProxyCommand=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -c msg %username% command_injection" "a@127.0.0.1+/a
5. Konfirmasi untuk membuka VSCode
6. Pilih OS acak (Linux / Windows / MacOS)
7. Perhatikan pop-up yang dijalankan oleh Powershell dengan pesan “command_injection”
Serangan ini juga berfungsi di Linux dan MacOS dengan mengedit ProxyCommand. Microsoft mengatasi kekurangan tersebut dengan merilis Visual Studio Code Remote Development Extension versi 1.51 atau lebih tinggi.