
CVE-2026-46333 및 CVE-2026-31431을 사용하여 모든 사용자의 비밀번호를 변경하세요.
[!WARNING] 직접 소유하거나 테스트 권한이 있는 시스템에서만 사용하십시오. 실패 시 시스템을 재부팅할 수 없을 경우 루트 셸을 열어 두는 것이 좋습니다. 루트 권한 없이는
/etc/shadow의 페이지 캐시를 지울 수 없을 수 있기 때문입니다.
CVE-2026-46333 및 CVE-2026-31431을 사용하여 루트로 권한 상승하지 않고도 모든 사용자의 비밀번호를 변경할 수 있습니다.
python passwd.py <username>
인자 없이 명령을 실행하면 현재 shadow 파일에 있는 해시를 볼 수도 있습니다.
CopyFail(CVE-2026-31431) 및 유사한 취약점을 사용하면 OS에서 읽을 수 있는 모든 파일에 4바이트를 쓸 수 있습니다. 이는 일반적으로 PAM 규칙이나 shadow 파일처럼 읽을 수 없는 파일은 수정할 수 없음을 의미합니다. CopyFail을 사용하여 루트로 권한 상승한 후 원하는 파일을 무엇이든 변경할 수 있습니다(이에 대한 PoC는 많으며 제 RootRemover도 있습니다). 하지만 권한 상승 없이 다른 파일을 수정하려면 어떻게 해야 할까요?
CopyFail이 작동하려면 파일 디스크립터만 있으면 됩니다. 대부분의 PoC는 파일을 열고 해당 FD를 사용하지만, 우리는 다른 곳에서도 이를 얻을 수 있습니다. 여기서 CVE-2026-46333이 등장합니다.
CVE-2026-46333은 chage 또는 ssh-keysign에서 루트가 읽을 수 있는 파일의 파일 디스크립터를 가로챌 수 있습니다. 비밀번호를 수정하려면 /etc/shadow가 필요하므로 chage에 초점을 맞춥니다. pidfd_getfd는 /etc/shadow의 파일 디스크립터를 가로채는 데 사용됩니다. 실행 중 특정 시점에 UID가 실행한 사용자로 설정되어(pidfd_getfd 허용) 있지만, SUID 비트가 있어서 사용자 권한으로 낮아지기 전에 루트로 /etc/shadow를 열 수 있었기 때문입니다.
이 FD는 O_RDONLY, 즉 읽기 전용이지만 CopyFail이 있으므로 문제되지 않습니다. 쓰기로 권한 상승할 수 있습니다. FD를 CopyFail에 전달하고 다른 읽을 수 있는 파일처럼 익스플로잇을 사용하면 됩니다.
passwd를 사용하여 비밀번호를 다시 변경하는 것이 좋습니다.passwd로 다시 설정하면 해결됩니다.