OS

Linux pkexec(polkit 패키지) 관련 CVE-2021-4034 취약점 점검 및 조치 방법

Linux의 pkexec(polkit 패키지)에서 발생한 CVE-2021-4034는 흔히 PwnKit이라고 불리는 권한 상승(Local Privilege Escalation) 취약점입니다.
로컬 일반 사용자가 root 권한을 획득할 수 있는 매우 위험한 취약점이며, 대부분의 주요 Linux 배포판에 영향을 줬습니다.

1. 취약점 개요

  • CVE : CVE-2021-4034
  • 대상 : pkexec (polkit/policykit 패키지)
  • 영향 :
    • 일반 사용자가 root 권한 획득 가능
    • 인증 우회 가능
    • 공개 PoC 존재
  • CVSS : 7.8 High

영향받는 대표 OS:

  • Ubuntu
  • Debian
  • CentOS
  • RHEL
  • Fedora 등 대부분 Linux 배포판



2. 취약 여부 점검 방법

(1) pkexec 존재 여부 확인

which pkexec

또는

find / -perm -4000 -name pkexec 2>/dev/null

결과 예시:

/usr/bin/pkexec

존재하면 점검 필요.


(2) SUID 권한 확인

ls -l /usr/bin/pkexec

취약 상태 예시:

-rwsr-xr-x 1 root root 26776 Jan 10  2022 /usr/bin/pkexec

rws → SUID 활성화 상태.



(3) 패키지 버전 확인

RHEL / CentOS

rpm -qa | grep polkit

또는

rpm -q polkit

Ubuntu / Debian

dpkg -l | grep policykit

또는

apt list --installed | grep policykit



3. 취약점 조치 방법

가장 권장되는 방법 : 보안 패치 적용

RHEL / CentOS

yum update polkit

또는

dnf update polkit

업데이트 후:

rpm -q polkit

Ubuntu / Debian

apt update
apt upgrade policykit-1

또는 전체 보안업데이트:

apt full-upgrade

Ubuntu는 수정 패치를 백포트 방식으로 제공했습니다.



4. 긴급 임시 조치 (패치 전)

패치가 어려운 경우 pkexec의 SUID 제거.

조치 명령

chmod 0755 /usr/bin/pkexec

또는

chmod u-s /usr/bin/pkexec

확인:

ls -l /usr/bin/pkexec

정상 결과:

-rwxr-xr-x

Reddit 및 여러 보안 가이드에서도 긴급 완화책으로 안내되었습니다.



5. 조치 후 재점검

SUID 제거 확인

find / -perm -4000 -name pkexec 2>/dev/null

또는

ls -l /usr/bin/pkexec

-rwxr-xr-x 형태면 임시조치 완료.


6. 취약 여부 간단 자동 점검 스크립트

#!/bin/bash

PKEXEC="/usr/bin/pkexec"

echo "=== CVE-2021-4034 점검 ==="

if [ -f "$PKEXEC" ]; then
echo "[+] pkexec 존재"

PERM=$(stat -c %A $PKEXEC)

echo "[+] 권한 : $PERM"

if [[ "$PERM" == *"s"* ]]; then
echo "[!] 취약 가능성 있음 (SUID 활성화)"
else
echo "[OK] SUID 제거됨"
fi

else
echo "[OK] pkexec 없음"
fi

실행:

chmod +x check_pwnkit.sh
./check_pwnkit.sh

7. 권장 운영 조치

  • polkit 최신 보안패치 유지
  • 불필요한 SUID 바이너리 제거
  • 일반 사용자 shell 접근 제한
  • EDR/로그 모니터링 강화
  • /usr/bin/pkexec 실행 로그 감시




Rocky Linux 도 CVE-2021-4034 (PwnKit) 영향 대상입니다.
특히 Rocky Linux 8 계열은 polkit 패키지 업데이트가 제공됐습니다.

Rocky Linux 점검 방법

1. polkit 버전 확인

rpm -q polkit

예시:

polkit-0.115-13.el8.x86_64

