
फर्मवेयर-विशिष्ट अस्थायी रूट एक्सप्लॉइट Toshiba/Amazon Fire TV (hazel) के लिए, CVE-2026-43499 का उपयोग करते हुए। ARM32 futex-PI UAF, कर्नेल एड्रेस लीक, mm_struct reclaim, और क्रेडेंशियल पैचिंग को लागू करता है ताकि ADB के माध्यम से UID 0 प्राप्त किया जा सके।
Amazon hazel Fire TV प्लेटफ़ॉर्म के लिए अस्थायी रूट एक्सप्लॉइट, जो CVE-2026-43499 पर आधारित है। यह एक्सप्लॉइट ARM32 Linux 4.9 फ़र्मवेयर के लिए है जो कई निर्माताओं के Hazel टेलीविज़न द्वारा साझा किया जाता है। प्रोफ़ाइल वर्तमान में PS7657.3645N से PS7716.5665N तक के फ़र्मवेयर को कवर करती हैं।
वर्तमान हार्डवेयर-परीक्षित कॉन्फ़िगरेशन है:
| डिवाइस | Toshiba Fire TV (hazel) |
| Fire OS बिल्ड | PS7716.5665N |
| कर्नेल | Linux 4.9.113 |
| उत्पाद मॉडल | AFTHA004 (C350) |
[!WARNING] यह एक्सप्लॉइट फ़र्मवेयर-विशिष्ट बना हुआ है, भले ही यह कई Hazel रिलीज़ का समर्थन करता है। कर्नेल पते, संरचना ऑफ़सेट, और रिक्लेम सेटिंग्स सख्त प्रोफ़ाइल से लोड की जाती हैं।
PS7716.5665Nहार्डवेयर-परीक्षित है; पुरानी बंडल की गई प्रोफ़ाइल स्थिर फ़र्मवेयर विश्लेषण पर आधारित हैं और अभी भी मिलते-जुलते टेलीविज़न से रिपोर्ट की आवश्यकता है।प्रोफ़ाइल मिलान को बायपास न करें या किसी असंबंधित फ़र्मवेयर में पते हाथ से कॉपी न करें। स्थिर रूप से उत्पन्न प्रोफ़ाइल को अभी भी मिलते-जुलते हार्डवेयर पर पुष्टि की आवश्यकता है।
विफल हीप रिक्लेम पैनिक और टीवी रीबूट का कारण बन सकता है। रूट अस्थायी है और रीबूट के बाद चला जाता है। यदि आपका टीवी फ़्रीज़ हो जाता है, तो आप हमेशा इसे पावर साइकल कर सकते हैं।
यह एक्सप्लॉइट सामान्य ADB शेल वातावरण से अस्थायी UID 0 प्राप्त करने के लिए CVE-2026-43499 का उपयोग करता है।
एक्सप्लॉइट श्रृंखला में शामिल हैं:
mm_struct क्रॉस-कैश रिक्लेमसफल रन के बाद, एक्सप्लॉइट रूट पथ द्वारा आवश्यक कर्नेल ऑब्जेक्ट को जीवित रखता है और एक स्थानीय कमांड डेमॉन शुरू करता है।
SELinux Enforcing बना रहता है। रूट डेमॉन के माध्यम से निष्पादित कमांड shell SELinux डोमेन और इस फ़र्मवेयर पर उपलब्ध क्षमता बाउंडिंग सेट को बनाए रखते हैं।
hazel_root.c मुख्य एक्सप्लॉइट, कर्नेल रीड/राइट चरण, क्रेडेंशियल पैचिंग, और रूट कमांड क्लाइंट/सर्वरhazel_reclaim.h कर्नेल पता लीक और mm_struct क्रॉस-कैश रिक्लेमhazel_profile.c, hazel_profile.h सख्त प्रोफ़ाइल पार्सर और रनटाइम मैचरprofiles/ समीक्षित और उत्पन्न फ़र्मवेयर प्रोफ़ाइलtools/profile_creator/ Python/uv फ़र्मवेयर विश्लेषक और संगत-प्रोफ़ाइल निर्माताtools/device_scripts/ वैकल्पिक OTA, Amazon सेवा, और लॉन्चर उपयोगिताएँनीचे दिए गए उदाहरण Linux मानते हैं और यह कि adb $PATH में उपलब्ध है।
NDK को अपनी Android NDK r27d निर्देशिका पर सेट करें:
export NDK=/path/to/android-ndk-r27d
फिर संकलित करें:
"$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" \
--target=armv7a-linux-androideabi28 \
-O2 -g0 -Wall -Wextra -Wpedantic -fPIE -pie \
hazel_root.c hazel_profile.c -o hazel_root \
-pthread
ADB का उपयोग करके TV से कनेक्ट करें।
यदि नेटवर्क ADB का उपयोग कर रहे हैं:
adb connect <TV_IP>:5555
एक्सप्लॉइट पुश करें:
adb shell mkdir -p /data/local/tmp/profiles
adb push hazel_root /data/local/tmp/hazel_root
adb shell chmod 755 /data/local/tmp/hazel_root
adb push profiles/. /data/local/tmp/profiles/
प्रोफ़ाइल चयन को एक्सप्लॉइट ट्रिगर किए बिना जाँचें:
adb shell 'cd /data/local/tmp && ./hazel_root --check-profile'
लोडर को ro.product.device, बिल्ड फ़िंगरप्रिंट, इंक्रीमेंटल वर्ज़न, कर्नेल रिलीज़ और आर्किटेक्चर के सटीक मिलान की आवश्यकता होती है। यह विकृत प्रोफ़ाइल, अज्ञात फ़ील्ड, असमर्थित एक्सप्लॉइट पथ, अनुपस्थित मिलान और एकाधिक मिलान वाली प्रोफ़ाइल को अस्वीकार करता है। किसी स्पष्ट प्रोफ़ाइल की जाँच इस प्रकार की जा सकती है:
adb shell 'cd /data/local/tmp && ./hazel_root --check-profile --profile profiles/PROFILE.conf'
स्वच्छ बूट से प्रारंभ करें:
adb shell 'cd /data/local/tmp && ./hazel_root'
एक सफल रन इसके समान आउटपुट के साथ समाप्त होता है:
[root] uid=0 euid=0 gid=0
[ROOT] uid=0 daemon pid=... socket=@hazel_root
reclaim संभाव्य है। एक असफल प्रयास साफ़ तौर पर विफल हो सकता है या panic करके TV को रीबूट कर सकता है।
यदि TV रीबूट हो जाता है, तो उसे सामान्य रूप से बूट होने दें और फिर से प्रयास करें।
एक बार exploit सफल हो जाने के बाद, दूसरी प्रतिलिपि लॉन्च न करें। आप चल रही प्रक्रिया को बंद कर सकते हैं, और अगले कमांड के साथ आगे बढ़ सकते हैं।
वही binary root daemon के लिए client के रूप में कार्य करता है:
adb shell 'cd /data/local/tmp && ./hazel_root --client id'
उदाहरण के लिए:
adb shell 'cd /data/local/tmp && ./hazel_root --client getenforce'
adb shell 'cd /data/local/tmp && ./hazel_root --client cat /proc/self/status'
adb shell 'cd /data/local/tmp && ./hazel_root --client "id; uname -a"'
एक सफल रूट कमांड को रिपोर्ट करना चाहिए:
uid=0(root) gid=0(root) context=u:r:shell:s0
ध्यान दें कि UID 0 SELinux को बायपास नहीं करता। SELinux Enforcing बना रहता है।
tools/device_scripts/disable_ota.sh को रूट डेमॉन के माध्यम से पुश करें और चलाएँ:
adb push tools/device_scripts/disable_ota.sh /data/local/tmp/disable_ota.sh
adb shell chmod 755 /data/local/tmp/disable_ota.sh
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_ota.sh"'
स्क्रिप्ट दोनों Fire OS OTA पैकेजों को अक्षम करती है, लंबित अपडेटर स्थिति को साफ़ करती है, और परिणामी Package Manager स्थिति को सत्यापित करती है। यह TV को रीबूट नहीं करती है।
tools/device_scripts/disable_amazon_services.sh Arcus रिमोट-कॉन्फ़िगरेशन प्रॉक्सी,
ADEP एप्लिकेशन-ब्लॉकिंग सेवा, Automatic Content Recognition (ACR), और
परीक्षण किए गए Hazel फ़र्मवेयर पर मौजूद समर्पित Amazon मेट्रिक्स पैकेजों को अक्षम करती है। ACR
अक्षम कर दिया जाता है और उसका संग्रहीत डेटा साफ़ कर दिया जाता है, लेकिन इसका रीड-ओनली सिस्टम APK हटाया नहीं जाता, जिससे यह ऑपरेशन प्रतिवर्ती बनता है। स्क्रिप्ट
CrashManager या निम्न-स्तरीय लॉगिंग पैकेजों को अक्षम नहीं करती है, इसलिए exploit के विकास या समस्या-निवारण के दौरान kernel panic और Dropbox
डायग्नोस्टिक्स उपलब्ध रहते हैं।
स्क्रिप्ट को पुश करें और इसे root डेमन के माध्यम से चलाएँ:
adb push tools/device_scripts/disable_amazon_services.sh /data/local/tmp/disable_amazon_services.sh
adb shell chmod 755 /data/local/tmp/disable_amazon_services.sh
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_amazon_services.sh"'
वर्तमान स्थिति दिखाएँ बिना कुछ बदले:
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_amazon_services.sh status"'
आवश्यकता पड़ने पर बाद में पैकेज पुनर्स्थापित करें:
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/disable_amazon_services.sh restore"'
सक्षम या अक्षम पैकेज स्थिति सामान्यतः रीबूट के बाद भी बनी रहती है। पैकेजों को पुनर्स्थापित करने से उन्हें अक्षम करते समय साफ़ किया गया पैकेज डेटा पुनर्स्थापित नहीं होता है।
लॉन्चर स्क्रिप्ट्स भी tools/device_scripts/ में हैं। Projectivy चुनने के लिए:
adb push tools/device_scripts/set_projectivy_launcher.sh /data/local/tmp/set_projectivy_launcher.sh
adb shell chmod 755 /data/local/tmp/set_projectivy_launcher.sh
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/set_projectivy_launcher.sh"'
स्टॉक लॉन्चर को पुनर्स्थापित करने के लिए:
adb push tools/device_scripts/restore_stock_launcher.sh /data/local/tmp/restore_stock_launcher.sh
adb shell chmod 755 /data/local/tmp/restore_stock_launcher.sh
adb shell 'cd /data/local/tmp && ./hazel_root --client "sh /data/local/tmp/restore_stock_launcher.sh"'
टीवी को रीबूट करें:
adb reboot