업그레이드 할 수없는 오래된 우분투 시스템에서 어떻게 쉘 쇼크 취약점을 패치합니까?


22

Jaunty의 Ubuntu 9.04를 실행하는 원격 관리 시스템 (2 개의 시간대)이 있습니다. 여러 가지 이유로, 나는 지금까지 배포 업그레이드를 시도하는 것에 대해 정말로 불안해하기 때문에 더 최신 버전으로 업그레이드 할 수 없습니다. 분명히 더 이상 지원되지 않으며 공식 패치가 없습니다. 쉘 쇼크 취약점을 제거하기 위해 코드를 패치하고 bash를 다시 컴파일하는 방법에 대한 지침이 있습니까?


5
이 주제에 대해 어떤 연구를 했습니까? 가장 간단한 해결책은 직접 재구성하고 패치하는 것입니다. 서버를 업데이트하는 데 시간이 걸릴 수도 있습니다.
Ramhound

그래, 내 폴백 옵션이야 서버가 나갔습니다. 교체를 위해 자금이 들어올 때까지 계속 뛰어 들으려고합니다. 나는 현장에 있었고, 총알을 깨물고 업데이트를 할 것이지만, 거의 문제가 발생하지 않았으며, 손을 댈 수 없다면 위험이 없을 것입니다. 에.
Claus

사람들이이를 찾을 수 있도록 페이지에 키워드를 추가하기 만하면됩니다. 또한 arstechnica.com/security/2014/09/…에

1
패치를 해제 한 상태로두면, "리핑"이 빠르게 변경됩니다. 5 년 전에 나온 배포판을 사용하고 있음을 분명히하십시오 . 지원은 2010 년 10 월에 종료되었습니다. 더 많은 취약점이 걱정됩니다.
tedder42

답변:


29

AskUbuntu 에서 해커 뉴스에서 훔친 사람 으로부터 이것을 훔쳤습니다. 나를 위해 두 개의 오래된 서버에서 일했습니다.

mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 28); 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
#apply all patches
for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done
#build and install
./configure --prefix=/ && make && make install
cd .. 
cd ..
rm -r src

업데이트 : 방금 --prefix=/configure 명령을 추가하지 않으면 그 명령이 /usr/local/bin/bash최신 상태이며 /bin/bash여전히 취약하다는 것을 알았 습니다 .


스크립트에 버그가 있습니다. "0 25"시퀀스는 "1 26"이어야합니다. 이 내용을 읽고 답변을 편집 할 수 있으면 업데이트하십시오. 감사!
joelparkerhenderson 2014 년

동안 ./configure --prefix=/ && make실행 벌금의가 make install요구하는 것sudo
스튜어트

마이그레이션하는 동안 물건을 패치 할 수있는 공정한 방법입니다. 일부 사람들은 많은 vms를 가지고 있으며 각각을 재구성하는 것은 현실적이지 않습니다. 보다 업데이트 된 설치를 통해보다 장기적으로 해결하면서이를 즉시 수정으로 사용하는 것이 중요합니다.
Jas Panesar

@ rubo77 지금 할 필요가 (1) (27) (새로운 27 패치는 가장 중요하다)
joelparkerhenderson

1
추가 패치 28이는 않습니다 CVE-2014-7186 / 7187 취약점을 해결하기 위해 나타납니다.
unkilbeeg

2

sources.list를 최신 목록으로 업데이트 한 다음 apt-get을 사용하여 bash 만 업그레이드하는 솔루션도 있습니다. 정말 빠르며 그것에 관한 기사썼습니다 . 기본적으로 수행하는 작업은 다음과 같습니다.

최신 Ubuntu 'trusty'apt-get 리포지토리로 업그레이드하십시오. old-repositories.ubuntu.com URL을 사용하는 경우 변경해야 할 수도 있습니다 (링크 된 기사 확인).

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list

bash 업그레이드 / 적용 수정 :

sudo apt-get update
sudo apt-get install --only-upgrade bash

그리고 apt-get 저장소를 다시 변경하십시오.


완벽하게 일했습니다!
Peter Kruithof

-1

명령은

sudo apt-get update && sudo apt-get install --only-upgrade bash

2
도움이되지 않습니다. OP가 말했듯이 더 이상 지원되지 않으므로 bash에 대한 업그레이드가 없습니다.
Andrew Ferrier

-3

간단한 옵션 중 하나는 bash를 사용하지 않는 것입니다. 확인 dash설치되어 있고 그 /bin/sh에 심볼릭 링크 dash, 없습니다 bash. (이것은 데비안의 일부 버전에서는 기본값이지만 우분투에 대해서는 잘 모르겠습니다.) 강제 명령을 사용하여 ssh 액세스에 대한 사용자 계정이있는 경우 로그인 쉘도 변경해야합니다. bash를 사용하여 명시 적으로 스크립트를 확인해야 할 수도 있습니다. 대한 grepping하는 것은 #!/bin/bash그들을 찾아야한다.


5
"우리는 C ++에서 segfault를 가질 수 있고 대신 Java를 대신 사용할 수 있다는 것을 알았습니다"
DevSolar

3
더 가까운 유추는 GCC에서 버그가 발생하여 클랜을 시도하는 사람에게 말하는 것입니다. 둘 다 동일한 언어를 구현하지만 (때로는 겹치지 않는 비표준 확장명과 함께) 실제 요구가 "bash"가 아니라 "shell 인터프리터"일 가능성은 낮습니다.
R ..

말한 것처럼 bash를 명시 적으로 사용할 수있는 스크립트가 있습니다. bash를 사용하는 기존 파일을 grep하더라도 나중에 누군가가 bash를 명시 적으로 사용하는 시스템에 새 스크립트를 추가 할 수 있습니다. busybox (/ bin / sh가 busybox를 가리킴)를 사용하지만 bash가 설치된 임베디드 시스템도 마찬가지입니다. 가장 좋은 방법은 취약한 시스템에서 bash를 업데이트하는 것입니다.
jcarballo

대부분의 유닉스 / 리눅스 스크립트에는 bash 또는 ksh 또는 zsh와 같은 다른 최신 쉘이 필요합니다. 이것들은 사람들이 어떤 언어로도 기대할 수있는 많은 기능을 가지고 있지만 (BusyBox) ash / Dash / sh (original)와 같은 "베어 본"쉘에는 없습니다. 이 간단한 쉘은 더 큰 쉘의 기능 중 20-30 % 만 가지고있어 더 빠릅니다. 그러나 고급 문자열 처리 및 패턴 일치와 같은 많은 공통 작업에 외부 유틸리티를 광범위하게 사용해야합니다. 배쉬 (Bash) 등은 애쉬 등을 실행할 수있다. 스크립트. 그러나 그 반대는 아닙니다.
DocSalvager '10
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.