대학생들을 위한 IT

sudo :: 이커시 본문

운영체제/운영체제 그리고 Tip

sudo :: 이커시

phantomik 2021. 2. 15. 15:47

지난 포스팅에서 sudo 설명에 앞서, 간단히 리눅스에 관한 간단한 설명이 있었다. 
이어서 sudo와 그 취약점 관련 보안 내용을 포스팅하겠다.

리눅스를 사용하다보면, sudo, su 명령어를 사용해봤을 것이다. 

$ sudo

sudo는 일반 사용자가 root권한을 잠시 빌려 명령을 실행하게 하는 명령어.
sudo 명령어를 사용할 때는 root가 아니기 때문에 현재 로그인한 사용자의 비밀번호를 요구한다는 것이다.
(기본적으로 sudo 명령어를 사용할 수 있는 사용자 혹은 그룹은 /etc/sudoers 에 등록이 되어 있어야 한다.)

$ su

su 명령어는 현재 로그인 중인 현재 상태에서 다른 사용자의 계정으로 전환하는 명령어.
su는 로그인 하려는 대상 계정의 비밀번호를 요구한다.

다시 본론으로 돌아와서, sudo 보안 취약점을 살펴보자.


"redhat 관련 sudo 와 관련하여 important 등급의 보안 취약점(CVE-2021-3156)이 발표되었다."


해당 취약점은 2011년 7월에 도입 되어 2021년 1월에 취약점이 공개되고 존재하였으나, 약 10년만에 발견되었던 만큼 취약점이 해당하는 버전이 많아 대부분의 시스템이 취약할 것으로 생각된다. 

Ubuntu 20.04 (sudo 1.8.31), Debian 10 (Sudo 1.8.27), Fedora 33 (Sudo 1.9.2) 등 여러 배포판 리눅스에서
전체 루트 권한을 획득할 수 있다고 한다.

취약점을 발견한 Qualys 연구팀에서는 취약점에 대한 악용 코드를 게시하지 않겠다고 하여
당장 Baron Samedit 취약점에 대해 문제가 발생하지는 않을것으로 보인다.

요약

레드햇은 sudo가 명령줄 인수를 처리하는 방식에 취약점이 있음
(Heap-based Buffer Overflow로 인한 권한 상승) 메모리를 손상시키고 충돌 또는 권한 상승을 유발할 수 있음
이 취약점은 인증되지 않은 모든 로컬 사용자가 악용할 수 있으며, 악용할 경우 권한 상승 문제가 발생할 수 있음
ㅁ 취약점 버전 : 1.8.2 ~ 1.8.31p2 , 1.9.0 ~ 1.9.5p1
Red Hat Enterprise Linux 6, 7, 8

임시 패치

심볼릭 링크를 제거하여 sudoedit 비활성화 시키는 방법이 있지만, 이는 스크립트를 돌리는 방식이기 때문에
재부팅할 때 마다 적용 시켜주어야 하는 번거로움이 있으며, 임시 방편임을 분명히 알아두어야 한다.

1. Install required systemtap packages and dependencies:

systemtap yum-utils kernel-devel-"$(uname -r)"

Then for RHEL 7 install kernel debuginfo, using:

debuginfo-install -y kernel-"$(uname -r)"

Then for RHEL 8 & 6 install sudo debuginfo, using:

debuginfo-install sudo

2. Create the following systemtap script: (call the file as sudoedit-block.stap)

probe process("/usr/bin/sudo").function("main") {
               command = cmdline_args(0,0,"");
                  if (isinstr(command, "edit")) {
                     raise(9);
                  }
               }

-->이 스크립트는 보안 취약점이 있는 sudoedit 명령의 작동을 중지시키고, sudo 명령은 계속 정상적으로 작동 하게 함.
(재부팅할 때 마다 변경 사항을 적용해야함)

3. Install the script using the following command: (using root)
(This should output the PID number of the systemtap script)

# nohup stap -g sudoedit-block.stap &

4. Once the new fixed packages are installed, the systemtap script can be removed by killing the systemtap process. For example, by using:

# kill -s SIGTERM 7590
(where 7590 is the PID of the systemtap process)

역시 sudo 최신 패치를 받는 것이 가장 안전한 방법임을 분명히 말해둔다.

#참고 : CVE-2021-3156- Red Hat Customer Portal

'운영체제 > 운영체제 그리고 Tip' 카테고리의 다른 글

리눅스  (0) 2021.02.08
Ransomware(랜섬웨어) :: 이커시  (0) 2021.01.07
E14 리뷰 :: 이커시  (0) 2020.12.18
듀얼부팅(2)  (0) 2020.10.30
듀얼부팅  (0) 2020.10.30
Comments