Polkit pkexec 로컬 권한 상승(LPE) 취약점 분석 및 대응 가이드 (PwnKit, CVE-2021-4034)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTPolkit(구 PolicyKit)의 pkexec 유틸리티가 설치된 거의 모든 주요 리눅스 배포판 (RedHat, Debian, Ubuntu, SUSE 등)
로컬 세션을 획득한 일반 비특권 사용자가 취약한 pkexec를 악용하여 대상 시스템의 완전한 루트(root) 관리자 권한을 획득할 수 있음
운영체제 패키지 업데이트를 통해 polkit 최신 버전으로 패치하거나, 즉각적인 조치가 어려운 경우 pkexec 바이너리의 SUID 권한을 제거(chmod 0755)해야 함
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
패치 및 우회 명령어1. 공식 보안 패치 및 버전 업그레이드 명령어
각 OS 배포판의 패키지 관리자를 사용하여 polkit 패키지를 최신 버전으로 업데이트합니다.
# RedHat / CentOS / Rocky Linux 계열
sudo dnf clean all
sudo dnf update polkit -y
# Debian / Ubuntu 계열
sudo apt-get update
sudo apt-get --only-upgrade install polkitd-pkexec -y || sudo apt-get --only-upgrade install policykit-1 -y2. 패치 전 임시 완화(Workaround) 및 접근 제어 설정
즉각적인 패치 적용 및 재부팅이 어려운 시스템의 경우, pkexec 바이너리의 SUID 비트를 제거하여 일반 사용자가 루트 권한으로 해당 도구를 실행하지 못하도록 차단합니다.
# pkexec 파일의 SUID 권한 제거 (임시 완화 조치)
sudo chmod 0755 /usr/bin/pkexec
# 권한 변경 여부 확인 (rwsr-xr-x 에서 rwxr-xr-x 로 변경되었는지 확인)
ls -l /usr/bin/pkexec3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트
시스템 로그에서 pkexec가 비정상적인 인자나 환경 변수로 실행된 흔적이 있는지 검사합니다. 취약점 공격 시도 시 일반적으로 로그에 특정 에러 메시지가 남습니다.
# 시스템 인증 로그에서 pkexec 관련 비정상 실행 흔적 검색
sudo grep -E 'pkexec.*local-user-auth' /var/log/secure /var/log/auth.log 2>/dev/null
# pkexec의 SUID 비트 활성화 여부 점검 스크립트
if [ -u /usr/bin/pkexec ]; then
echo '[WARNING] pkexec has SUID bit set. System may be vulnerable if not patched.';
else
echo '[OK] pkexec SUID bit is disabled or file does not exist.';
fi패치 재부팅 전까지 서버와 엔드포인트를 노리는 커널 권한 상승(LPE) 공격을 AI 행위 탐지로 차단하세요
Windows 및 Linux 서버의 긴급 OS 패치에는 점검 창(Maintenance Window)이 필요합니다. 패치 전까지 비정상 프로세스 생성과 메모리 악용을 실시간으로 격리하세요.
취약점 발생 원리 및 공격 메커니즘
1. 취약점 개요 및 발생 원인 (Root Cause)
본 취약점(일명 'PwnKit')은 리눅스 환경에서 비특권 프로세스가 특권 프로세스와 통신할 수 있게 제어하는 프레임워크인 Polkit의 pkexec 실행 파일에서 발생하는 메모리 손상(Out-of-bounds Write/Read) 취약점입니다. pkexec는 SUID(Set-User-ID) 비트가 설정된 도구로, 실행 시 루트 권한으로 동작합니다. 취약점의 근본 원인은 pkexec가 실행될 때 전달받는 명령줄 인자(argc)의 개수를 제대로 검증하지 않기 때문입니다. 만약 인자 개수(argc)가 0인 상태로 프로그램이 실행되면, pkexec는 인자 배열 argv을 NULL로 인식하고, 인덱스 범위를 벗어나 환경 변수 배열 envp을 명령줄 인자로 오인하여 읽고 쓰는 메모리 경계 외 접근 오류(CWE-787, CWE-125)를 유발합니다.
2. 공격 메커니즘 및 익스플로잇 시나리오
공격자는 execve() 시스템 콜을 사용하여 argv 배열을 비우고(argc = 0), 특정 환경 변수들로 구성된 envp 배열을 구성하여 pkexec를 실행합니다. 이 경우 pkexec 내부 로직은 argv이 존재한다고 가정하고 접근하지만, 실제로는 envp의 메모리 주소를 가리키게 됩니다. 공격자는 이를 악용하여 GCONV_PATH와 같은 위험한 환경 변수를 pkexec 내부의 안전한 환경 변수 검증 과정을 우회하여 주입할 수 있습니다. 결과적으로 pkexec가 공유 라이브러리를 로드하는 과정에서 공격자가 미리 작성해 둔 악성 공유 라이브러리(.so)를 루트 권한으로 로드 및 실행하게 만들어, 즉각적인 로컬 루트 쉘을 획득하게 됩니다.
3. 비즈니스 및 인프라 파급 영향
이 취약점은 CVSS 7.8(High) 등급으로 분류되었으며, CISA KEV(Known Exploited Vulnerabilities) 목록에 등재될 만큼 실제 야생(In-the-wild)에서 매우 활발히 악용되었습니다. 로컬 권한 상승(LPE) 취약점 특성상 외부에서 직접 침투할 수는 없으나, 웹 애플리케이션 취약점(RCE, File Upload 등)이나 SSH 무단 접근을 통해 최초 침투에 성공한 공격자가 시스템 전체를 장악하는 '포스트 익스플로잇(Post-Exploitation)' 단계에서 핵심 징검다리로 사용됩니다. 컨테이너 환경이라 할지라도 호스트 OS의 커널 및 SUID 바이너리를 공유하는 구조라면 컨테이너 탈출 및 호스트 장악으로 이어질 수 있어 비즈니스 인프라 전체에 치명적인 위협을 초래합니다.
공식 보안 권고문 및 참조 링크
A local privilege escalation vulnerability was found on polkit's pkexec utility. The pkexec application is a setuid tool designed to allow unprivileged users to run commands as privileged users according predefined policies. The current version of pkexec doesn't handle the calling parameters count correctly and ends trying to execute environment variables as commands. An attacker can leverage this by crafting environment variables in such a way it'll induce pkexec to execute arbitrary code. When successfully executed the attack can cause a local privilege escalation given unprivileged users administrative rights on the target machine.
자주 묻는 실무 질문 (FAQ — CVE-2021-4034)
FAQQ1. CVE-2021-4034 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?
CVE-2021-4034의 기본 점수는 CVSS 7.8 (HIGH)이며, 향후 30일 내 실제 악용 확률을 나타내는 EPSS 점수는 94.9%입니다. 현재 미국 CISA KEV(실제 악용이 확인된 취약점 카탈로그)에 등재되어 있으므로 최우선 긴급 패치가 필요합니다.
Q2. CVE-2021-4034에 영향을 받는 벤더와 제품은 무엇입니까?
주요 영향 벤더는 polkit, redhat, debian, ubuntu, suse이며, 대상 컴포넌트는 polkit, pkexec입니다. 상세 영향 범위: Polkit 패키지가 설치된 모든 리눅스 배포판 (2009년 5월 최초 커밋 이후 출시된 모든 polkit 버전이 패치 적용 전까지 영향 받음)
Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?
[권장 조치] 운영체제 패키지 업데이트를 통해 polkit 최신 버전으로 패치하거나, 즉각적인 조치가 어려운 경우 pkexec 바이너리의 SUID 권한을 제거(chmod 0755)해야 함 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.
CVE-2021-4034 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성
클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.
🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (polkit)
동일 카테고리 전체 보기 →PHP OOM 처리 미흡에 따른 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-109618)
[영향 대상] PHP 엔진을 기반으로 구동되는 모든 웹 애플리케이션 및 서버 환경
구글 크롬 V8 엔진 경계 외 읽기/쓰기 취약점 (CVE-2026-11645) 분석 및 대응 가이드
[영향 대상] 149.0.7827.103 미만 버전의 구글 크롬(Google Chrome) 및 크로미움(Chromium) 기반 브라우저
Google Chrome Skia 그래픽 엔진 경계 외 쓰기(Out-of-bounds Write) 취약점 (CVE-2026-3909) 분석 및 대응 가이드
[영향 대상] 146.0.7680.75 미만 버전의 Google Chrome 및 Chromium 기반 브라우저
Apple iOS 및 macOS Out-of-bounds Write 원격 코드 실행 취약점 (CVE-2026-86950) 긴급 보안 권고
[영향 대상] iOS 18.7.11/26.7.1 미만, macOS Sequoia 15.8.1/Tahoe 26.7.1 미만 버전이 설치된 모든 Apple 기기
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.