Pack2TheRoot (CVE-2026-41651)
본문 바로가기

CVE 취약점

Pack2TheRoot (CVE-2026-41651)

반응형

 

1. 개요

최근 리눅스 생태계를 뒤흔든 치명적인 취약점이 공개되었습니다. 바로 CVE-2026-41651, 일명 Pack2 TheRoot'입니다. 이 취약점은 리눅스 패키지 관리의 추상화 레이어인 PackageKit에서 발견되었으며, 무려 12년 동안 패치되지 않은 채 방치되어 왔습니다. 오늘은 이 취약점의 발생 원인인 TOCTOU 레이스 컨디션과 공격 메커니즘을 상세히 살펴보겠습니다.


 


2. 취약점 개요

  • CVE ID: CVE-2026-41651
  • 별칭: Pack2TheRoot
  • 취약점 유형: Local Privilege Escalation (LPE)
  • 위험도: 8.8 (High)
  • 영향을 받는 버전: PackageKit 1.0.2 ~ 1.3.4
  • 주요 배포판: Fedora, Debian, Ubuntu, SUSE 등 대다수 리눅스

3. 기술적 분석: TOCTOU와 메모리 오염

이 취약점의 핵심은 TOCTOU (Time-of-Check Time-of-Use) 레이스 컨디션과 논리적 결함의 결합에 있습니다.

(1) 취약한 코드 위치

문제가 되는 코드는 src/pk-transaction.c 파일의 InstallFiles() 함수입니다.

// 취약점 핵심 로직 (개념적 코드)
if (pk_transaction_get_state (transaction) == PK_TRANSACTION_STATE_RUNNING) {
    // 이미 실행 중인 트랜잭션의 플래그를 검증 없이 업데이트함
    transaction->priv->cached_transaction_flags = new_flags; 
    return; // 상태 전이는 거부하지만, 플래그는 이미 오염됨
}

(2) 공격 메커니즘

공격자는 다음 4단계를 통해 root 권한을 탈취합니다.

  1. 초기 요청: 일반 사용자가 권한이 필요 없는 평범한 pkcon 요청을 보냅니다.
  2. 레이스 컨디션 유도: PackageKit이 권한을 체크하는 시점(Check)과 실행하는 시점(Use) 사이의 미세한 간극에, ONLY_TRUSTED 플래그를 해제하는 악의적인 두 번째 요청을 보냅니다.
  3. 플래그 오염: PackageKit의 논리적 오류로 인해, 실행 중인 트랜잭션의 메모리 플래그가 공격자가 보낸 값으로 덮어씌워집니다.
  4. 권한 상승: 이미 체크가 끝났다고 판단한 PackageKit은 오염된 플래그를 바탕으로 악성 RPM 패키지를 설치하며, 이 과정에서 root 권한으로 스크립트가 실행됩니다.

4. 공격 시연 (PoC Recap)

영상에서 확인하실 수 있듯이, 일반 사용자 계정에서 익스플로잇 스크립트를 실행하는 즉시 시스템의 root 쉘을 획득하는 것을 볼 수 있습니다. 12년 전 코드부터 존재했던 이 단순한 논리 버그가 현대 리눅스 시스템의 보안을 얼마나 쉽게 무력화하는지 보여주는 사례입니다.

 

Step 1) docker 설치합니다.

 

Step 2) docker ps 명령어 입력 시 아래와 같이 docker 그룹에 사용자를 추가합니다.

 

Step 3) docker 명령어가 동작하는 것을 알 수 있습니다.

 

Step 4) 해당 취약점 환경 구성을 다운로드합니다.

 

Step 5) 환경구성 파일을 확인합니다.

 

Step 6) 환경구성을 설치 확인합니다.

 

Step 7) PoC 공격 코드를 다운로드합니다.

 

Step 8) 해당 파일들을 확인합니다.

 

Step 9) PoC 공격코드를 이용해 공격하면 아래와 같이 euid 값이 0이므로 root 권한을 획득한 것을 알 수 있습니다.

 

Step 10) root 권한을 획득하여 /etc/passwd 파일 내용을 확인할 수 있습니다.


5. 대응 방안

(1) 시스템 업데이트

가장 확실한 방법은 PackageKit 1.3.5 버전 이상으로 업데이트하는 것입니다. 각 배포판의 패키지 관리자를 통해 보안 패치를 즉시 적용하세요.

 

(2) 서비스 비활성화 (임시 조치)

즉시 업데이트가 어려운 경우, PackageKit 서비스를 중지하여 공격 경로를 차단할 수 있습니다.

 

6. 마치며

이번 CVE-2026-41651 사례는 "오래된 코드일수록 안전하다"는 고정관념을 깨뜨렸습니다. 보안 전문가로서 우리는 항상 기본으로 돌아가 코드의 논리적 흐름을 의심해 보아야 합니다.

더 상세한 실습 과정과 취약점 분석 내용은 아래 제 유튜브 영상에서 확인하실 수 있습니다.

 

반응형

'CVE 취약점' 카테고리의 다른 글

Fragnesia (CVE-2026-46300)  (0) 2026.05.16
ORM Injection (CVE-2026-30951)  (0) 2026.05.01
CVE-2026-24061  (0) 2026.01.31
Ni8mare (CVE-2026-21858)  (0) 2026.01.16
MongoBleed (CVE-2025-14847)  (0) 2026.01.06