IT 소식/보안 뉴스

[보안] 리눅스 유틸리티 sudo 루트 권한 획득 취약점 발견

씨실과 날실 2021. 1. 30. 15:00

 

sudo 보안 취약점 이슈

유닉스와 리눅스 계열 OS를 운용하는 개인과 업체에게 중요한 보안 이슈가 발생했습니다.

제 블로그를 찾아주시는 분들의 상당수가 리눅스 사용자입니다. 이번 보안 이슈는 그분들에게 중요한 문제이기에 따로 글을 적게 되었습니다.

 

위 링크의 언론매체의 보도를 요약하면 다음과 같습니다.

[sudo 취약점]

취약점 발표업체 : 퀄리스(Qualys)

 

공격 결과 : OS의 로컬 사용자를 관리자급으로 권한 상승 가능

 

공격 방법 : 버퍼 오버플로우 공격

 

영향받는 버전 : sudo 1.8.2~1.8.31p2와 1.9.0~1.9.5p1

 

공격 성공 환경

Debian 10 : sudo 1.8.27

Ubuntu 20.04 : sudo 1.8.31

Fedora 33 : sudo 1.9.2

 

해결 방법 : sudo를 최신 버전으로 패치

사실 이번 보안 이슈는 리눅스 등을 운용하는 업체(예를 들어 웹호스팅 업체)가 아닌 개인의 경우 크게 문제가 크게 번질 가능성은 적습니다. 그 이유는 이 취약점 공격을 실행하기 위해서는 시스템에 물리적으로 접근해야 하기 때문입니다.

네트워크로 연결만 되어 있다면 원격으로도 공격할 수 있는 방법이 얼마든지 있는데 굳이 직접 시스템에 접근하는 위험부담을 떠안을 필요는 거의 없기 때문입니다. 무슨 미션임파서블의 이단 헌트도 아니고 말이죠.

 

그럼에도 불구하고 패치를 하기를 권장하는 이유는 말 그대로 그 어떤 계정으로도 루트권한을 획득할 수 있기 때문입니다. 보안이 생명인 업체 뿐만 아니라 개인적으로 리눅스를 다양한 사용자 계정을 생성해 운용하는 이들도 보안 패치를 행하여 예기치 못한 시스템 공격 등에 대비하는 것이 좋기 때문입니다.

 

시스템 내 sudo 보안 취약점 내포 여부 확인

자기 시스템이 해당 보안 취약점을 가지고 있는지는 다음과 같은 방법들을 통해 확인할 수 있습니다.

 

2021년 1월 30일 현재 우분투 20.04의 저장소에 올라가 있는 sudo 패키지의 버전은 1.8.31입니다. 그러나 앞서 확인한 공격 성공 환경에 나온 것과 버전 숫자는 같더라도 실제로는 보안 취약점을 가지고 있는 버전은 아닙니다.

sudo 1.8.31-1ubuntu1.2

현재 우분투 20.04 저장소에 올라가 있는 sudo 패키지의 전체 버전명은 위와 같습니다. 그리고 직전 버전은 1.8.31-1ubuntu1.1이었습니다.

1.8.31-1ubuntu1.1 이전 버전이 권한 상승 취약점을 내포하고 있는 버전이라면 1.8.31-1ubuntu1.2 이후부터는 해당 보안 취약점을 해결한 패치가 적용된 버전입니다. 즉 긴급히 focal-updates,focal-security 저장소에 취약점을 해결한 새 패키지를 업로드한 것입니다.

 

자신의 시스템이 해당 보안 취약점을 가지고 있는지 확인하는 간단한 방법이 있습니다.

그것은 sudoedit -s / 명령을 실행해 출력되는 문구를 확인해보는 것입니다.

study@study-VirtualBox:~$ sudoedit -s /
[sudo] study의 암호: 
sudoedit: /: not a regular file
study@study-VirtualBox:~$ 

해당 보안 취약점이 패치되지 않은 경우  위와 같이 sudoedit:로 시작하는 오류 메시지가 출력됩니다.

 

study@study-VirtualBox:~$ sudoedit -s /
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p
                prompt] [-T timeout] [-u user] file ...
study@study-VirtualBox:~$ 

그러나 문제가 해결된 버전이라면 위와 같이 usage:로 시작하는 오류 메시지가 출력됩니다.

 

sudo의 보안 취약점을 해결 - 패키지 업그레이드

sudo의 보안 취약점을 해결하는 방법은 당연히 패키지 업그레이드입니다.

study@study-VirtualBox:~$ sudo apt update

- 중략 -

study@study-VirtualBox:~$ apt list --upgradable
리스팅... 완료

- 중략 -

sudo/focal-updates,focal-security 1.8.31-1ubuntu1.2 amd64 [upgradable from: 1.8.31-1ubuntu1.1]

- 중략 -

study@study-VirtualBox:~$ 

보시면 sudo를 1.8.31-1ubuntu1.1에서 1.8.31-1ubuntu1.2로 업그레이드 가능하다고 나옵니다.

 

study@study-VirtualBox:~$ sudo apt update

- 중략 -

study@study-VirtualBox:~$ sudo apt install sudo
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지를 업그레이드할 것입니다:
  sudo
1개 업그레이드, 0개 새로 설치, 0개 제거 및 240개 업그레이드 안 함.
514 k바이트 아카이브를 받아야 합니다.
이 작업 후 4,096 바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://mirror.kakao.com/ubuntu focal-updates/main amd64 sudo amd64 1.8.31-1ubuntu1.2 [514 kB]
내려받기 514 k바이트, 소요시간 0초 (4,979 k바이트/초)
(데이터베이스 읽는중 ...현재 204279개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../sudo_1.8.31-1ubuntu1.2_amd64.deb ...
Unpacking sudo (1.8.31-1ubuntu1.2) over (1.8.31-1ubuntu1.1) ...
sudo (1.8.31-1ubuntu1.2) 설정하는 중입니다 ...
Processing triggers for man-db (2.9.1-1) ...
study@study-VirtualBox:~$ 

위와 같이 sudo 패키지만 따로 업그레이드 할 수 있습니다.

 

study@study-VirtualBox:~$ sudo apt update
study@study-VirtualBox:~$ sudo apt upgrade

그렇지만 이왕 패키지 업그레이드 하시는 것, 위와 같이 전체 패키지 업그레이드를 권장합니다.

 

study@study-VirtualBox:~$ sudo -V
Sudo version 1.8.31
Sudoers 정책 플러그인 버전 1.8.31
Sudoers 파일 문법 버전 46
Sudoers I/O plugin version 1.8.31
study@study-VirtualBox:~$ 

업그레이드 완료 후 sudo의 버전을 확인하면 기존 버전과 숫자는 차이가 없을 것입니다. 그렇지만 위에서 말하듯 세부 버전은 올라간 것이 분명하므로 걱정 안하셔도 됩니다.

 


sudo 보안 취약점에 대한 상세 정보

해당 보안 취약점에 대한 보다 자세한 내용은 이 취약점을 발견한 퀄리스의 발표를 참고하시는 것을 권장합니다.