Bisakah bash diganti seluruhnya di OS X?

3

Karena CVE-2014-6271 dan CVE-2014-7169 pada OS XI bertanya-tanya: dapatkah bash digantikan seluruhnya oleh shell lain yang tidak terpengaruh (mis. Dash atau lainnya)?

nrfb
sumber
Silakan tanyakan bagian eksploitasi DHCP dari pertanyaan ini sebagai pertanyaan baru . Terima kasih.
Ian C.

Jawaban:

6

Pertama, Anda tidak perlu melakukan ini kecuali Anda menawarkan layanan web ke internet publik dari Mac Anda. Jika tidak, tunggu hingga ada pembaruan keamanan resmi dari Apple.

Namun, jika Anda menawarkan layanan web, Anda mungkin ingin memperbarui.

Patch Resmi

Apple telah merilis Pembaruan Keamanan Bash Resmi Di Sini

Memeriksa apakah Anda rentan

Pertama konfirmasikan bahwa Anda menggunakan bash kedaluwarsa:

$ which bash
/bin/bash
$ /bin/bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.

Bash terbaru adalah 4.3.25

Jika Anda belum menginstal Xcode, Anda memerlukan alat-alat baris perintah Xcode, yang dapat diinstal oleh

$ xcode-select --install

Atau dari portal pengembang .

