본문 바로가기
Security

CVE-2021-3156 sudo 취약점 확인 및 조치

by 올엠 2021. 1. 28.
반응형

sudo의 힙 오버플로우 취약점이 최근 발생하였다. 요약 정리하고자 글을 남긴다.

본 취약점을 이용하면, Root 권한을 유저가 Root 권한을 획득할 수 있다.

취약점 내용을 보면 핵심은 아래와 같다.

When sudo runs a command in shell mode, either via the -s or -i
 command line option, it escapes special characters in the command’s arguments with a backslash

즉 쉘 모드에서 sudoedit를 -s 또는 -i 실행하는데, 백슬레쉬에 특수기호를 입력함으로써 힙 오버 플로우를 일으켜 Root 권한을 획득하게 된다.

 

아래 글을 보면 도움이 될 것이다.

 

CVE-2021-3156: Heap-Based Buffer Overflow in Sudo (Baron Samedit) | Qualys Security Blog

The Qualys Research Team has discovered a heap overflow vulnerability in sudo, a near-ubiquitous utility available on major Unix-like operating systems. Any unprivileged user can gain root privileges…

blog.qualys.com

 

Hunting

과거 발생한 흔적이 있는지 헌팅 관점에서 살펴보았다.

위 글에서 보면 예제 코드가 포함되어 있는데, sudoedit를 통해서 취약점을 발생시키기 때문에 아래 코드를 통해 시스템 변화를 살펴보면 볼 수 있다.

sudoedit -s '\' `perl -e 'print "A" x 65536'`

위 로그를 실행하면 /var/log/kern.log(Ubuntu 기준) 에 아래와 같이 sudoedit 로그가 발생하게 된다. 여기서 얻을 수 있는 주요 키워드는 sudoedit segfault error libc 이다.

 

따라서 Threat Hunting을 진행한다면, 과거 sudoedit , segfault,  error, libc 가 AND 조건으로 함께 발생한 로그가 있는지 Hunting을 진행할 수 있다. 클라우드 SIEM인 Azure Sentinel에서 Linux 환경을 분석하기 위해 syslog를 설정하였다면, 아래처럼 Hunting Query 구성이 가능할 것 같다.

query: |
  // Change startdate below if you want a different timespan
  let startdate = 7d;
  // Pull messages from Syslog contains "sudoedit".
  let RawCommands = Syslog 
  | where TimeGenerated >= ago(startdate)
  | where SyslogMessage contains "sudoedit" 
  | where SyslogMessage contains "segfault" 
  | where SyslogMessage contains "error" 

아래 글을 통해 Hunting Query를 만들면 될 것이다.

https://techcommunity.microsoft.com/t5/azure-sentinel/hunting-threats-on-linux-with-azure-sentinel/ba-p/1344431

 

Hunting Threats on Linux with Azure Sentinel

Introduction All sorts of activity and security data can be collected by Azure Sentinel for storage and mining.  The Syslog data collector is good for collecting data from Linux platforms but needs a helping hand to access information produced by the Linu

techcommunity.microsoft.com

Detection 

sudoedit /s 또는 /i 명령 사용에 대해서 Rule을 추가하여 공격 시도가 있는지 확인하는 방식이 유용할 것 같다.

 

Fix

https://www.sudo.ws 에서는 이미 버그를 해결한 버전을 배포하였고 각 운영체제에서도 적용되였다.

Ubuntu 기준으로 apt update를 통해 해결이 가능하다. 

sudo apt update
sudo apt install --only-upgrade sudo

apt-cache policy sudo 버전 체크 명령을 통해 최신 버전으로 업데이트 되었는지 확인할 수 있다.

그외 운영체제들은 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3156에서 확인이 가능하다.

 

반응형