El primer paso es verificar la versión de bash.
bash --version
ej:GNU bash, versión 4.2.48(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. Licencia GPLv3+: GPL de GNU versión 3 o posterior <http://gnu.org/licenses/gpl.html>
Nuestra versión es la 4.2
Luego se procede a descargar el código fuente desde
https://ftp.gnu.org/pub/gnu/bash
Para nuestro ejemplo:
wget https://ftp.gnu.org/pub/gnu/bash/bash-4.2.tar.gz
descomrpimimos el archivo con
mkdir ~/bash.src
ckdir ~/bash.src
tar zxf bash-4.2.tar.gz
cd bash-4.2
Procedemos a la aplicación de los parches,
Para esto creamos un script por ejemplo, parches.sh
#!/bin/sh
v1="3.0" v2="30" ult="22"
for i in `seq 1 $ult`; do number=$(printf %02d $i) file="https://ftp.gnu.org/pub/gnu/bash/bash-${v1}-patches/bash${v2}-0$number" echo $file curl -s -k $file | patch -N -p0 done
Una vez creado el archivo lo ejecutamos,
chmod 755 parches.sh
Procedemos a la compilación
.configure
make
Si no hubo errores procedemos a actualizar la versión:
cp -p $(which bash) $(which bash).old
cp -p bash $(which bash)
Listo, ya está actualizada la versión.
foo='() { echo not patched; }' bash -c foo
env x='() { :;}; echo vulnerable' bash -c "echo Fallo 1 parcheado" env X='() { (a)=>\' sh -c "echo date"; cat echo
envx='() { :;}; echo vulnerable'bash-c"echo this is a test"
cd/tmp;envX='() { (a)=>\'bash-c"echo date";catecho
env -i X=' () { }; echo hello' bash -c 'date'
bash-c'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF'||echo"CVE-2014-7186 vulnerable, redir_stack"
(forxin{1..200};doecho"for x$x in ; do :";done;forxin{1..200};doechodone;done)|bash||echo"CVE-2014-7187 vulnerable, word_lineno"
|