Untuk menginstal Brew ( http://brew.sh ):

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Lalu lakukan:

$ brew doctor

Ikuti instruksi apa pun jika ada masalah. Banyak masalah umum dibahas di sini .

Kemudian perbarui minuman ke daftar paket terbaru:

$ brew update

Untuk mendapatkan bash 4.3.25 terbaru:

$ brew install bash

Ini menginstal bash ke /usr/local/Cellar/bash/4.3.25/bin/bash

Yang lama bashdan shmasih ada di /bin, jadi setelah menginstal Anda akan mengubah nama executable lama ke file baru.

$ sudo mv /bin/bash /bin/bash_old
$ sudo mv /bin/sh /bin/sh_old

Jika Anda sangat paranoid, Anda dapat menghapus izin eksekusi di bash_old

$ sudo chmod a-x /bin/bash_old /bin/sh_old

Kemudian buat tautan simbolis ke bash 4.3.25 baru yang dibuat bir.

$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/bash
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/sh

Mulai ulang dan selesai.

Peringatan - ini dapat memecah beberapa skrip shell yang ada yang mungkin bergantung pada bash 3.2 atau perbedaan yang dimiliki Mac shatas linux sh. Ada jawaban yang jauh lebih canggih untuk mengganti bash dan sh dari sumber di pos ini.

Dalam kebanyakan kasus yang terbaik adalah menunggu pembaruan resmi.

Christopher Allen
sumber
2
"Dalam kebanyakan kasus yang terbaik adalah menunggu pembaruan resmi." Kecuali seseorang menjalankan server, semua ini tidak diperlukan. Banyak orang akan merusak instalasi OS X mereka dalam beberapa hari mendatang karena mereka panik untuk menghilangkan ancaman yang hampir tidak mereka pahami.
JakeGould
1
@JakeGould - Saya setuju.
Christopher Allen
Saya akan menyalin file daripada menautkan - jika untuk beberapa alasan, Anda menghapus instalasi minuman, sistem Anda memiliki masalah ....
Michael_Scharf
1
Saya pikir apple.stackexchange.com/a/146851/83347 adalah jawaban yang lebih baik, karena ia menggunakan sumber-sumber bentuk apel ....
Michael_Scharf
3

Seperti @webmarc katakan, tidak. Anda dapat mengganti /bin/bashdengan beberapa shell lain tetapi Anda pasti akan merusak beberapa program karena bash memiliki beberapa perbedaan dalam sintaksnya yang membuatnya tidak kompatibel. Saya tidak dapat menemukan shell alternatif yang kompatibel dengan bash. Namun saya menghubungkan tautan langsung ke /bin/shdan tidak menemukan masalah sejauh ini.

Mengenai DHCP di sini ada bukti serangan konsep. Artikel ini tentang dhcpcd(klien Linux). Saya tidak yakin tentang Mac OS X. Dalam diskusi di Hacker News mereka mengatakan klien OS X tidak menggunakan bash sama sekali.

Vektor lain bisa jadi sshd. Tetapi serangan itu membutuhkan otentikasi. Jadi, kecuali Anda menjalankan beberapa layanan ssh seperti gitserver Anda harus aman.

Rnhmjoj
sumber
"Dalam diskusi tentang Hacker News, mereka mengatakan klien OS X tidak menggunakan bash sama sekali." Di mana diskusi ini? Anda harus memberikan tautan.
JakeGould
1
@JakeGould Tautan sudah ada di jawabannya. Baca komentar.
Rnhmjoj
1

dashhanya mengandung sebagian kecil dari perintah yang ditemukan di bashdan bahkan sh(yang itu sendiri adalah sub-set hal di bash). Mengganti salah satu dengan dashpasti akan menghasilkan skrip yang tidak dapat dioperasikan pada sistem Anda dan mungkin merusak sistem Anda lebih dari itu melindungi sistem Anda.

Anda dapat mengkompilasi ulang bash untuk mengurangi beberapa (pada saat ini ditulis) potensi bahaya atau menunggu Apple untuk rilis dan perbaikan resmi.

Ian C.
sumber
1

Sayangnya, tidak ada ... berbagai shell memiliki sintaks yang berbeda-beda membuat skrip yang ditulis untuk satu shell mungkin tidak kompatibel dengan shell lain.

Saya belum melihat infeksi berbasis DHCP yang Anda bicarakan, dapatkah Anda memberikan tautan dalam pertanyaan Anda?

webmarc
sumber
0

beberapa situs mengindikasikan seseorang dapat terinfeksi melalui klien DHCP.

Ini tidak berlaku untuk OS X. Pada sistem Linux, skrip shell biasanya dipanggil setelah menerima sewa DHCP dari server. Ini tidak terjadi pada OS X.

Kecuali Anda menjalankan server web pada Mac Anda yang menyajikan skrip CGI, Anda memiliki sedikit alasan untuk khawatir.

Russell Hancox
sumber
0

Ya, jika Anda berarti sebagai / bin / sh, tetapi itu bisa bermasalah, tetapi jika Anda ingin mengganti bash sebagai / bin / bash atau menghapus bash seluruhnya, pada dasarnya tidak, meskipun itu tidak mustahil - karena, skrip adalah file teks, Anda dapat mengedit setiap skrip shell, dan kemudian mengelola sistem sendiri, sendiri, untuk sisa waktu ... Tidak ada pengganti drop-in untuk bash.

Tidak, bahwa Anda mengganti / bin / sh akan mudah, tetapi mungkin ada akhirnya. Jika skrip mengandaikan / bin / sh Anda, sebenarnya adalah bash, dan menggunakan hal-hal unik untuk bash, maka skrip yang dimulai #! / Bin / sh sekarang akan rusak. Saya mengganti nama / bin / sh ke /bin/sh.was.bash dan kemudian membuat tautan ke mksh, dan mem-boot ulang disambut dengan # prompt. Saya reboot lagi dengan flag verbose, dan menemukan beberapa baris ke / etc / rc - export -n, hal bash, ekuivalen shell korn adalah typeset + x, saya memodifikasi skrip rc, dan, dan boot, dan semuanya baik-baik saja. Sistem tempat saya bereksperimen adalah Tiger sehingga ada skrip rc, dan saya tidak dapat mengharapkan pembaruan dari Apple. OSX modern tidak memiliki skrip rc, TAPI aplikasi modern mungkin beralih dari intel linux, di mana / bin / sh adalah bash, ke intel-mac, di mana / bin / sh juga bash,

Jadi, mungkin saya harus mengatakan sangat bermasalah, karena Anda harus menganggapnya sebagai alasan, BUKAN untuk melakukan ini. Dalam pembelaan saya, saya telah mencari-cari daemon peluncuran, dan skrip rc, minggu ini dan minggu sebelumnya, bermain dengan opsi dynamic_pager, mematikan beberapa daemon peluncuran (menjadikannya dapat dikontrol oleh variabel di hostconfig), jadi bagi saya , ini saya hanya percobaan sedikit lebih radikal, daripada yang mungkin saya lakukan hari ini.

JIKA Anda ingin melakukan sesuatu, jika berpikir Anda mungkin lebih rentan daripada yang lain, karena perangkat lunak tambahan, dll, Anda dapat melihat setiap skrip yang Anda khawatirkan, dan mengubah baris pertama (shhbang) untuk melakukan sesuatu selain #! / bin / sh atau # / bin / bash, dan bersiaplah untuk mengedit skrip, karena mereka dapat memiliki fitur spesifik bash. BASH benar-benar shell seperti cangkang korn, lebih dari cangkang seperti bourne seperti abu, atau dash, jadi jika ingin menjaga pengeditan sepele gunakan cangkang korn sebagai penggantinya. Faktanya pada harimau / bin / ksh adalah "NEW Korn Shell", jika ini masih benar, saya akan mengatakan pergi dengan itu, maka Anda perlu menginstal apa-apa, dan tinggalkan / bin sendiri, yang bukan ide yang buruk , cukup ubah skrip menjadi #! / bin / ksh, hapus bashism untuk fitur, umum untuk korn shell,

Ada kemungkinan, 'shhbang' itu bisa diabaikan, karena jika skrip shell dipanggil seperti "/ bin / sh / etc / rc", maka baris pertama hanyalah komentar, dan diabaikan, tetapi dengan pendekatan ini Anda hanya dapat merusak hal-hal yang Anda ubah, saat Anda mengubahnya.

Dan LaBell
sumber