
LinuxカーネルにおけるRDS + io_uring ページキャッシュオーバーライトによるローカル権限昇格
PinTheftは、LinuxカーネルのReliable Datagram Sockets (RDS)サブシステムにおける参照カウントバグであるCVE-2026-43494のための高度なローカルルートエクスプロイトです。
RDSのゼロコピーパスにおけるダブルフリーとio_uringの固定バッファを組み合わせることで、このエクスプロイトはSUIDルートバイナリの信頼性の高いページキャッシュオーバーライトを実現し、ローカル権限昇格によりrootになります。
あいまいなネットワークパスにおける小さな会計エラーが、最新の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を使用して1024ピンすべてを奪取munmap() → PCPへのクリーン解放(LIFO)struct page*を介してIORING_OP_READ_FIXEDを使用し、リクレームされたページを上書きバイパス:
CONFIG_INIT_ON_ALLOC_DEFAULT_ONbad_page() checksCONFIG_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バイナリの自動バックアップ# Disable 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
# Disable io_uring (if unused)
echo "kernel.io_uring_disabled=2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
パッチが利用可能になり次第、カーネルを更新してください。
# Check if vulnerable
modprobe -n rds_tcp && echo "RDS: Vulnerable"
cat /proc/sys/kernel/io_uring_disabled
uname -r
セキュリティ研究コミュニティのために❤️を込めて
好奇心を持ち続けて。安全に。