Lewati ke isi

Keamanan/Cyber Security

Shellshock, Celah Bash yang Pernah Mengguncang Server

Shellshock (CVE-2014-6271) membuat Bash menjalankan perintah dari variabel lingkungan. Pahami cara kerjanya, jalur serangannya, dan cara mengecek server.

Terbit 6 menit baca

Jawaban singkat

Shellshock adalah celah di GNU Bash sampai versi 4.3 yang membuat perintah tersembunyi di variabel lingkungan ikut dijalankan. Celah ini diumumkan September 2014, skor CVSS 9.8, dan sudah lama ditambal. Risikonya kini ada pada perangkat dan server lama yang tidak pernah diperbarui.

Daftar isi
  1. Kenapa variabel lingkungan bisa menjalankan perintah?
  2. Jalur serangan yang paling sering dipakai
  3. Satu patch ternyata tidak cukup
  4. Masih perlu dicek di 2026?
  5. Cara memastikan server kamu aman
  6. Ringkasnya

Bayangkan kamu mewarisi server lama dari tim sebelumnya. Di dalamnya ada panel monitoring berbasis CGI, sebuah router kantor yang tidak pernah disentuh, dan perangkat NAS yang firmware-nya tertinggal bertahun-tahun. Semuanya masih jalan, jadi tidak ada yang berani mengutak-atik. Server seperti inilah yang sampai sekarang masih bisa terkena Shellshock, celah Bash yang diumumkan pada September 2014.

Shellshock (CVE-2014-6271) adalah celah di GNU Bash sampai versi 4.3. Bash salah memproses definisi fungsi yang disimpan di variabel lingkungan, sehingga perintah apa pun yang ditulis setelah definisi fungsi itu ikut dijalankan. Karena banyak program meneruskan data dari internet ke variabel lingkungan, penyerang bisa menjalankan perintah di server dari jarak jauh. NVD memberi skor CVSS 3.1 sebesar 9.8 (kritis), dan CISA memasukkannya ke katalog celah yang terbukti dieksploitasi pada 28 Januari 2022.

CVE-2014-6271

Kritis · CVSS 9.8
Produk terdampak
GNU Bash
Versi terdampak
1.14 sampai 4.3 tanpa patch
Versi aman
Paket bash terbaru dari distribusi
Status
Patch tersedia
Diumumkan
24 September 2014
Detail di NVD

Kenapa variabel lingkungan bisa menjalankan perintah?

Bash punya fitur lama untuk mengekspor fungsi ke proses anak. Caranya, fungsi disimpan sebagai variabel lingkungan yang isinya diawali () {. Saat Bash baru dijalankan, ia membaca semua variabel lingkungan dan mengubah yang berbentuk seperti itu kembali menjadi fungsi.

Masalahnya, Bash versi lama tidak berhenti di akhir definisi fungsi. Kalau setelah tanda } ada perintah lain, Bash ikut menjalankannya. Contoh klasik yang dipakai untuk menguji celah ini:

env x='() { :;}; echo rentan' bash -c "echo tes"

Bash yang rentan akan mencetak rentan lalu tes. Bash yang sudah ditambal hanya mencetak tes (kadang disertai peringatan). Perintah ini aman dijalankan karena hanya mencetak teks.

Variabel lingkungan sendiri bukan hal berbahaya. Yang membuat Shellshock serius adalah banyaknya program yang memasukkan data dari luar ke variabel lingkungan, lalu memanggil Bash.

Jalur serangan yang paling sering dipakai

Celah ini tidak bisa dieksploitasi hanya karena Bash terpasang. Harus ada jalur yang membawa data dari penyerang ke variabel lingkungan, lalu ada Bash yang dijalankan. Jalur yang paling banyak dibahas saat itu bisa dilihat di tabel berikut.

JalurBagaimana data masukSiapa yang rentan
Skrip CGI di web serverHeader HTTP seperti User-Agent disalin ke variabel lingkunganApache dengan mod_cgi yang memanggil skrip Bash, atau skrip lain yang memanggil Bash
Klien DHCPOpsi dari server DHCP diteruskan ke skrip hookLinux yang memakai dhclient dengan skrip berbasis Bash
OpenSSH dengan ForceCommandPerintah asli pengguna disimpan di variabel lingkunganAkun SSH terbatas, misalnya khusus git atau SFTP
Perangkat tertanamPanel web memakai skrip shellRouter, NAS, dan perangkat jaringan dengan firmware lama