Rocky Linux 패치 기준

Rocky Linux 8

다음 버전 이상이면 패치됨:

0.115-13.el8_5.1

취약 여부 빠른 확인

방법 1 — 버전 확인

rpm -q polkit

패치 전 예시:

polkit-0.115-13.el8

패치 후 예시:

polkit-0.115-13.el8_5.1

방법 2 — SUID 확인

ls -l /usr/bin/pkexec

취약 가능 상태:

-rwsr-xr-x

임시조치 완료 상태:

-rwxr-xr-x

Rocky Linux 조치 방법

권장: 패키지 업데이트

dnf update polkit

또는 전체 업데이트:

dnf update

업데이트 후 재확인:

rpm -q polkit

긴급 임시 조치 (패치 전)

pkexec SUID 제거:

chmod 0755 /usr/bin/pkexec

또는

chmod u-s /usr/bin/pkexec

복구 필요 시:

chmod 4755 /usr/bin/pkexec

운영 환경에서 많이 쓰는 실제 점검 명령

전체 서버 일괄 점검용

rpm -q polkit && ls -l /usr/bin/pkexec

취약 여부 판별 기준 정리

상태의미
pkexec 없음안전
pkexec 존재 + SUID 있음 + 구버전취약 가능
최신 polkit 적용안전
SUID 제거됨임시 완화

Rocky Linux 8/9 추천 조치 순서

  1. 즉시 임시 완화
chmod u-s /usr/bin/pkexec
  1. 패치 적용
dnf update polkit
  1. 재부팅 권장
reboot
  1. 최종 확인
rpm -q polkit
ls -l /usr/bin/pkexec

Rocky Linux 9도 동일하게 dnf update polkit 방식으로 조치하면 됩니다.


현재 시스템에서 확인해봅니다.

Red Hat 및 CentOS 계열(RHEL 8 기반) 자료를 교차 검증한 결과는 다음과 같습니다.

1. 보안 패치 적용 기준 버전

2022년 1월, PwnKit(CVE-2021-4034) 취약점이 처음 공개되었을 당시 Red Hat이 배포한 최초의 긴급 수정 패치 버전은 polkit-0.115-13.el8_5.1 이었습니다.

즉, RHEL 8 / CentOS 8 환경에서는 버전명의 가장 마지막 릴리즈 번호가 13.el8_5.1 이상이기만 하면 이 취약점에 대한 방어 코드가 들어가 있는 상태입니다.

2. 질문하신 버전 분석

문의하신 버전은 polkit-0.115-15.el8_10.2.x86_64 입니다.

  • 뒤쪽 릴리즈 번호인 15.el8_10.2는 최초 패치 버전인 13보다 훨씬 이후에 나온 빌드입니다. (RHEL 8.10 마이너 업데이트 버전에 맞춰 빌드된 패키지입니다.)
  • 리눅스 패키지 관리 특성상, 한 번 반영된 보안 패치는 이후에 나오는 상위 버전(13 → 15)에 누적되어 계속 포함(Backport)됩니다.

💡 결론 polkit-0.115-15.el8_10.2 버전은 PwnKit 취약점(CVE-2021-4034)에 대한 보안 패치가 완벽하게 반영되어 안전한 버전이 맞습니다. 추가로 서버 내에서 더 확실하게 확인하고 싶으시다면 아래 명령어로 체인질로그(Changelog)를 직접 조회해 보실 수도 있습니다. rpm -q –changelog polkit | grep CVE-2021-4034

결론

polkit-0.115-15.el8_10.2 버전은 PwnKit 취약점(CVE-2021-4034)에 대한 보안 패치가 완벽하게 반영되어 안전한 버전이 맞습니다. 추가로 서버 내에서 더 확실하게 확인하고 싶으시다면 아래 명령어로 체인질로그(Changelog)를 직접 조회해 보실 수도 있습니다.

rpm -q --changelog polkit | grep CVE-2021-4034

8. 참고 자료

Hi, I’m 관리자