
CVE-2026-46333 と CVE-2026-31431 を使用して、任意のユーザーのパスワードを変更します。
[!WARNING] これは、所有しているシステム、またはテストの許可を得ているシステムでのみ使用してください。失敗した場合にシステムを再起動できない場合は、root シェルを開いたままにしておくことをお勧めします。root なしでは
/etc/shadowのページキャッシュをクリアできない可能性があるためです。
CVE-2026-46333 と CVE-2026-31431 を使用して、root に権限昇格することなく任意のユーザーのパスワードを変更します。
python passwd.py <username>
引数なしでコマンドを実行すると、現在 shadow ファイルにあるハッシュを表示することもできます。
CopyFail (CVE-2026-31431) および類似の脆弱性は、読み取り可能な OS 上の任意のファイルに 4 バイトを書き込むことを可能にします。これは通常、PAM ルールや shadow ファイルなど、読み取れないファイルは変更できないことを意味します。CopyFail を使用して root に権限昇格し、その後任意のファイルを変更することもできます(これには私の RootRemover を含む多くの PoC があります)。しかし、権限昇格せずに他のファイルを変更したい場合はどうでしょうか?
CopyFail は動作にファイルディスクリプタのみを必要とします。ほとんどの PoC はファイルを開いてその FD を使用しますが、私たちは他のどこからでもそれを取得できます。そこで登場するのが CVE-2026-46333 です。
CVE-2026-46333 は、chage または ssh-keysign から root が読み取り可能なファイルへのファイルディスクリプタを奪取できます。パスワードを変更するために /etc/shadow が必要なので、chage に焦点を当てます。pidfd_getfd は /etc/shadow のファイルディスクリプタを奪取するために使用されます。なぜなら、その実行中に UID がそれを実行したユーザーに設定される(pidfd_getfd が可能になる)一方で、SUID ビットを持つため、ユーザーに降格する前に root として /etc/shadow を開くことができたからです。
この FD は O_RDONLY、つまり読み取り専用ですが、CopyFail があるため問題ありません。書き込みへと昇格できます。FD を CopyFail に渡すだけで、他の読み取り可能なファイルと同じようにエクスプロイトを利用できます。
passwd を使用してパスワードを再度変更する必要があります。passwd で設定し直すことで修正できます。