GNU/Linux >> Belajar Linux >  >> Linux

Cara Memperbaiki Bash Shellshock CVE-2014-6271, CVE-2014-7169 di Linux

CVE-2014-6271 adalah perbaikan kritis berdampak tinggi. Jika Anda menjalankan sistem Linux, Anda harus memperbaiki kerentanan ini.

Kerentanan CVE-2014-6271 (dan CVE-2014-7169) ini juga disebut sebagai Shellshock.

Sebuah cacat ditemukan dalam cara Bash mengevaluasi variabel lingkungan tertentu yang dibuat secara khusus. Penyerang dapat menggunakan kelemahan ini untuk mengesampingkan atau melewati batasan lingkungan untuk menjalankan perintah shell. Layanan dan aplikasi tertentu memungkinkan penyerang yang tidak diautentikasi jarak jauh untuk menyediakan variabel lingkungan, yang memungkinkan mereka untuk mengeksploitasi masalah ini.

Menggunakan bash shell, kerentanan ini memungkinkan penyerang untuk mengeksekusi perintah shell acak di lingkungan Anda. Ide di balik ini adalah penyerang dapat melewati batasan variabel lingkungan, yang memungkinkan dia untuk mengeksekusi perintah shell.

Harap perhatikan bahwa beberapa layanan (atau aplikasi) yang berjalan di server Linux mungkin mengizinkan penyerang yang tidak diautentikasi untuk menentukan beberapa variabel lingkungan, yang pada gilirannya akan memungkinkan mereka untuk mengeksploitasi kerentanan ini melalui jaringan tanpa autentikasi apa pun.

Yang harus Anda lakukan untuk memperbaikinya adalah memutakhirkan bash Anda ke versi terbaru. Misalnya, di RedHat atau CentOS, lakukan hal berikut untuk memperbaiki masalah ini:

yum update bash

Apakah Sistem Anda Rentan terhadap CVE-2014-6271?

RedHat telah menyediakan skrip berikut untuk menguji apakah sistem Anda rentan atau tidak.

Jika Anda melihat kata “rentan” di output, maka sistem Anda rentan.

env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

Harap dicatat bahwa Anda mungkin juga melihat beberapa pesan kesalahan bersama dengan kata "rentan" di output. Sebagai contoh, berikut ini adalah output pada sistem RedHat 5 dan RedHat 6 (dan CentOS 5 dan 6) yang rentan.

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test

Versi Bash Sebelum Perbaikan

Sebelum memperbaiki masalah, periksa versi bash Anda saat ini. Di RedHat 5 (dan CentOS 5), saya memiliki versi bash berikut sebelum perbaikan:

# rpm -qa | grep bash
bash-3.2-24.el5

Di RedHat 6 (dan CentOS 6), saya memiliki versi bash berikut sebelum perbaikan:

# rpm -qa | grep bash
bash-4.1.2-3.el6.x86_64

Perbaiki CVE-2014-6271

Sekarang, perbarui bash menggunakan yum (atau utilitas manajemen paket lainnya untuk distribusi Anda yang sesuai)

yum update bash

Pada RedHat 5 (dan CentOS 5), berikut ini adalah versi bash setelah pembaruan, yang memperbaiki kerentanan.

# rpm -qa | grep bash
bash-3.2-33.el5_11.4

Pada RedHat 6 (dan CentOS 6), berikut ini adalah versi bash setelah pembaruan, yang memperbaiki kerentanan.

# rpm -qa | grep bash
bash-4.1.2-15.el6_5.2.x86_64

Uji Kerentanan CVE-2014-6271 setelah perbaikan

Setelah bash ditingkatkan ke versi terbaru, saat Anda menjalankan tes, Anda tidak akan melihat kata "rentan" di output perintah berikut. Harap perhatikan bahwa peringatan dan pesan kesalahan yang ditampilkan di bawah ini Oke.

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test

Bagaimana dengan CVE-2014-7169?

Setelah perbaikan awal dirilis, redhat menemukan bahwa perbaikan CVE-2014-6271 tidak lengkap, dan bash masih mengizinkan beberapa karakter yang dapat dimasukkan ke dalam variabel lingkungan dalam beberapa keadaan khusus.

Ketika Anda melakukan pembaruan yum bash dari langkah sebelumnya, maka secara otomatis akan mendapatkan versi bash terbaru, yang juga mencakup perbaikan untuk CVE-2014-7169. Jadi, Anda benar-benar tidak perlu melakukan sesuatu yang spesifik untuk perbaikan ini.

Namun, Anda masih dapat menguji untuk memastikan sistem Anda tidak rentan terhadap masalah ini dengan menjalankan yang berikut di sistem Anda:

cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo

Pada sistem yang rentan terhadap CVE-2014-7169, Anda akan melihat bahwa file /tmp/echo berikut dibuat, dan itu akan menampilkan konten file.

Jika Anda melihat output berikut, Anda harus memperbarui bash Anda ke versi terbaru menggunakan "yum update bash" (atau gunakan utilitas manajemen paket yang sesuai untuk distro Anda)

# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 16:15:09 PDT 2014

Jika sistem Anda tidak rentan terhadap CVE-2014-7169, Anda akan melihat output berikut, yang tidak akan membuat file /tmp/echo.

# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory

Informasi Tambahan

  • Detail tentang CVE-2014-6271, CVE-2014-7169 dari Situs Web RedHat
  • Laporan Bugzilla RedHat (CentOS, Fedora) untuk CVE-2014-6271
  • Laporan Bugzilla RedHat (CentOS, Fedora) untuk CVE-2014-7169
  • Peringatan Keamanan Oracle untuk CVE-2014-7169 – Untuk Solaris atau Oracle Enterprise Linux
  • Ubuntu CVE-2014-7169
  • Debian CVE-2014-7169

Linux
  1. Cara Menghapus Riwayat Bash di Linux

  2. Bagaimana cara memeriksa apakah Bash memiliki Kerentanan Shellshock?

  3. Bagaimana cara memeriksa syslog di Bash di Linux?

  1. Cara Menghapus Riwayat Baris Perintah BASH di Linux

  2. Cara Menghapus Perintah Tertentu Dari Riwayat Bash Di Linux

  3. Bagaimana cara memperbaiki kesalahan Kegagalan Otentikasi Cron di Linux?

  1. Bagaimana Cara Mempersingkat Bash Prompt di Linux?

  2. cara install anaconda / miniconda di linux secara silent

  3. Bagaimana cara mendapatkan netmask dari bash?