서론

작년 이맘때쯤 하트블리드에 이에 쉘쇼크까지 터지면서 보안업계가 출렁였었죠 ㅎㅎ.

그나마 하트블리드는 특정 버전에 제한되있었지만 베쉬셸은......

덕분에 아마 서버업계에서는 "리눅스 서버가 가장 많이 다시깔린날"같은게 아니였을까? 하네요 ㅎㅎ (업데이트해도 백도어남아있음 큰일이니깐)

뭐 어쨋건 패치도 그때나와서 대부분은 해결 됬겠지만 일부 지원이 끊겨 방치된것들은 아직도 쉘쇼크에 무방비하죠. (대표적으로 저의 오드로이드)(오드로이드는 이 블로그의 서버입니다.)(라즈베리파이는 1,2는 모두 안전합니다.)

그래서 지금 그에대한 글을 써볼려 합니다.

자신의 상태 확인

자신이 쉘쇼크에 무방비한지 확인할려면 터미널열고 다음 명령어 입력해보면 됩니다.

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

vulunerable 나오면.... 당신의 배쉬셸은 간단한 환경변수 놀이에 농락당할수 있습니다. 이제 업데이트를 하셔야 됩니다.

보안패치

그냥 aptyum 업데이트를 통해 해결되면 매우 좋겠지만 아마 지금도 취약하다면 그냥 업데이트 지원 안하는겁니다.

그럼 다음방안으로 그냥 베쉬셸을 컴파일 합시다.

임의의 폴더에다 a.sh만들어 주시고 파일내용으로 다음을 추가합니다.

TMPDIR=/tmp/bash-src
mkdir $TMPDIR
cd $TMPDIR
#소스 원본 다운로드
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#그에대한 패치도 모두 다운로드
for i in $(seq -f "%03g" 1 999); do 
  wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i
  if [[ $? -ne "0" ]]; then
    MAX=$(expr $i - 1)
    break;
  fi
done
tar zxf bash-4.3.tar.gz 
cd bash-4.3
#패치 적용
for i in $(seq -f "%03g" 1 $MAX);do
  echo apply patch bash43-$i
  patch -p0 < ../bash43-$i
done
#컴파일 밑 적용
./configure && make
sudo make install
cd ../..
rm -r $TMPDIR

이제 실행권한을 주시고 (chmod +x a.sh) 루트권한으로 실행시키면 됩니다.

그럼 알아서 최신버전 다운받아서 컴파일한뒤 설치됩니다.

그후 bash -version4.3.42(1)이상을 가리키면 잘 해결된겁니다.

뒷이야기

지금와서 이 보안패치는 의미가 있냐? 싶은분들도 많겠지만 의외로 의미가 있는게 개인용 NAS만든다고 Xpenology같은 해킹된 운영체제 깔아놓고 업데이트 안하거나 안나오는 경우가 많습니다. 그리고 이런건 루트권한 탈취된뒤 프록시서버로 활용해 해킹을 가하거나 좀비로 만들어 스팸을 뿌리는일에 가담되는일이 일상다반사라고 하네요.

이는 저도 겪어봤는데요, 비록 쉘쇼크가 아닌 ID, PW를 기본으로 맞춰뒀다 발생한 일이지만 훗날 어지간한 사이트의 블랙리스트에 제 ip주소가 있게된걸 깨닫게되고 후회하며(우분투 포럼이랑 오픈수세 포럼에서 BAN당했네요....공유기 교체하여 ip주소 새로 할당받아서 괜찮지만요) 요즘은 보안을 철저하게 관리하고 있습니다. ㅎㅎ