Daftar Isi
Pengembang dan peneliti keamanan melalui tulisan di blog pribadinya, goldstein.lol, melontarkan kritik tajam terhadap model keamanan yang diterapkan pada JavaScript runtime Deno. Ia menilai sistem izin (permissions system) yang diunggulkan Deno pada dasarnya tidak aman dan memberikan rasa aman palsu kepada pengguna.
Deno dikenal sebagai sistem komputasi runtime untuk JavaScript dan TypeScript yang menggunakan mesin V8. Salah satu fitur utamanya adalah prinsip keamanan “Secure by default”, yang mewajibkan kode untuk mendapatkan izin eksplisit sebelum dapat mengakses sistem berkas, jaringan, atau menjalankan perintah sistem.
Masalah Interaksi Prompt pada Terminal
Menurut analisis goldstein.lol, masalah pertama terletak pada mekanisme konfirmasi izin yang ditampilkan secara interaktif melalui terminal. Deno menampilkan pesan permintaan izin melalui standar luaran (stdout) dan menanti tanggapan pengguna dari standar masukan (stdin).
Mekanisme tersebut dianggap berisiko tinggi karena kode jahat yang berjalan di Deno dapat mencetak kode kontrol terminal (escape code) secara bebas ke stdout. Hal ini membuka peluang bagi skrip berbahaya untuk memanipulasi tampilan terminal, seperti menyembunyikan teks konfirmasi dengan mengubah warna atau memanipulasi masukan stdin agar izin diberikan secara otomatis tanpa disadari pengguna.
Kondisi tersebut disamakan dengan menampilkan kolom kata sandi di dalam halaman web yang sudah terinfeksi kode berbahaya. Pengguna tidak dapat meyakini bahwa saluran komunikasi tersebut berada dalam kondisi aman.
Vulnerabilitas Fitur Eksekusi Perintah –allow-run
Masalah mendasar lainnya terdapat pada penggunaan opsi --allow-run untuk membatasi eksekusi program luar. Sistem pengenalan nama program dianggap tidak cukup kuat karena hanya mengandalkan pencarian direktori melalui variabel lingkungan PATH.
Meskipun penataan PATH diperketat, skrip berbahaya masih dapat memanfaatkan pemuat dinamis (dynamic loader) pada sistem operasi. Dengan menyisipkan variabel lingkungan seperti LD_PRELOAD, skrip dapat memuat pustaka berbahaya saat program yang diizinkan dijalankan, sehingga berhasil keluar dari batasan (sandbox) Deno.
Pengembang Deno telah memperbarui sistem dengan melarang pengaturan variabel lingkungan yang berawalan LD_. Namun, goldstein.lol menilai langkah tersebut hanya menutup celah spesifik tanpa menyelesaikan akar masalah. Aplikasi seperti penyunting teks Vim masih bisa dimanipulasi melalui variabel konfigurasi seperti VIMINIT untuk menjalankan perintah berbahaya di luar kendali runtime.
Keterbatasan Sandbox dan Solusi Alternatif
Dalam diskusi di platform GitHub, salah satu pengembang Deno sempat menyatakan bahwa fitur izin ini terutama berfungsi untuk melindungi pengguna dari kode jahat yang tidak cukup cerdas. Namun, goldstein.lol berpendapat bahwa pendekatan tersebut justru berbahaya karena dapat membujuk pengguna menjalankan skrip yang tidak terpercaya tanpa perlindungan yang memadai.
Selain celah eksekusi perintah, Deno juga belum membatasi konsumsi sumber daya seperti penggunaan CPU dan memori, serta tidak mencegah navigasi tautan simbolik (symlink) yang dapat menembus direktori luar. Untuk menjalankan skrip berisiko tinggi secara aman, ia menyarankan pengguna agar mengandalkan alat isolasi tingkat sistem operasi seperti Bubblewrap (bwrap) ketimbang hanya mengandalkan fitur bawaan Deno.
Meski menyampaikan kritik teknis yang mendalam, goldstein.lol mengingatkan publik untuk tidak melakukan pelecehan atau perundungan terhadap para pengembang Deno, karena perbedaan pandangan teknis merupakan hal yang wajar dalam dunia pengembangan perangkat lunak.
Sumber: Hacker News: Front Page





