
CVE-2026-43494
RDS + io_uring 페이지 캐시 덮어쓰기를 통한 Linux 커널 로컬 권한 상승
PinTheft는 CVE-2026-43494에 대한 정교한 로컬 루트 익스플로잇으로, Linux 커널의 Reliable Datagram Sockets (RDS) 서브시스템의 참조 카운팅 버그입니다.
RDS 제로카피 경로의 이중 해제(double-free)와 io_uring의 고정 버퍼(fixed buffers)를 결합하여, 이 익스플로잇은 SUID-루트 바이너리의 신뢰할 수 있는 페이지 캐시 덮어쓰기를 달성하여 로컬 권한 상승을 통해 루트 권한을 획득합니다.
현대적인 io_uring 기능과 결합되면, 난해한 네트워킹 경로의 작은 회계 오류가 신뢰할 수 있는 LPE가 됩니다.
net/rdsrds_message_zcopy_from_user()의 실패 경로 → 잘못된 op_nents 처리iov_iter_get_pages2() 실패 후 이중 put_page()CVSS 점수: ~7.8 (높음)
io_uring REGISTER_BUFFERS 사용 (+1024 FOLL_PIN 참조)sendmsg 사용munmap() → PCP로 정리된 해제 (LIFO)struct page*를 통해 IORING_OP_READ_FIXED를 사용하여 회수된 페이지 덮어쓰기우회 기법:
CONFIG_INIT_ON_ALLOC_DEFAULT_ONbad_page() 확인CONFIG_RDS 및 CONFIG_RDS_TCP가 활성화된 커널io_uring 활성화 (kernel.io_uring_disabled=0)대부분의 배포판에서는 기본적으로 취약하지 않음 (RDS는 거의 활성화되지 않음)
# 1. Clone & Compile
git clone https://github.com/0xBlackash/CVE-2026-43494.git
cd CVE-2026-43494
gcc -O2 -static CVE-2026-43494.c -o pintheft
# 2. Run
sudo ./pintheft
CVE-2026-43494.c — 전체 익스플로잇 소스 (PinTheft)README.md — 이 문서backup/ — 덮어쓰여진 SUID 바이너리의 자동 백업# RDS 비활성화
echo "install rds /bin/false" | sudo tee /etc/modprobe.d/disable-rds.conf
echo "install rds_tcp /bin/false" | sudo tee -a /etc/modprobe.d/disable-rds.conf
sudo modprobe -r rds_tcp rds
# io_uring 비활성화 (사용하지 않는 경우)
echo "kernel.io_uring_disabled=2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
패치가 제공되는 즉시 커널을 업데이트하세요.
# 취약 여부 확인
modprobe -n rds_tcp && echo "RDS: Vulnerable"
cat /proc/sys/kernel/io_uring_disabled
uname -r
보안 연구 커뮤니티를 위해 ❤️로 제작됨
호기심을 유지하세요. 안전하세요.