레거시 데비안 버전 및 Bash Shellshock


11

우리는 데비안 에치, 레니, 스퀴즈를 운영하고 있습니다. 다양한 데비안 버전을 실행하는 150 개가 넘는 시스템이 있습니다. 이번 주 "쉘 쇼크"에 비추어 배쉬를 업그레이드해야한다고 가정합니다. 데비안을 모르므로 걱정이됩니다.

apt-get install bash내 저장소가 Squeeze 항목을 가리키는 동안 모든 데비안 시스템에서 실행 하고 올바른 Bash 패키지를 얻을 수 있습니까? 그렇지 않은 경우 어떤 다른 행동 과정이 있습니까?


7
bash를 선택적으로 해당 시스템으로 백 포트 할 수 있습니다. 그것은 것입니다 아마 그들에 확인을 실행합니다. 그러나 실제로 업그레이드해야합니다. oldstable보다 오래된 것은 보안 업데이트가 없다는 것을 알고 있습니까?이 보안 취약점은 많은 것 중 하나 일뿐입니다.
Faheem Mitha

심지어 문제입니까? system shell그 시스템 은 무엇입니까 ? 즉, systemPOSIX 호출 을 실행할 때 얻는 쉘 ( / bin / sh)입니다. / bin / sh가 bash 인 경우 업데이트해야합니다. 그렇지 않다면 ... 그렇다면 아마 괜찮을 것입니다 (그러나 어쨌든 bash 자체를 업데이트해야합니다)
Arafangion

답변:


11

bash를 업그레이드하는 옵션이 있습니다. 이렇게하려면 다음 apt-get명령을 사용하십시오 .

apt-get update

그런 다음 업데이트가 사용 가능한 모든 업데이트를 가져온 후 다음을 실행합니다.

apt-get install --only-upgrade bash

예를 들어 Squeeze와 같은 이전 릴리스에서 업데이트를 받으려면 Squeeze-LTS 저장소를 sources.list에 추가해야 할 것입니다.

이 저장소를 추가하려면 /etc/apt/sources.list다음 행을 편집 하여 파일 끝에 추가하십시오.

deb http://ftp.us.debian.org/debian squeeze-lts main non-free contrib

취약성에 대한 특정 시스템을 확인하거나 업그레이드가 작동하는지 확인하려면 사용중인 bash 버전을 확인하고 해당 버전이 영향을 받는지 (아마도) 또는 웹에서 사용 가능한 수많은 셸 테스트 스크립트 가 있는지 확인할 수 있습니다.

편집 1

bashLenny 또는 Etch에서 업그레이드하려면 bash소스 에서 컴파일 하고 bash릴리스에서 사용 중인 버전을 수동으로 업그레이드하는 방법에 대한 아래의 Ilya Sheershoff의 답변을 살펴보십시오 .

편집 2

다음은 sources.list성공적으로 업그레이드 한 Squeeze 서버 의 예제 파일입니다.

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# Other - Adding the lsb source for security updates
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free

초보자는 최신 패키지 카탈로그를 얻기 위해 먼저 apt-get update를 실행해야한다는 것을 모를 수도 있습니다.
Brenda J. Butler

deb ftp.us.debian.org/debian bash를 버전 4.1-3으로 업그레이드 한 다음 패치 된 소스를 사용하여 취약하지 않도록 주요 구성 요소를 짜야했습니다.

@ BrendaJ.Butler 좋은 제안, 그 단계도 추가했습니다.
111 ---

4

경우 apt-get install옵션이 작동하지 않았다, 당신은 소스에서 떠들썩한 파티를 다시 컴파일해야합니다. Lenny와 Etch의 예가 그 답입니다. 나는 짜기 기계를 가지고 있지 않지만, 무엇을 해야할지 쉽게 알아낼 수있다.

인터넷에서 찾은 TaNNkoST솔루션 :

사용 가능한 패치 수를 확인하고 새 패치가 있으면 "(seq") 부분의 수를 변경하십시오.

레니

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 4.1-3 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
tar zxvf bash-4.1.tar.gz
cd bash-4.1

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 14); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-4.1-patches/bash41-$i
patch -p0 < bash41-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can  Delete the old one thats a problem
rm /bin/bash.old

ETCH에 대해 동일한 논리를 따랐지만 yacc시스템에 설치 되지 않았 으므로 bison패키지 를 설치해야 했습니다. 내가 생각해 낸 것은 다음과 같습니다.

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 3.2-4 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
tar zxvf bash-3.2.tar.gz
cd bash-3.2

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 54); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$i
patch -p0 < bash32-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# at this point my system is not vulnerable already, test your system
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

# if this is not the case for your system - try the following

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can Delete the old one thats a problem
rm /bin/bash.old

1
make: yacc: Command not foundLenny 솔루션에 대한 오류가 발생 하여를 사용하여 수정했습니다 apt-get install bison.
SharpC

1

이 패키지를 신뢰할 수 있는지 확실하지 않지만 누군가 woody (3.0), sarge (3.1), etch (4.0) 및 lenny (5.0) 용 패키지를 빌드했습니다. 그들은 여기에서 사용할 수 있습니다 :

http://blog.bofh.it/debian/id_451

를 통해 이러한 패키지를 설치하기위한 저장소가 없습니다 apt-get. dpkg자체 로컬 저장소 를 사용 하거나 작성해야합니다.


" 이 패키지를 신뢰하려면 "? 그들은 데비안 개발자의 GPG 키로 서명되었습니다. 다른 공식 데비안 패키지 와 마찬가지로 .
peppe

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.