Il mio Mac è vulnerabile, come mostra questo test:
x='() { :;}; echo VULNERABLE' bash -c :
( fonte )
Sto usando la versione di bash fornita con esso. Uso anche Homebrew. Qual è il modo migliore per applicare la patch a Bash?
Per prima cosa, non è necessario farlo a meno che tu non stia offrendo servizi Web a Internet pubblica dal tuo Mac. Se non lo sei, attendi fino a quando non è disponibile un aggiornamento di sicurezza ufficiale di Apple.
Tuttavia, se offri servizi web, potresti voler aggiornare.
Apple ha rilasciato un aggiornamento di sicurezza Bash ufficiale qui
Per confermare che stai utilizzando una bash non aggiornata:
$ 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.
La bash più recente è 4.3.25
Se non hai installato Xcode, avrai bisogno degli strumenti da riga di comando Xcode, che possono essere installati da
$ xcode-select --install
O dal portale degli sviluppatori https://developer.apple.com/downloads/index.action?=command%20line%20tools
download command_line_tools_for_osx_10.9_september_2014.dmg
Per installare Brew ( link ):
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Quindi fai:
%codice%
Segui le istruzioni se ci sono problemi. Molti problemi comuni sono indirizzati a
$ brew doctor
Quindi aggiorna brew sull'ultimo elenco di pacchetti:
http://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/#troubleshoot-homebrew
Per ottenere l'ultima versione 4.3.25:
$ brew update
Questo installa bash in
$ brew install bash
Il vecchio /usr/local/Cellar/bash/4.3.25/bin/bash
e bash
esiste ancora a sh
, quindi dopo l'installazione i nuovi eseguibili verranno rinominati in un nuovo file.
/bin
Se sei molto paranoico, puoi rimuovere le autorizzazioni di esecuzione su
$ sudo mv /bin/bash /bin/bash_old
$ sudo mv /bin/sh /bin/sh_old
bash_old
Quindi creare un collegamento simbolico alla nuova bash 4.3.25 che brew ha installato.
$ sudo chmod a-x /bin/bash_old /bin/sh_old
Riavvia ed è completo.
Un avvertimento: questo può violare alcuni script di shell esistenti che potrebbero basarsi su bash 3.2 o le differenze che il Mac
$ 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
ha su linux sh
. C'è una risposta molto più sofisticata per sostituire bash e sh da fonti a
link
Nella maggior parte dei casi è meglio attendere gli aggiornamenti ufficiali.
- Christopher Allen
Verifica la versione di bash in Brew prima di eseguire il passaggio seguente:
$ 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
La versione bash è stata aggiornata alla 4.3.27 finora. se si collega ancora 4.3.25 a / bin / bash, Mac non dovrebbe avviarsi. se lo si fa, è possibile avviare la modalità di ripristino e copiare / bin / bash_old in / bin / bash e copiare / bin / sh_old in / bin / sh.
La mia versione di bash in brew è la 4.3.27, quindi funzionerà per me:
$ sudo ln -s /usr/local/Cellar/bash/4.3.27/bin/bash / bin / bash
$ sudo ln -s /usr/local/Cellar/bash/4.3.27/bin/bash / bin / sh
Non buono, ancora vulnerabile!
bash-4.3 $ brew upgrade bash Errore: bash-4.3.25 già installato
bash-4.3 $ /usr/local/Cellar/bash/4.3.25/bin/bash bash-4.3 $ env x = '() {:;}; echo vulnerabile 'bash -c "echo questo è un test"
vulnerabili
questo è un test
Leggi altre domande sui tag macosx shellshock