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 추천 조치 순서
- 즉시 임시 완화
chmod u-s /usr/bin/pkexec
- 패치 적용
dnf update polkit
- 재부팅 권장
reboot
- 최종 확인
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



