Todos los Linux, al igual que en otros sistemas derivados de Unix (OS X también, como comentamos en un post previo), están afectados por el exploit "Shell Shock". En todos los sistemas conviene actualizarlo a la versión siguiente que ya no sea vulnerable.
Nuestro sistema será vulnerable si al ejecutar lo siguiente en una ventana de terminal:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
nos muestra el mensaje:
vulnerable
this is a test
En ese caso, merece la pena que lo arreglemos.
Para ello tenemos que bajar los fuentes del bash, aplicarle un parche de seguridad, compilarlo, e instalarlo.
Para ello, debemos tener el gcc instalado en la máquina, lanzar un terminal y ejecutar las siguientes órdenes (directamente se puede hacer copy&paste sobre el terminal):
cd
mkdir src
cd src
# descargamos los fuentes del bash
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
# descargamos los parches
for i in $(seq -f "%03g" 0 25); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz
cd bash-4.3
# aplicamos los parches
for i in $(seq -f "%03g" 0 25);do patch -p0 < ../bash43-$i; done
# compilamos e instalamos
./configure && make
sudo make install
# limpiamos
cd ..
cd ..
rm -r src
Una vez actualizado, si volvemos a ejecutar el script:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
nos debería devolver el mensaje:
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test
Y eso significará que nuestro sistema ya no es vulnerable al exploit ;)
viernes, 26 de septiembre de 2014
Arreglar en OS X el exploit del bash "Shell Shock"
Dado que el bash 3.2 (la versión que viene con OSX) es vulnerable al exploit llamado "Shell Shock" (CVE-2014-6271 y CVE-2014-7169), conviene actualizarlo a la versión siguiente (mientras Apple crea una actualización y se nos instala a través del App Store.
Nuestro sistema será vulnerable si al ejecutar lo siguiente en una ventana de terminal:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
nos muestra el mensaje:
vulnerable
this is a test
En ese caso, merece la pena que lo arreglemos.
Para ello tenemos que bajar los fuentes del bash desde la página de Apple, aplicarle un parche de seguridad, compilarlo, y sustituir los ejecutables del bash y sh en /bin
Para ello, debemos tener el XCode instalado en la máquina, lanzar un terminal y ejecutar las siguientes órdenes (directamente se puede hacer copy&paste sobre el terminal):
cd
mkdir bash-fix
cd bash-fix
curl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -
cd bash-92/bash-3.2
curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
cd ..
xcodebuild
sudo cp /bin/bash /bin/bash.old
sudo cp /bin/sh /bin/sh.old
build/Release/bash --version
build/Release/sh --version
sudo cp build/Release/bash /bin
sudo cp build/Release/sh /bin
sudo chmod a-x /bin/bash.old /bin/sh.old
Si ahora volvemos a ejecutar el script:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
nos debería devolver el mensaje:
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test
Y eso significará que nuestro sistema ya no es vulnerable al exploit ;)
Nuestro sistema será vulnerable si al ejecutar lo siguiente en una ventana de terminal:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
nos muestra el mensaje:
vulnerable
this is a test
En ese caso, merece la pena que lo arreglemos.
Para ello tenemos que bajar los fuentes del bash desde la página de Apple, aplicarle un parche de seguridad, compilarlo, y sustituir los ejecutables del bash y sh en /bin
Para ello, debemos tener el XCode instalado en la máquina, lanzar un terminal y ejecutar las siguientes órdenes (directamente se puede hacer copy&paste sobre el terminal):
cd
mkdir bash-fix
cd bash-fix
curl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -
cd bash-92/bash-3.2
curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
cd ..
xcodebuild
sudo cp /bin/bash /bin/bash.old
sudo cp /bin/sh /bin/sh.old
build/Release/bash --version
build/Release/sh --version
sudo cp build/Release/bash /bin
sudo cp build/Release/sh /bin
sudo chmod a-x /bin/bash.old /bin/sh.old
Si ahora volvemos a ejecutar el script:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
nos debería devolver el mensaje:
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test
Y eso significará que nuestro sistema ya no es vulnerable al exploit ;)
Suscribirse a:
Entradas (Atom)