PinTheft는 Linux 커널 RDS 서브시스템의 zerocopy double‑free 버그를 악용해 페이지 캐시를 덮어쓰고 root 권한을 획득할 수 있는 로컬 권한 상승 취약점이다. 공격은 io uring fixed buffer 기능을 이용해 해제된 메모리 페이지를 재사용하고 이를 통해 SUID‑root 실행 파일의 캐시 내용을 변조하는 방식으로 진행된다.

Create a landscape editorial hero image for this Studio Global article: What is the “PinTheft” Linux kernel privilege escalation vulnerability, how does the exploit work (including the RDS zerocopy double‑free bu. Article summary: PinTheft is a recently disclosed Linux local privilege escalation affecting the kernel’s RDS subsystem, where an RDS zerocopy reference-count/double-free bug can be chained with io_uring fixed buffers to overwrite page-c. Topic tags: general, general web. Reference image context from search candidates: Reference image 1: visual subject "# Re: PinTheft Linux LPE. > > v12-security have shared a new Linux LPE today, PinTheft [0]. > > > PinTheft is a Linux local privilege escalation exploit for an RDS zerocopy double-" source context "Re: PinTheft Linux LPE - oss-sec" Reference image 2: visual subject "# PinTheft: New Linux Exploit Steals Kernel References to Root
최근 공개된 PinTheft는 리눅스 커널에서 발견된 새로운 로컬 권한 상승(Local Privilege Escalation, LPE) 취약점이다. 이 취약점은 커널의 RDS(Reliable Datagram Sockets) 서브시스템에 존재하는 메모리 관리 버그를 악용해 공격자가 결국 root 권한을 획득할 수 있게 만든다.
연구자들에 따르면 이 취약점은 V12 Security 팀의 Aaron Esau가 발견했으며, 커널 패치가 공개된 이후 Proof‑of‑Concept(PoC) 익스플로잇 코드도 공개됐다. 이 취약점은 네트워크를 통한 원격 공격이 아니라 로컬에서 코드 실행 권한이 이미 있는 공격자를 대상으로 하는 취약점이다.
PinTheft는 리눅스 커널의 RDS(Reliable Datagram Sockets) 네트워크 서브시스템에서 발생한다. RDS는 주로 InfiniBand 기반 HPC(고성능 컴퓨팅) 클러스터나 분산 시스템에서 사용되는 고성능 네트워크 프로토콜이다.
문제는 RDS zerocopy 전송 경로에서 발생한다. zerocopy는 데이터를 커널과 사용자 공간 사이에서 여러 번 복사하지 않고 직접 전송해 성능을 높이는 기술이다. 하지만 이 과정에서 복잡한 메모리 관리가 필요하다.
특히 rds_message_zcopy_from_user() 함수는 전송을 위해 사용자 메모리 페이지를 하나씩 pin(고정) 한다. 이후 페이지 처리 과정에서 오류나 페이지 폴트가 발생하면, 에러 처리 루틴이 이전에 고정했던 페이지를 해제해야 한다. 문제는 이 과정에서 이미 관리되고 있는 페이지를 잘못 해제하는 double‑free 또는 reference count 오류가 발생할 수 있다는 점이다.
이 메모리 관리 오류가 PinTheft 공격의 핵심 기반이 된다.
연구자들은 이 버그를 단순한 메모리 오류에서 끝내지 않고, 다른 커널 기능과 결합해 실제 권한 상승 공격으로 연결할 수 있음을 보여줬다.
공격자는 먼저 취약한 RDS zerocopy 경로를 호출해 페이지 pinning 과정에서 오류를 유도한다. 이후 정리(cleanup) 단계에서 커널이 잘못된 페이지 해제를 수행하면서 내부 메모리 상태가 깨지게 된다.
다음 단계에서 공격자는 리눅스의 고성능 비동기 I/O 인터페이스인 io_uring을 활용한다.
특히 fixed buffer 기능을 사용하면 사용자 애플리케이션이 커널에 특정 메모리 버퍼를 등록해 I/O 작업에 사용할 수 있다.
공격자는 이를 이용해 방금 해제된 물리 페이지를 다시 할당받도록 조작한다. 이렇게 되면 취약점으로 인해 깨진 메모리 영역을 공격자가 통제할 수 있게 된다.
이 과정에서 손상된 페이지가 파일 데이터가 저장된 페이지 캐시와 연결될 수 있다.
페이지 캐시는 커널이 파일 내용을 메모리에 캐시해 성능을 높이는 메커니즘이다. 공격자는 메모리 손상을 이용해 디스크 파일을 직접 수정하지 않고도 커널이 읽어주는 파일 내용을 바꿀 수 있다.
공격 체인의 마지막 단계에서는 SUID‑root 실행 파일의 페이지 캐시가 공격 대상이 된다.
SUID(Set User ID) 비트가 설정된 실행 파일은 실행 시 파일 소유자 권한(대부분 root) 으로 실행된다. 공격자가 페이지 캐시에 있는 해당 바이너리 내용을 변조하면, 커널은 변조된 코드를 실행하면서도 여전히 root 권한을 부여하게 된다.
그 결과 공격자는 시스템에서 root 권한을 획득할 수 있다.
취약점 자체는 특정 배포판에만 제한되지 않지만, 실제 위험도는 시스템 설정에 크게 의존한다.
보안 보고서에서는 Arch Linux 환경이 특히 노출 가능성이 높다고 지적한다.
이 때문에 초기 테스트와 데모 환경으로 Arch Linux가 자주 사용됐다.
다음 조건이 만족되면 어떤 배포판에서도 이론적으로 취약할 수 있다.
다만 많은 기업용 배포판에서는 해당 모듈이 기본적으로 활성화되지 않는 경우가 많다.
보고서에 따르면 Ubuntu, Debian, RHEL, AlmaLinux 기본 설정에서는 RDS 모듈이 기본적으로 활성화되지 않는 경우가 많아 상대적으로 위험이 낮을 수 있다. 그러나 실제 영향 여부는 각 시스템의 커널 설정을 확인해야 한다.
CloudLinux 측은 PoC를 여러 플랫폼 버전에서 테스트한 결과 자사 플랫폼은 영향을 받지 않는다고 밝혔다.
PinTheft 공격이 실제로 성공하려면 다음과 같은 조건이 동시에 충족되어야 한다.
이 조건 중 일부라도 충족되지 않으면 실제 공격 난이도는 크게 높아지거나 공격이 불가능해질 수 있다.
가장 중요한 대응은 배포판에서 제공하는 최신 커널 패치 설치다. RDS zerocopy 코드 경로에 대한 수정이 이미 공개됐다.
커널 업데이트는 적용 후 시스템 재부팅이 필요하다.
RDS 네트워크 기능을 사용하지 않는 환경이라면 다음과 같은 방법으로 공격 표면을 줄일 수 있다.
rds 모듈 blacklist공격 체인이 io_uring fixed buffer에 의존하므로, 가능한 환경에서는 unprivileged io_uring 사용 제한이 방어에 도움이 될 수 있다.
SUID 실행 파일이 공격의 최종 목표가 되므로 다음 작업이 권장된다.
PinTheft는 로컬 실행 권한이 있는 공격자를 전제로 하기 때문에 다음 환경에서 특히 위험하다.
이러한 시스템은 우선적으로 패치와 보안 설정 점검을 진행하는 것이 좋다.
PinTheft는 현대 커널 익스플로잇이 여러 커널 서브시스템을 연결해 공격 체인을 구성하는 방식을 잘 보여주는 사례다. 이번 경우에는 RDS 네트워크 스택의 메모리 버그와 io_uring I/O 프레임워크가 결합됐다.
또한 평소에는 거의 사용되지 않는 커널 모듈이라도, 다른 기능과 결합될 경우 심각한 권한 상승 공격 경로가 될 수 있다는 점을 보여준다.
결국 가장 확실한 방어는 정기적인 커널 업데이트와 불필요한 모듈 최소화라는 기본 보안 원칙을 지키는 것이다.
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
PinTheft는 Linux 커널 RDS 서브시스템의 zerocopy double‑free 버그를 악용해 페이지 캐시를 덮어쓰고 root 권한을 획득할 수 있는 로컬 권한 상승 취약점이다.
PinTheft는 Linux 커널 RDS 서브시스템의 zerocopy double‑free 버그를 악용해 페이지 캐시를 덮어쓰고 root 권한을 획득할 수 있는 로컬 권한 상승 취약점이다. 공격은 io uring fixed buffer 기능을 이용해 해제된 메모리 페이지를 재사용하고 이를 통해 SUID‑root 실행 파일의 캐시 내용을 변조하는 방식으로 진행된다.
취약한 커널, 로드된 RDS 모듈, unprivileged io uring 사용 가능, 그리고 로컬 실행 권한이 결합될 때 공격이 가능하다.