
# cve-2025-32463 - Linux에서 Sudo chroot를 통한 로컬 루트 권한 상승
sudo chroot <dir name> <command>
지정된 dir name에서 command 명령을 실행합니다
이 문제는 sudo v1.9.14에서 도입되었습니다. 이 버전은 chroot 기능이 사용될 때의 일치 처리 코드를 업그레이드했습니다.

이 새로운 변경으로 인해 chroot 명령 실행을 일치시키기 전에 루트 디렉터리의 ID가 변경됩니다. 구체적인 함수는 plugins/sudoers/pivot.c에 정의되어 있습니다. 이 파일(현재는 삭제됨)에는 chroot 일치 논리를 처리하는 pivot_root() 및 unpivot_root() 함수가 정의되어 있습니다. 이 두 함수를 호출하면 이름 서비스 전환(NSS) 작업이 트리거되어 시스템이 신뢰할 수 없는 환경에서 /etc/nsswitch.conf 구성 파일을 로드하게 됩니다(chroot가 현재 루트 디렉터리의 ID로 변경되었기 때문입니다). 이 구성 파일에는 사용자, 그룹, 호스트에 대한 정보를 검색하는 방법을 시스템에 지시하는 지침이 포함되어 있으며, 여러 소스를 나열하고 일치하는 항목을 찾을 때까지 순서대로 검색할 수 있습니다.
/etc/nsswitch.conf에는 많은 줄 항목이 포함되어 있으므로 정보를 검색할 때 줄 항목의 순서에 따라 조회합니다. 취약점의 핵심은: nsswitch.conf 파일에서 소스를 조회할 때 소스 이름이 공유 객체 경로의 일부로 사용된다는 점입니다. 예를 들어 ldap 소스는 libnss_ldap.so로 변환됩니다. NSS 함수가 ldap 소스를 사용하면 해당 라이브러리가 로드됩니다.
공격자의 경우 pivot_root()와 unpivot_root()를 호출하면 NSS 작업이 트리거됩니다. 따라서 공격자는 통제 가능한 경로에 /etc/nsswitch.conf 파일과 악성 라이브러리 파일을 포함하는 chroot 루트 디렉터리를 구성할 수 있습니다. 이름 서비스는 사용자 지정 NSS 모듈을 가리킬 수 있으며, 이 모듈에서 악성 공유 라이브러리를 위조할 수 있습니다.
공격자가 sudo -R <fake_root_dir> <command>를 실행하여 chroot 모드로 명령을 실행하려고 하면, sudo는 권한을 완전히 검증하기 전에 시스템 NSS를 호출하여 사용자/그룹 정보를 확인하고, 위조된 /etc/nsswitch.conf를 읽어 악성 NSS 모듈을 지시합니다. 이 시점에 sudo 프로세스는 이미 가짜 루트 디렉터리로 전환되었으며 여전히 root 권한으로 실행되고 있으므로, root 권한으로 공격자의 악성 공유 라이브러리 코드를 로드하고 실행하게 됩니다.
git clone https://github.com/Spongebob-369/cve-2025-32463.git
cd cve-2025-32463
chmod +x run.sh
./run.sh
# after entering the contain Ubuntu
./sudo-chroot.sh
id