Jalur CGI adalah yang paling mudah diserang. Cukup kirim permintaan HTTP dengan header berisi () { :;}; diikuti perintah, dan server yang rentan menjalankannya dengan hak akses web server. Dari situ penyerang biasanya mengunduh skrip, memasang bot DDoS, atau mencari celah lain untuk naik ke root.

Satu patch ternyata tidak cukup

Perbaikan pertama untuk CVE-2014-6271 dirilis bersamaan dengan pengumumannya. Dalam waktu singkat, peneliti menemukan bahwa perbaikan itu belum tuntas. NVD mencatat celah sisa itu sebagai CVE-2014-7169, dan CISA juga memasukkannya ke katalog KEV pada tanggal yang sama dengan CVE-2014-6271.

Setelah itu muncul beberapa nomor CVE lain yang masih berkaitan dengan cara Bash mengurai fungsi, yaitu CVE-2014-6277, CVE-2014-6278, CVE-2014-7186, dan CVE-2014-7187. Para pengelola Bash akhirnya mengubah cara fungsi diekspor: variabel fungsi kini memakai nama dengan awalan dan akhiran khusus, sehingga variabel biasa yang dikirim dari luar tidak lagi dianggap sebagai fungsi.

Pelajaran dari rangkaian ini masih relevan sampai sekarang. Ketika sebuah celah kritis diumumkan, patch pertama sering ditulis terburu-buru. Pantau terus pengumuman lanjutan dari distribusi Linux yang kamu pakai, jangan berhenti di pembaruan pertama.

Masih perlu dicek di 2026?

Hampir semua distribusi Linux yang masih didukung sudah lama memakai Bash yang aman. Ubuntu, Debian, AlmaLinux, dan Rocky Linux versi yang beredar hari ini tidak rentan. Jadi untuk VPS baru, Shellshock praktis bukan ancaman.

Risikonya ada di tempat lain:

  • Server lama dengan sistem operasi yang sudah habis masa dukungannya dan tidak pernah diperbarui.
  • Router, NAS, kamera, dan perangkat tertanam yang firmware-nya berhenti dirilis.
  • Image virtual atau container lama yang terus dipakai ulang tanpa dibangun ulang.
  • Aplikasi web kuno yang masih memakai skrip CGI.

Pemindai otomatis di internet masih rutin mengirim permintaan berisi pola Shellshock. Kalau kamu membuka log akses web server, besar kemungkinan kamu akan menemukan header User-Agent yang diawali () {. Itu tanda pemindaian, bukan otomatis berarti server berhasil dibobol. Cara membaca pola seperti ini dibahas di membaca log server untuk deteksi serangan.

Cara memastikan server kamu aman

Langkah pertama adalah mengecek versi Bash dengan bash --version, lalu menjalankan perintah uji di atas. Setelah itu perbarui paket Bash lewat manajer paket distribusi:

# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade bash

# AlmaLinux / Rocky Linux / RHEL
sudo dnf update bash

Kalau sistem operasinya sudah tidak didukung dan tidak ada paket baru, jangan mencoba menambal manual sambil terus memakainya di internet. Pindahkan layanannya ke server dengan sistem operasi yang masih menerima pembaruan keamanan.

Untuk web server, matikan modul CGI bila tidak dipakai. Di Apache, cek apakah mod_cgi atau mod_cgid aktif dan apakah ada direktori cgi-bin yang terbuka. Aplikasi modern umumnya memakai PHP-FPM, reverse proxy ke aplikasi, atau FastCGI, yang tidak memanggil Bash untuk setiap permintaan.

Untuk perangkat jaringan, cek situs resmi produsennya. Bila firmware terbaru tidak tersedia, batasi akses panel admin hanya dari jaringan internal atau VPN, jangan dibuka ke internet.

Terakhir, masukkan celah lama ke daftar prioritas patch yang sama dengan celah baru. Celah yang tercantum di katalog KEV, seperti Shellshock, sebaiknya didahulukan. Cara menyusun prioritasnya ada di artikel katalog KEV CISA dan panduan membaca skor CVSS.

Ringkasnya

Shellshock lahir dari fitur kecil Bash yang dipakai di banyak tempat tanpa disadari, sehingga dampaknya terasa ke web server, klien DHCP, SSH, sampai router. Celah ini sudah ditambal sejak 2014, tetapi server dan perangkat yang tidak pernah diperbarui tetap bisa menjadi pintu masuk. Cek versi Bash, matikan CGI yang tidak perlu, dan pensiunkan sistem yang sudah tidak menerima pembaruan.

Sumber & referensi

Baca juga